Introducción
En este laboratorio aprenderá a administrar los permisos de archivos en Linux. Explorará tres comandos esenciales: chown, touch y chmod. Estas herramientas son fundamentales para gestionar el acceso a archivos y directorios en un sistema Linux. Al finalizar, sabrá crear archivos, cambiar su propietario y modificar sus permisos. Comprender estos comandos le permitirá controlar quién puede leer, escribir y ejecutar archivos en su sistema.
Crear un archivo nuevo
Comience por crear un archivo nuevo con el comando touch. Este comando versátil puede crear archivos nuevos y vacíos, así como actualizar las marcas de tiempo de archivos existentes. Puede considerarlo una forma rápida de «tocar» un archivo: hacerlo existir o actualizar la hora de su último acceso.
Primero, asegúrese de encontrarse en el directorio correcto. Trabajará en el directorio project:
cd ~/project
El comando cd significa «change directory» (cambiar de directorio). El símbolo ~ representa su directorio personal y /project especifica el subdirectorio al que desea acceder. Si el directorio project no existe, es probable que este comando falle. Si no está seguro, normalmente conviene crear primero el directorio. Sin embargo, en este entorno de laboratorio el directorio ya debería existir.
Ahora cree un archivo nuevo llamado example.txt:
touch example.txt
Este comando crea un archivo vacío llamado example.txt en el directorio actual. Para confirmar que se creó, use el comando ls:
ls
ls significa «list» (listar). Muestra los archivos y directorios de la ubicación actual. Debería ver example.txt en la salida. Si no aparece, compruebe que ejecutó correctamente el comando touch y que se encuentra en el directorio ~/project.
Cambiar el propietario de un archivo
Ahora que ha creado un archivo, aprenderá a cambiar su propietario. El comando chown permite modificar tanto el propietario de usuario como el propietario de grupo de un archivo. El propietario determina quién tiene el control sobre el archivo.
Primero, compruebe la propiedad actual del archivo example.txt:
ls -l example.txt
El comando ls -l (listar con formato largo) proporciona información detallada sobre el archivo, incluidos sus permisos, propietario y grupo. Debería ver una salida similar a esta:
-rw-rw-r-- 1 labex labex 0 Jul 29 15:11 example.txt
Analice esta salida:
-rw-rw-r--representa los permisos del archivo (los estudiará con más detalle en el paso 4). El primer carácter indica el tipo de archivo (-para un archivo normal,dpara un directorio, etc.). Los caracteres restantes representan los permisos de lectura, escritura y ejecución del propietario, el grupo y los demás usuarios.- 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 un conjunto 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 cambie el propietario del archivo al usuario root. root es la cuenta de administrador de los sistemas Linux y tiene privilegios especiales.
sudo chown root:root example.txt
Esto es lo que hace el comando:
sudoejecuta el comando con privilegios de root. Probablemente se le solicitará su contraseña.chownrequiere privilegios elevados porque es un comando potente que puede afectar a la seguridad del sistema. Sinsudo, aparecerá un error «Permission denied».chownes el comando que cambia la propiedad.root:rootespecifica el nuevo propietario y grupo, ambos establecidos como root. La sintaxis esowner:group.example.txtes el archivo de destino.
Compruebe el cambio:
ls -l example.txt
Ahora debería ver que tanto el propietario como el grupo cambiaron a root:
-rw-rw-r-- 1 root root 0 Jul 29 15:11 example.txt
Si todavía aparece labex en lugar de root, asegúrese de haber usado sudo al ejecutar chown y de haber introducido correctamente su contraseña.
Cambiar el propietario de un directorio
El comando chown también puede cambiar el propietario de directorios completos y de su contenido. Compruébelo a continuación. Esto resulta especialmente útil para administrar estructuras de directorios complejas cuando necesita asegurarse de que todos los archivos y subdirectorios tengan el mismo propietario.
Primero, cree un directorio nuevo con algunos archivos:
mkdir -p new-dir/subdir
echo "Hello, world" > new-dir/file1.txt
echo "Another file" > new-dir/subdir/file2.txt
Analice estos comandos:
mkdir -p new-dir/subdircrea el directorionew-diry su subdirectoriosubdir. La opción-pindica amkdirque cree los directorios padre necesarios. 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 en él el texto"Hello, world". El símbolo>se usa para la redirección: toma la salida del comandoechoy la redirige al archivo especificado.echo "Another file" > new-dir/subdir/file2.txthace algo similar: crea un archivo llamadofile2.txtdentro del directorionew-dir/subdiry escribe en él el texto"Another file".
Ahora compruebe la propiedad actual:
ls -lR new-dir
ls -lR muestra recursivamente el contenido de new-dir. La opción -R (recursiva) hace que ls enumere todos los archivos y subdirectorios dentro de new-dir, incluido su contenido.
Debería ver algo similar a 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 pertenecen a labex.
Ahora cambie la propiedad de new-dir y de todo su contenido al usuario root:
sudo chown -R root:root new-dir
En este comando:
- La opción
-Rindica achownque opere de forma recursiva y cambie la propiedad de todos los archivos y subdirectorios dentro denew-dir. Esto es fundamental: sin-R, solo cambiaría la propiedad del directorionew-dir, mientras que los archivos y subdirectorios internos seguirían perteneciendo alabex.
Compruebe el cambio:
ls -lR new-dir
Ahora debería 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 puede observar, la propiedad del directorio y de todo su contenido cambió a root. Esto demuestra la utilidad de la opción -R para aplicar cambios amplios de propiedad dentro de una estructura de directorios.
Cambiar los permisos de un archivo
En Linux, los permisos de los archivos se representan mediante una serie de letras o números. Aprenda a leer y cambiar estos permisos. Comprenderlos es fundamental para proteger sus archivos y evitar accesos no autorizados.
Primero, consulte los permisos actuales del archivo example.txt:
ls -l example.txt
Podría ver algo similar a 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í entran en juego las notaciones numérica y simbólica. Analícela:
- El primer carácter (
-) indica que se trata de un archivo normal. Otros indicadores comunes sondpara un directorio ylpara un enlace simbólico. - Los tres caracteres siguientes (
rw-) representan los permisos del propietario: lectura y escritura, pero no ejecución.rrepresenta el permiso de lectura: el propietario puede abrir y leer el archivo.wrepresenta el permiso de escritura: el propietario puede modificar el archivo.xrepresenta el permiso de ejecución: el propietario puede ejecutar el archivo si es un programa o script. Un-significa que el permiso está denegado.
- Los tres caracteres siguientes (
rw-) corresponden al grupo. Tienen el mismo significado, pero se aplican a los miembros del grupo del archivo. - Los tres últimos (
r--) corresponden a los demás usuarios. También tienen el mismo significado, pero se aplican a los usuarios que no son el propietario ni miembros del grupo del archivo.
Ahora cambie estos permisos con el comando chmod. chmod significa «change mode» (cambiar modo) y permite modificar los permisos. Comenzará 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 los demás usuarios.
- El primer dígito (
Cada dígito es un número del 0 al 7, calculado mediante la suma de 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 permisos
Por lo tanto, 7 (primer dígito) concede al propietario permisos de lectura (4), escritura (2) y ejecución (1): 4+2+1=7.0 (segundo dígito) concede al grupo ningún permiso (0+0+0=0).0 (tercer dígito) concede a los demás usuarios ningún permiso (0+0+0=0).
Por tanto, 700 significa: propietario: lectura, escritura y ejecución; grupo: ninguno; demás usuarios: ninguno.
Compruebe el cambio:
ls -l example.txt
Ahora debería ver:
-rwx------ 1 root root 0 Jul 29 15:11 example.txt
El propietario tiene permisos rwx (lectura, escritura y ejecución), mientras que el grupo y los demás usuarios no tienen ningún permiso.
Cambiar los permisos de un directorio
El cambio de permisos de los directorios funciona de forma similar al cambio de permisos de los archivos. Practique creando un directorio nuevo y modificando sus permisos. Los permisos de un directorio controlan quién puede listar su contenido, crear archivos nuevos dentro de él y acceder a los archivos que ya contiene.
Primero, cree un directorio nuevo y establezca permisos no estándar:
mkdir ~/test-dir
chmod 700 ~/test-dir
Ahora compruebe los permisos actuales:
ls -ld ~/test-dir
La opción -d de ls -l indica a ls que muestre el propio directorio en lugar de su contenido. Sin -d, ls mostraría los archivos y subdirectorios dentro de test-dir, que actualmente está vacío. Debería ver:
drwx------ 2 labex labex 4096 Jul 29 15:45 /home/labex/test-dir
La d inicial indica que se trata de un directorio. rwx------ indica que el propietario tiene permisos de lectura, escritura y ejecución, mientras que el grupo y los demás usuarios no tienen permisos. En los directorios:
- El permiso de lectura (
r) permite listar el contenido del directorio mediantels. - El permiso de escritura (
w) permite crear archivos y subdirectorios nuevos dentro del directorio. - El permiso de ejecución (
x) permite acceder a los archivos y subdirectorios dentro del directorio, es decir, usarcdpara entrar en él.
Ahora cambie los permisos:
chmod -R 755 ~/test-dir
En este comando:
-Raplica el cambio de forma recursiva a todos los archivos y subdirectorios, aunque en este caso el directorio está vacío. Es una buena práctica incluirla al trabajar con directorios, incluso si están vacíos, por si después añade archivos.755concede al propietario permisos de lectura, escritura y ejecución, y al grupo y a los demás usuarios permisos de lectura y ejecución.
Desglose de 755:
- Propietario (7): lectura (4) + escritura (2) + ejecución (1) = 7
- Grupo (5): lectura (4) + ejecución (1) = 5
- Demás usuarios (5): lectura (4) + ejecución (1) = 5
Compruebe el cambio:
ls -ld ~/test-dir
Ahora debería ver:
drwxr-xr-x 2 labex labex 4096 Jul 29 15:45 /home/labex/test-dir
Esto muestra claramente el cambio de permisos: antes solo el propietario tenía acceso (700); ahora el propietario tiene acceso completo y los demás usuarios pueden leer y ejecutar (755). Cualquiera puede listar el contenido de test-dir y acceder a los archivos que contiene, pero solo el propietario puede crear archivos nuevos o modificar los existentes.
Usar la notación simbólica para los permisos
Aunque la notación numérica es concisa, la notación simbólica puede resultar más intuitiva, especialmente cuando solo desea cambiar un permiso. La notación simbólica utiliza letras para representar al usuario, el grupo y los demás usuarios, además de operadores para añadir o quitar permisos.
En este paso creará un pequeño script de shell y le añadirá el permiso de ejecución.
Primero, cree un archivo de script nuevo con 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 en él la primera línea,#!/bin/bash. Esta línea se denomina shebang e indica a Linux que ejecute el script con Bash. - El segundo comando
echoañade una línea al final del archivo mediante>>. Escribeecho "Hello, World", que mostraráHello, Worldcuando se ejecute el script.
Confirme que el archivo contiene ahora dos líneas separadas mediante:
cat script.sh
Debería ver:
#!/bin/bash
echo "Hello, World"
Ahora compruebe sus permisos iniciales:
ls -l script.sh
Debería ver algo similar a esto:
-rw-rw-r-- 1 labex labex 32 Jul 29 16:30 script.sh
Como puede observar, al principio el script solo tiene permisos de lectura y escritura para el propietario y el grupo, y permiso de lectura para los demás usuarios. No tiene permiso de ejecución, que es necesario para ejecutarlo como programa.
Intente ejecutar el script:
./script.sh
Debería ver un error «Permission denied» porque el script todavía no tiene permisos de ejecución. La parte ./ indica al intérprete de comandos que ejecute el script ubicado en el directorio actual.
Ahora añada el permiso de ejecución para el propietario mediante la notación simbólica:
chmod u+x script.sh
En este comando:
use refiere al usuario (el propietario). Las otras opciones songpara el grupo,opara los demás usuarios yapara todos (usuario, grupo y demás usuarios).+xañade el permiso de ejecución. El símbolo+añade un permiso y el símbolo-lo elimina.
Por tanto, u+x significa «añadir el permiso de ejecución al propietario».
Compruebe el cambio:
ls -l script.sh
Ahora debería ver:
-rwxrw-r-- 1 labex labex 32 Jul 29 16:30 script.sh
El propietario tiene ahora permisos rwx (lectura, escritura y ejecución).
Vuelva a ejecutar el script:
./script.sh
Esta vez debería ver la salida:
Hello, World
Este ejemplo muestra claramente por qué es necesario añadir permisos de ejecución a los scripts, así como la diferencia entre el estado anterior y posterior al cambio. La notación simbólica permite modificar permisos específicos sin tener que recalcular toda la representación numérica.
Resumen
En este laboratorio ha explorado comandos esenciales de Linux para administrar los permisos de archivos:
- Usó
touchpara crear archivos nuevos y actualizar archivos existentes. - Aprendió a usar
chownpara cambiar la propiedad de archivos y directorios, incluidos los cambios recursivos para estructuras de directorios completas. - Practicó el uso de
chmodcon notación numérica y simbólica para modificar los permisos de archivos y directorios, y comprendió los distintos niveles de permisos del propietario, el grupo y los demás usuarios. - Vio ejemplos prácticos de la importancia de los permisos, como la necesidad de contar con permisos de ejecución para ejecutar scripts.
- Aclaró las diferencias entre la notación numérica y simbólica de
chmod, así como cuándo puede ser más adecuada cada una.
Estos comandos son fundamentales para mantener la seguridad y controlar el acceso en sistemas Linux. Recuerde actuar con precaución al cambiar permisos, especialmente al usar sudo, ya que los cambios incorrectos pueden tener consecuencias importantes para la seguridad y el funcionamiento del sistema. Compruebe siempre los comandos antes de ejecutarlos y asegúrese de comprender las implicaciones de los cambios que realiza.



