Introducción
En la leccion anterior aprendiste que cada proceso en Linux se ejecuta como un usuario que pertenece a grupos. Pero saber quien eres no es suficiente. Lo que determina que puedes hacer con un archivo concreto es su sistema de permisos.
En esta leccion vas a aprender como funcionan los permisos de lectura, escritura y ejecucion, como leerlos en la salida de ls -l, y como modificarlos con chmod. Este es el mecanismo central de control de acceso en Linux, y entenderlo es indispensable para la seguridad ofensiva.
¿Por que importan los permisos?
Los permisos son la primera linea de defensa del sistema. Deciden quien puede leer un archivo de configuracion con contraseñas, quien puede ejecutar un script, y quien puede escribir en un directorio critico.
En escalada de privilegios, los permisos mal configurados son uno de los vectores mas comunes. Un archivo ejecutable propiedad de root con permisos demasiado abiertos, un directorio donde cualquier usuario puede escribir, un script de cron que un usuario no privilegiado puede modificar: todos estos son errores de permisos que un atacante puede explotar.
El modelo de permisos
Tres permisos, tres niveles
Cada archivo y directorio en Linux tiene tres tipos de permiso:
- r (read, lectura): permite ver el contenido del archivo o listar el contenido del directorio
- w (write, escritura): permite modificar el archivo o crear/eliminar archivos dentro del directorio
- x (execute, ejecucion): permite ejecutar el archivo como programa o entrar en el directorio con
cd
Estos tres permisos se aplican en tres niveles:
- Propietario (user, u): el usuario dueño del archivo
- Grupo (group, g): los usuarios que pertenecen al grupo del archivo
- Otros (others, o): todos los demas usuarios del sistema
Leyendo la cadena de permisos
Cuando ejecutas ls -l, la primera columna muestra los permisos:
1-rwxr-xr-- 1 user user 1024 mar 15 10:00 script.sh
2La cadena -rwxr-xr-- se lee asi:
- Posicion 0: tipo (
-= archivo,d= directorio) - Posiciones 1-3: permisos del propietario →
rwx(puede leer, escribir y ejecutar) - Posiciones 4-6: permisos del grupo →
r-x(puede leer y ejecutar, pero no escribir) - Posiciones 7-9: permisos de otros →
r--(solo puede leer)
Permisos en la practica
Crea un archivo y observa sus permisos predeterminados:
1$ touch ejemplo.txt
2$ ls -l ejemplo.txt
3-rw-r--r-- 1 user user 0 mar 15 10:00 ejemplo.txt
4Los permisos por defecto son rw-r--r--: el propietario puede leer y escribir, el grupo y otros solo pueden leer. Nadie puede ejecutarlo (no tiene x).
Modificar permisos con chmod
chmod cambia los permisos de un archivo. Hay dos formas de usarlo. La forma simbolica es mas intuitiva:
1$ chmod u+x ejemplo.txt
2$ ls -l ejemplo.txt
3-rwxr--r-- 1 user user 0 mar 15 10:00 ejemplo.txt
4u+x significa: al propietario (u), añadirle (+) permiso de ejecucion (x). La sintaxis es quien+/-permiso:
u,g,o,a(propietario, grupo, otros, todos)+añade,-quita,=establece exactamenter,w,x
Algunos ejemplos comunes:
1$ chmod g+w ejemplo.txt # grupo puede escribir
2$ chmod o-r ejemplo.txt # otros no pueden leer
3$ chmod a+x script.sh # todos pueden ejecutar
4Notacion octal
La forma octal usa numeros. Cada permiso tiene un valor: r=4, w=2, x=1. Se suman para cada nivel:
rwx= 4+2+1 = 7r-x= 4+0+1 = 5r--= 4+0+0 = 4
1$ chmod 755 script.sh
2$ ls -l script.sh
3-rwxr-xr-x 1 user user 0 mar 15 10:00 script.sh
4755 significa: propietario puede todo (7), grupo puede leer y ejecutar (5), otros pueden leer y ejecutar (5). Este es el permiso tipico para scripts ejecutables.
Otros valores comunes:
644: archivos normales (propietario lee/escribe, el resto solo lee)700: solo el propietario puede hacer todo (privado)777: todos pueden todo (casi nunca es buena idea)
Permisos como mapa de acceso
Cuando analizas permisos en un sistema, la pregunta clave es: ¿quien puede hacer que con este archivo? La respuesta depende de tres datos:
- ¿Quien es el propietario del archivo?
- ¿A que grupo pertenece?
- ¿Que permisos tiene cada nivel?
Si encuentras un archivo propiedad de root con permisos 777, cualquier usuario puede modificarlo. Si ese archivo es un script que root ejecuta periodicamente, tienes un camino directo a ejecutar codigo como root. Este tipo de analisis es la base de la enumeracion de permisos en escalada de privilegios.
Errores comunes
Advertencia
Confundir permisos de archivo con permisos de directorio. El permiso x en un archivo significa que puedes ejecutarlo. El permiso x en un directorio significa que puedes entrar con cd. Sin x en un directorio, no puedes acceder a su contenido aunque tengas r.
Advertencia
Usar `chmod 777` como solucion rapida. Si un archivo "no funciona" y le pones chmod 777, estas dando acceso total a todos los usuarios. Es una solucion que crea un problema de seguridad. Identifica que permiso falta y ajusta solo ese.
Consejo
Lee permisos de izquierda a derecha. Practica leyendo cadenas de permisos en voz alta: "propietario puede leer, escribir y ejecutar; grupo puede leer y ejecutar; otros solo leen." Cuanto mas rapido puedas interpretar una cadena de permisos, mas eficiente seras al enumerar un sistema.
Conclusión
Los permisos en Linux controlan quien puede leer, escribir y ejecutar cada archivo y directorio. Se aplican en tres niveles (propietario, grupo, otros) y se modifican con chmod usando notacion simbolica o octal. Entender y leer permisos rapidamente es una habilidad critica tanto para administrar sistemas como para encontrar configuraciones inseguras. En la siguiente leccion aprenderas a ver y controlar los procesos que se estan ejecutando en el sistema.