2.4 Gestión de Permisos y Propiedad
¡Prepárate!
- Aprenderás a leer la matriz de permisos
rwxr-xr-xen la salida dels -l. - Dominarás el Modo Octal (números) para configurar permisos a la velocidad de
la luz. - Conocerás cómo cambiar el dueño de un archivo usando
chowncomo superusuario. - Entenderás por qué el permiso777es el mayor pecado de un Sysadmin.
En Linux, todo archivo y directorio es propiedad absoluta de un Usuario específico y pertenece a un Grupo. El núcleo del sistema decide quién puede ver, modificar o ejecutar un archivo evaluando tres niveles de acceso: Usuario (Propietario), Grupo y Otros (El resto del mundo).
1. La Matriz de Permisos (ls -l)
Sección titulada “1. La Matriz de Permisos (ls -l)"Cuando ejecutas el comando ls -l, la primera columna que ves es una cadena de 10 caracteres aparentemente críptica, como -rwxr-xr-- o drwxrwxr-x.
Desgranemos -rwxr-xr-- (10 caracteres):
- El 1º caracter (Tipo): Indica qué es. Un guion
-significa que es un archivo regular. Unadsignifica que es un directorio. Unlsignifica que es un enlace simbólico. - Los siguientes 3 (
rwx): Permisos del Usuario Propietario (User /u). En este caso, puede Leer (Read =r), Escribir/Modificar (Write =w), y Ejecutar como programa (eXecute =x). - Los siguientes 3 (
r-x): Permisos del Grupo (Group /g). Pueden Leer, NO pueden escribir (marcado con-), y sí pueden Ejecutar. - Los últimos 3 (
r--): Permisos de Otros (Others /o). El resto de usuarios del sistema solo pueden Leer.
2. Cambiando Permisos (chmod)
Sección titulada “2. Cambiando Permisos (chmod)"El comando change mode altera los permisos. Existen dos formas de hacerlo: la simbólica (amigable) y la octal (profesional).
Modo Simbólico (Letras)
Sección titulada “Modo Simbólico (Letras)"Usas matemáticas simples sumando (+), restando (-) o igualando (=) permisos a las categorías u, g, o, o a (All/Todos).
# Darle permiso de ejecución al dueño (Usuario)chmod u+x script.sh
# Quitarle permiso de escritura a los Otroschmod o-w archivo_secreto.txt
# Forzar que el Grupo solo tenga permiso de Lectura (eliminando w o x si los tuviera)chmod g=r documento.pdfModo Octal (El Atajo Sysadmin)
Sección titulada “Modo Octal (El Atajo Sysadmin)"Sumas el valor de los permisos que quieres asignar.
- Lectura (
r) = 4 - Escritura (
w) = 2 - Ejecución (
x) = 1
Para cada bloque (Usuario, Grupo, Otros), sumas los valores:
- Permiso
rwx(Lectura+Escritura+Ejecución): 4 + 2 + 1 = 7 - Permiso
rw-(Lectura+Escritura): 4 + 2 + 0 = 6 - Permiso
r-x(Lectura+Ejecución): 4 + 0 + 1 = 5 - Permiso
r--(Solo Lectura): 4 + 0 + 0 = 4 - Sin permiso
---: 0
Ejemplos Míticos:
chmod 755 script.sh-> El dueño tiene7(Lectura, Escritura, Ejecución). El Grupo y Otros tienen5(Lectura y Ejecución). Es el estándar absoluto para programas y scripts web.chmod 644 archivo.txt-> Dueño6(Lectura, Escritura). Resto4(Solo lectura). El estándar para cualquier texto o configuración.chmod 600 llave.pem-> Dueño6. Resto0. Máxima privacidad, estándar para claves privadas SSH.chmod 777 publico-> PELIGRO. Todo el mundo (7,7,7) puede alterar, borrar y ejecutar archivos. Jamás uses esto en producción para “arreglar un problema que no te deja guardar”.
3. Cambiando de Dueño (chown)
Sección titulada “3. Cambiando de Dueño (chown)"El comando change owner cambia el propietario y/o grupo de un archivo. Por motivos evidentes de seguridad, solo el superusuario (root) puede regalar la propiedad de un archivo a otro, por lo que siempre tendrás que usar sudo.
# Cambiar solo el propietario al usuario 'juan'sudo chown juan archivo.txt
# Cambiar el propietario a 'juan' y el grupo a 'desarrolladores' (usando dos puntos :)sudo chown juan:desarrolladores archivo.txt
# Cambiar TODO el contenido de una carpeta entera remotamente (Recursivo -R)sudo chown -R www-data:www-data /var/www/html/Comprueba tus conocimientos
Sección titulada “Comprueba tus conocimientos"-
Si utilizas el comando
ls -ly observas que un archivo tiene los permisos-rw-r--r--, ¿Cuál es su equivalente exacto usando la notación numérica Octal? -
Acabas de crear un script en Bash maravilloso llamado
limpiar.sh. Eres su creador, por lo que tienes permisos de lectura y escritura (rw-), pero al internar correrlo te dice “Permiso Denegado”. ¿Cuál de estos comandos soluciona el problema de la forma más segura usando el Modo Simbólico? -
Has montado un servidor Web Apache en Debian. El usuario que ejecuta el servidor web se llama
www-data. Sin embargo, subiste los archivos de la página web usando tu cuenta personaljuan. El servidor lanza error 403 Forbidden porque no es dueño de los archivos de la web. ¿Qué comando arregla toda la web de golpe?