Introducción
En este laboratorio, nos adentraremos en el mundo de los permisos de archivos en Linux. Exploraremos tres comandos esenciales: chown, touch y chmod. Estas herramientas son cruciales para gestionar el acceso a archivos y directorios en un sistema Linux. Al finalizar este laboratorio, tendrás una base sólida sobre cómo crear archivos, cambiar su propiedad y modificar sus permisos. Comprender estos comandos te permitirá controlar quién puede leer, escribir y ejecutar archivos en tu sistema.
Creación de un nuevo archivo
Comencemos creando un nuevo archivo utilizando el comando touch. Este versátil comando puede crear archivos nuevos y vacíos, además de actualizar las marcas de tiempo de los existentes. Piénsalo como una forma rápida de "tocar" un archivo, ya sea para crearlo o para actualizar su última hora de acceso.
Primero, asegúrate de estar en el directorio correcto. Trabajaremos en tu directorio project:
cd ~/project
El comando cd significa "change directory" (cambiar directorio). El símbolo ~ representa tu directorio personal (home), y /project especifica el subdirectorio al que queremos movernos. Si el directorio project no existe, es probable que este comando falle. Por lo general, es una buena práctica crear el directorio primero si no estás seguro. Sin embargo, en este entorno de laboratorio, el directorio ya debería existir.
Ahora, creemos un nuevo archivo llamado example.txt:
touch example.txt
Este comando crea un archivo vacío llamado example.txt en tu directorio actual. Para confirmar que el archivo se creó, utiliza el comando ls:
ls
ls significa "list" (listar). Muestra los archivos y directorios en tu ubicación actual. Deberías ver example.txt en la salida. Si no lo ves, verifica que hayas ejecutado el comando touch correctamente y que realmente estés en el directorio ~/project.
Cambio de la propiedad de un archivo
Ahora que hemos creado un archivo, aprendamos a cambiar su propiedad. El comando chown nos permite modificar tanto el usuario como el grupo propietario de un archivo. La propiedad determina quién tiene el control sobre el archivo.
Primero, verifiquemos la propiedad actual de nuestro archivo example.txt:
ls -l example.txt
El comando ls -l (listar en formato largo) proporciona información detallada sobre el archivo, incluidos sus permisos, propietario y grupo. Deberías ver una salida similar a esta:
-rw-rw-r-- 1 labex labex 0 Jul 29 15:11 example.txt
Analicemos esta salida:
-rw-rw-r--representa los permisos del archivo (exploraremos esto más a fondo en el Paso 4). El primer carácter indica el tipo de archivo (-para un archivo normal,dpara directorio, etc.). Los caracteres restantes representan los permisos de lectura, escritura y ejecución para el propietario, el grupo y otros.- El primer
labexes el propietario actual del archivo. Es el nombre de usuario que posee el archivo. - El segundo
labexes el grupo actual del archivo. Un grupo es una colección de usuarios que pueden compartir permisos. 0es el tamaño del archivo en bytes. Como el archivo está vacío, su tamaño es cero.Jul 29 15:11es la fecha y hora de la última modificación.example.txtes el nombre del archivo.
Ahora, cambiemos la propiedad del archivo al usuario root. root es la cuenta de administrador en los sistemas Linux y tiene privilegios especiales.
sudo chown root:root example.txt
Esto es lo que hace este comando:
sudoejecuta el comando con privilegios de superusuario (root). Es probable que se te solicite tu contraseña.chownrequiere privilegios elevados porque es un comando potente que puede afectar la seguridad del sistema. Sinsudo, recibirás un error de "Permission denied" (permiso denegado).chownes el comando para cambiar la propiedad.root:rootespecifica el nuevo propietario y grupo (ambos establecidos como root). La sintaxis espropietario:grupo.example.txtes el archivo de destino.
Verifiquemos el cambio:
ls -l example.txt
Ahora deberías ver que tanto el propietario como el grupo han cambiado a root:
-rw-rw-r-- 1 root root 0 Jul 29 15:11 example.txt
Si todavía ves labex en lugar de root, asegúrate de haber usado sudo al ejecutar el comando chown y de haber ingresado tu contraseña correctamente.
Cambio de la propiedad de un directorio
El comando chown también puede cambiar la propiedad de directorios completos y su contenido. Veamos esto en acción. Es especialmente útil para gestionar estructuras de directorios complejas donde deseas asegurarte de que todos los archivos y subdirectorios tengan el mismo propietario.
Primero, creemos un nuevo directorio con algunos archivos:
mkdir -p new-dir/subdir
echo "Hello, world" > new-dir/file1.txt
echo "Another file" > new-dir/subdir/file2.txt
Analicemos estos comandos:
mkdir -p new-dir/subdircrea el directorionew-diry su subdirectoriosubdir. La opción-ple indica amkdirque cree los directorios padres según sea necesario. Sin-p, sinew-dirno existiera, la creación denew-dir/subdirfallaría.echo "Hello, world" > new-dir/file1.txtcrea un archivo llamadofile1.txtdentro del directorionew-diry escribe el texto "Hello, world" en él. El símbolo>se utiliza para la redirección; toma la salida del comandoechoy la redirige al archivo especificado.echo "Another file" > new-dir/subdir/file2.txtcrea de manera similar un archivo llamadofile2.txtdentro del directorionew-dir/subdiry escribe el texto "Another file" en él.
Ahora, verifiquemos la propiedad actual:
ls -lR new-dir
ls -lR lista el contenido de new-dir de forma recursiva. La opción -R (recursiva) hace que ls liste todos los archivos y subdirectorios dentro de new-dir y su contenido.
Deberías ver algo como esto:
new-dir:
total 4
-rw-rw-r-- 1 labex labex 13 Jul 29 09:15 file1.txt
drwxrwxr-x 2 labex labex 23 Jul 29 09:15 subdir
new-dir/subdir:
total 4
-rw-rw-r-- 1 labex labex 13 Jul 29 09:15 file2.txt
Esto muestra que el directorio new-dir, su subdirectorio subdir y los archivos file1.txt y file2.txt son propiedad de labex.
Ahora, cambiemos la propiedad de new-dir y todo su contenido al usuario root:
sudo chown -R root:root new-dir
En este comando:
- La opción
-Rle indica achownque opere de forma recursiva, cambiando la propiedad de todos los archivos y subdirectorios dentro denew-dir. Esto es crucial; sin-R, solo cambiaría la propiedad del directorionew-dir, pero los archivos y subdirectorios dentro de él seguirían siendo propiedad delabex.
Verifiquemos el cambio:
ls -lR new-dir
Ahora deberías ver:
new-dir:
total 4
-rw-rw-r-- 1 root root 13 Jul 29 09:15 file1.txt
drwxrwxr-x 2 root root 23 Jul 29 09:15 subdir
new-dir/subdir:
total 4
-rw-rw-r-- 1 root root 13 Jul 29 09:15 file2.txt
Como puedes ver, la propiedad del directorio y todo su contenido ha cambiado a root. Esto demuestra el poder de la opción -R para realizar cambios generalizados en la propiedad dentro de una estructura de directorios.
Cambio de los permisos de un archivo
En Linux, los permisos de archivo se representan mediante una serie de letras o números. Exploremos cómo leer y cambiar estos permisos. Comprender los permisos es vital para proteger tus archivos y evitar el acceso no autorizado.
Primero, veamos los permisos actuales de nuestro archivo example.txt:
ls -l example.txt
Podrías ver algo como esto:
-rw-rw-r-- 1 root root 0 Jul 29 15:11 example.txt
La parte -rw-rw-r-- representa los permisos del archivo. Aquí es donde entran en juego las notaciones numérica y simbólica. Analicémoslo:
- El primer carácter (
-) indica que es un archivo normal. Otros indicadores comunes sondpara directorio ylpara enlace simbólico. - Los siguientes tres caracteres (
rw-) representan los permisos del propietario (lectura y escritura, pero no ejecución).rsignifica permiso de lectura: El propietario puede abrir y leer el archivo.wsignifica permiso de escritura: El propietario puede modificar el archivo.xsignifica permiso de ejecución: El propietario puede ejecutar el archivo (si es un programa o script). Un-significa que el permiso está denegado.
- Los siguientes tres (
rw-) son para el grupo. Tienen el mismo significado que el anterior, pero se aplican a los miembros del grupo del archivo. - Los últimos tres (
r--) son para otros (todos los demás). También tienen el mismo significado, pero se aplican a los usuarios que no son ni el propietario ni miembros del grupo del archivo.
Ahora, cambiemos estos permisos usando el comando chmod. chmod significa "change mode" (cambiar modo) y te permite modificar estos permisos. Comenzaremos con la notación numérica.
sudo chmod 700 example.txt
En este comando:
700es una representación numérica de los permisos:- El primer dígito (
7) representa los permisos del propietario. - El segundo dígito (
0) representa los permisos del grupo. - El tercer dígito (
0) representa los permisos de otros.
- El primer dígito (
Cada dígito es un número del 0 al 7, calculado sumando los valores de los permisos de lectura (4), escritura (2) y ejecución (1):
4: Permiso de lectura2: Permiso de escritura1: Permiso de ejecución0: Sin permiso
Por lo tanto, 7 (primer dígito) otorga al propietario permisos de lectura (4), escritura (2) y ejecución (1): 4+2+1=7.
0 (segundo dígito) no otorga permisos al grupo (0+0+0=0).
0 (tercer dígito) no otorga permisos a otros (0+0+0=0).
Por lo tanto, 700 significa: Propietario: lectura, escritura, ejecución. Grupo: ninguno. Otros: ninguno.
Verifiquemos el cambio:
ls -l example.txt
Ahora deberías ver:
-rwx------ 1 root root 0 Jul 29 15:11 example.txt
El propietario ahora tiene permisos rwx (lectura, escritura y ejecución), mientras que el grupo y otros no tienen permisos.
Cambio de los permisos de un directorio
Cambiar los permisos de los directorios funciona de manera similar a cambiar los permisos de los archivos. Practiquemos creando un nuevo directorio y modificando sus permisos. Los permisos de directorio controlan quién puede listar el contenido del directorio, crear nuevos archivos dentro de él y acceder a los archivos que ya están allí.
Primero, creemos un nuevo directorio y establezcamos algunos permisos no estándar:
mkdir ~/test-dir
chmod 700 ~/test-dir
Ahora, verifiquemos los permisos actuales:
ls -ld ~/test-dir
La opción -d en ls -l le indica a ls que liste el directorio en sí, en lugar de su contenido. Sin -d, ls listaría los archivos y subdirectorios dentro de test-dir, que está vacío en este momento. Deberías ver:
drwx------ 2 labex labex 4096 Jul 29 15:45 /home/labex/test-dir
La d al principio indica que es un directorio. rwx------ indica que el propietario tiene permisos de lectura, escritura y ejecución, mientras que el grupo y otros no tienen permisos. Para los directorios:
- El permiso de lectura (
r) te permite listar el contenido del directorio usandols. - El permiso de escritura (
w) te permite crear nuevos archivos y subdirectorios dentro del directorio. - El permiso de ejecución (
x) te permite acceder a los archivos y subdirectorios dentro del directorio (es decir, entrar en él concd).
Ahora, cambiemos los permisos:
chmod -R 755 ~/test-dir
En este comando:
-Raplica el cambio de forma recursiva a todos los archivos y subdirectorios (aunque nuestro directorio esté vacío en este caso). Es una buena práctica incluirlo al tratar con directorios, incluso si están vacíos actualmente, por si añades archivos más adelante.755otorga permisos de lectura, escritura y ejecución al propietario, y permisos de lectura y ejecución al grupo y a otros.
Analicemos 755:
- Propietario (7): Lectura (4) + Escritura (2) + Ejecución (1) = 7
- Grupo (5): Lectura (4) + Ejecución (1) = 5
- Otros (5): Lectura (4) + Ejecución (1) = 5
Verifiquemos el cambio:
ls -ld ~/test-dir
Ahora deberías ver:
drwxr-xr-x 2 labex labex 4096 Jul 29 15:45 /home/labex/test-dir
Esto muestra claramente el cambio en los permisos, pasando de que solo el propietario tenga acceso (700) a que el propietario tenga acceso total mientras que otros pueden leer y ejecutar (755). Ahora, cualquiera puede listar el contenido de test-dir y acceder a los archivos dentro de él, pero solo el propietario puede crear nuevos archivos o modificar los existentes.
Uso de notación simbólica para permisos
Aunque la notación numérica es concisa, la notación simbólica puede ser más intuitiva, especialmente cuando solo deseas cambiar un único permiso. La notación simbólica utiliza letras para representar al usuario, al grupo y a otros, y operadores para añadir o eliminar permisos.
En este paso, crearás un pequeño script de shell y luego le añadirás permiso de ejecución.
Primero, creemos un nuevo archivo de script con algo de contenido:
cd ~/project
echo '#!/bin/bash' > script.sh
echo 'echo "Hello, World"' >> script.sh
Estos comandos hacen dos cosas:
- El primer comando
echocreascript.shy escribe la primera línea,#!/bin/bash, en él. Esta línea se llama shebang y le indica a Linux que ejecute el script con Bash. - El segundo comando
echoañade una nueva línea al final del archivo con>>. Escribeecho "Hello, World", que mostraráHello, Worldcuando se ejecute el script.
Puedes confirmar que el archivo ahora contiene dos líneas separadas con:
cat script.sh
Deberías ver:
#!/bin/bash
echo "Hello, World"
Ahora, verifiquemos sus permisos iniciales:
ls -l script.sh
Deberías ver algo como:
-rw-rw-r-- 1 labex labex 32 Jul 29 16:30 script.sh
Como puedes ver, inicialmente, el script solo tiene permisos de lectura y escritura para el propietario y el grupo, y permiso de lectura para otros. No tiene permiso de ejecución, que es necesario para ejecutarlo como un programa.
Intentemos ejecutar el script:
./script.sh
Deberías ver un error de "Permission denied" porque el script aún no tiene permisos de ejecución. La parte ./ le indica al shell que ejecute el script ubicado en el directorio actual.
Ahora, añadamos permiso de ejecución para el propietario usando notación simbólica:
chmod u+x script.sh
En este comando:
use refiere al usuario (propietario). Otras opciones songpara grupo,opara otros yapara todos (usuario, grupo y otros).+xañade permiso de ejecución. El símbolo+añade un permiso, mientras que el símbolo-elimina un permiso.
Por lo tanto, u+x significa "añadir permiso de ejecución para el propietario".
Verifiquemos el cambio:
ls -l script.sh
Ahora deberías ver:
-rwxrw-r-- 1 labex labex 32 Jul 29 16:30 script.sh
El propietario ahora tiene permisos rwx (lectura, escritura y ejecución).
Ahora, intentemos ejecutar el script de nuevo:
./script.sh
Esta vez, deberías ver la salida:
Hello, World
Este ejemplo demuestra claramente por qué necesitamos añadir permisos de ejecución a los scripts, y la diferencia antes y después de añadir estos permisos. La notación simbólica facilita la modificación de permisos específicos sin tener que volver a calcular toda la representación numérica.
Resumen
En este laboratorio, hemos explorado comandos esenciales de Linux para gestionar los permisos de archivos:
- Utilizamos
touchpara crear nuevos archivos y actualizar los existentes. - Aprendimos a usar
chownpara cambiar la propiedad de archivos y directorios, incluidos los cambios recursivos para estructuras de directorios completas. - Practicamos el uso de
chmodcon notación numérica y simbólica para modificar los permisos de archivos y directorios, comprendiendo los diferentes niveles de permisos para el propietario, el grupo y otros. - Vimos ejemplos prácticos de por qué los permisos son importantes, como la necesidad de permisos de ejecución para ejecutar scripts.
- Aclaramos las diferencias entre la notación numérica y la simbólica para
chmody cuándo puede ser más apropiada cada una.
Estos comandos son cruciales para mantener la seguridad y controlar el acceso en los sistemas Linux. Recuerda ser siempre cauteloso al cambiar permisos, especialmente al usar sudo, ya que los cambios incorrectos pueden tener consecuencias significativas para la seguridad y la funcionalidad del sistema. Verifica siempre tus comandos antes de ejecutarlos y comprende las implicaciones de los cambios que estás realizando.



