Introducción
Los permisos de archivos en Linux son una característica de seguridad fundamental que controla cómo se pueden acceder, modificar y ejecutar archivos y directorios por diferentes usuarios. Comprender y gestionar eficazmente estos permisos es esencial para mantener la seguridad del sistema y el adecuado uso compartido de recursos.
En este laboratorio (lab), aprenderá cómo ver, establecer y modificar los permisos de archivos utilizando el comando chmod. El comando chmod permite a los administradores controlar quién puede leer, escribir o ejecutar archivos específicos, asegurando que los datos sensibles permanezcan protegidos mientras los recursos necesarios sigan siendo accesibles para los usuarios autorizados.
Al final de este laboratorio (lab), podrá crear archivos con permisos específicos, modificar los permisos de archivos existentes y asignar controles de acceso basados en grupos, habilidades que son cruciales para cualquier administrador de sistema Linux o usuario.
Comprender los permisos de archivos en Linux
Linux implementa un sistema de permisos que permite un control detallado sobre quién puede acceder a archivos y directorios y qué acciones pueden realizar. En este paso, aprenderá cómo funcionan los permisos de Linux y cómo visualizarlos.
Primero, navegue al directorio de trabajo donde realizará todas las operaciones de este laboratorio (lab):
cd ~/project
Creemos un archivo de muestra para examinar sus permisos:
touch sample_file.txt
Para ver los permisos de este archivo, use el comando ls con la opción -l:
ls -l sample_file.txt
Debería ver una salida similar a esta:
-rw-rw-r-- 1 labex labex 0 Oct 25 12:34 sample_file.txt
Desglosemos esta salida:
El primer carácter (
-) indica el tipo de archivo. Un guión (-) representa un archivo normal, mientras quedindicaría un directorio.Los siguientes nueve caracteres representan los permisos del archivo en tres grupos de tres:
- Los primeros tres caracteres (
rw-) muestran los permisos del propietario. - Los siguientes tres (
rw-) muestran los permisos del grupo. - Los últimos tres (
r--) muestran los permisos para todos los demás usuarios.
- Los primeros tres caracteres (
En cada grupo, las tres posiciones representan:
rpara permiso de lectura.wpara permiso de escritura.xpara permiso de ejecución.-indica que el permiso no está concedido.
Después de los permisos, hay otros detalles como el número de enlaces, el nombre del propietario, el nombre del grupo, el tamaño del archivo, la fecha y hora de la última modificación y el nombre del archivo.
Los bits de permiso de Linux también se pueden representar numéricamente:
- Lectura (
r) = 4 - Escritura (
w) = 2 - Ejecución (
x) = 1
Sumando estos valores, se puede representar cualquier combinación de permisos como un solo dígito:
rwx= 4+2+1 = 7rw-= 4+2+0 = 6r-x= 4+0+1 = 5r--= 4+0+0 = 4
Esto se vuelve importante cuando usamos el comando chmod en modo numérico en pasos posteriores.
Creación de archivos con permisos específicos
En este paso, creará un nuevo archivo y establecerá sus permisos iniciales para restringir el acceso solo al propietario. Esto es útil cuando se crean archivos que contienen información sensible que no debe ser accesible para otros usuarios.
Primero, cree un nuevo archivo llamado secure_file.txt:
touch secure_file.txt
Ahora, agreguemos algo de contenido al archivo:
echo "This file contains secure information." > secure_file.txt
Por defecto, la mayoría de los sistemas Linux crean archivos con permisos que permiten al propietario y al grupo leer y escribir, mientras que los demás solo pueden leer. Veamos los permisos actuales:
ls -l secure_file.txt
Debería ver una salida similar a:
-rw-rw-r-- 1 labex labex 37 Oct 25 12:40 secure_file.txt
Para un archivo que contiene información sensible, queremos restringir el acceso solo al propietario. Usaremos el comando chmod en modo numérico para establecer los permisos en 600, lo que significa:
- Propietario: Lectura y escritura (
6=4+2) - Grupo: Sin permisos (
0) - Otros: Sin permisos (
0)
Ejecute el siguiente comando para cambiar los permisos:
chmod 600 secure_file.txt
Ahora, verifique los permisos nuevamente:
ls -l secure_file.txt
La salida ahora debería mostrar:
-rw------- 1 labex labex 37 Oct 25 12:40 secure_file.txt
Note cómo han cambiado los permisos: ahora solo el propietario (usuario labex) tiene permisos de lectura y escritura, mientras que los miembros del grupo y otros usuarios no tienen acceso a este archivo.
Intentemos crear otro archivo, pero esta vez estableceremos los permisos en el momento de la creación utilizando una técnica diferente.
Primero, cree un nuevo archivo llamado public_file.txt con contenido:
echo "This file is readable by everyone." > public_file.txt
Ahora, hagamos que este archivo sea legible por todos, pero solo escribible por el propietario:
chmod 644 public_file.txt
Verifique los permisos:
ls -l public_file.txt
Debería ver:
-rw-r--r-- 1 labex labex 33 Oct 25 12:45 public_file.txt
Este conjunto de permisos (644) se utiliza comúnmente para archivos públicos que todos deben poder leer, pero solo el propietario puede modificar.
Uso del modo simbólico con chmod
En el paso anterior, utilizó el modo numérico para establecer permisos. Ahora, exploremos el modo simbólico, que ofrece una forma más intuitiva de modificar permisos.
El modo simbólico utiliza letras y símbolos para representar usuarios y permisos:
u- Usuario (propietario)g- Grupoo- Otros (todos los demás)a- Todos (equivalente a ugo)
Y los símbolos de permiso:
r- Lecturaw- Escriturax- Ejecución
Creemos un archivo de script para practicar:
touch my_script.sh
Agreguemos un comando simple al script:
echo '#!/bin/bash' > my_script.sh
echo 'echo "Hello from the script!"' >> my_script.sh
Verifiquemos los permisos actuales:
ls -l my_script.sh
Debería ver que el script no es ejecutable:
-rw-rw-r-- 1 labex labex 44 Oct 25 12:50 my_script.sh
Para hacer el script ejecutable para el propietario, use:
chmod u+x my_script.sh
Esto agrega (+) el permiso de ejecución (x) para el usuario/propietario (u).
Verifique los permisos nuevamente:
ls -l my_script.sh
Ahora debería ver:
-rwxrw-r-- 1 labex labex 44 Oct 25 12:50 my_script.sh
Ahora, hagámoslo ejecutable para todos:
chmod a+x my_script.sh
Esto agrega el permiso de ejecución para todos los usuarios (propietario, grupo y otros).
Verifique los permisos nuevamente:
ls -l my_script.sh
Debería ver:
-rwxrwxr-x 1 labex labex 44 Oct 25 12:50 my_script.sh
Ejecutemos el script:
./my_script.sh
Debería ver:
Hello from the script!
También puede eliminar permisos utilizando el operador -. Por ejemplo, para eliminar el permiso de escritura para el grupo y otros:
chmod go-w my_script.sh
Verifique los permisos:
ls -l my_script.sh
Debería ver:
-rwxr-xr-x 1 labex labex 44 Oct 25 12:50 my_script.sh
También puede establecer múltiples permisos a la vez. Por ejemplo, para dar permisos de lectura y ejecución a todos, pero el permiso de escritura solo al propietario:
chmod u=rwx,go=rx my_script.sh
Esto establece (=) los permisos específicos para cada categoría.
Verifique los permisos una vez más:
ls -l my_script.sh
El resultado debería ser el mismo que antes:
-rwxr-xr-x 1 labex labex 44 Oct 25 12:50 my_script.sh
Trabajando con permisos de grupo
Linux permite asociar archivos a grupos, lo que posibilita un control de acceso colaborativo. En este paso, aprenderá cómo crear un grupo, cambiar la pertenencia de grupo de un archivo y establecer los permisos de grupo adecuados.
Primero, creemos un nuevo grupo. En un escenario real, este podría representar un departamento o un equipo de proyecto:
sudo groupadd developers
Ahora, creemos un archivo que se compartirá con este grupo:
touch shared_config.txt
echo "## Development configuration settings" > shared_config.txt
echo "debug_mode=true" >> shared_config.txt
echo "log_level=verbose" >> shared_config.txt
Actualmente, este archivo pertenece a su usuario y a su grupo principal. Veamos:
ls -l shared_config.txt
Debería ver una salida similar a:
-rw-rw-r-- 1 labex labex 61 Oct 25 13:00 shared_config.txt
Para cambiar la pertenencia de grupo del archivo al grupo developers, use el comando chown:
sudo chown labex:developers shared_config.txt
La sintaxis es chown usuario:grupo nombre_archivo. Aquí, mantenemos el usuario como labex pero cambiamos el grupo a developers.
Verifiquemos la pertenencia ahora:
ls -l shared_config.txt
Debería ver:
-rw-rw-r-- 1 labex developers 61 Oct 25 13:00 shared_config.txt
Note que el grupo ha cambiado a developers, pero los permisos siguen siendo los mismos. Modifiquémoslos para permitir que los miembros del grupo lean pero no escriban, y para evitar el acceso de otros:
chmod 640 shared_config.txt
Esto establece:
- Propietario: Lectura y escritura (
6=4+2) - Grupo: Solo lectura (
4) - Otros: Sin permisos (
0)
Verifiquemos los permisos nuevamente:
ls -l shared_config.txt
Ahora debería ver:
-rw-r----- 1 labex developers 61 Oct 25 13:00 shared_config.txt
Ahora, los miembros del grupo developers pueden leer este archivo de configuración, pero no pueden modificarlo. Los usuarios que no pertenecen al grupo developers no pueden acceder al archivo en absoluto.
También puede usar el modo simbólico para obtener el mismo resultado:
chmod u=rw,g=r,o= shared_config.txt
Este comando establece explícitamente:
- Usuario/propietario: Lectura y escritura
- Grupo: Solo lectura
- Otros: Sin permisos
Para agregar un usuario al grupo developers, normalmente se usaría:
sudo usermod -a -G developers username
Sin embargo, esto está fuera del alcance de este laboratorio en particular, ya que requeriría crear cuentas de usuario adicionales.
Resumen
En este laboratorio, ha aprendido los conceptos y prácticas esenciales de los permisos de archivos en Linux. Aquí está un resumen de lo que ha logrado:
Ha comprendido cómo funcionan los modelos de permisos de Linux, incluyendo los conceptos de permisos de lectura, escritura y ejecución para usuarios, grupos y otros.
Ha creado archivos con permisos específicos, aprendiendo a usar el comando
chmoden modo numérico para establecer niveles de acceso adecuados para diferentes tipos de archivos.Ha explorado el modo simbólico del comando
chmod, que ofrece un enfoque más intuitivo para agregar, eliminar o establecer permisos específicos.Ha trabajado con permisos de grupo, aprendiendo cómo crear grupos, cambiar la pertenencia de grupo de archivos y establecer controles de acceso adecuados a nivel de grupo.
Estas habilidades son fundamentales para mantener la seguridad y controlar el acceso en los sistemas Linux. Ya sea que esté administrando configuraciones de servidores, desarrollando software o simplemente organizando sus archivos personales, entender cómo establecer y modificar adecuadamente los permisos de archivos es una habilidad esencial para cualquier usuario de Linux.
A medida que continúe trabajando con Linux, recuerde que la gestión adecuada de permisos es un componente clave de la seguridad del sistema. Siempre siga el principio del menor privilegio: dé a los usuarios y procesos solo los permisos que necesitan para realizar sus tareas y nada más.



