Por qué chmod 777 es un problema, no una solución
Micro-lab: qué hace realmente 777, por qué 'lo arreglé con 777' suele abrir un agujero, y qué poner en su lugar.
Antes de empezar necesitás
- Saber leer permisos en octal (lab: permisos en octal)
Al terminar vas a poder
- Entender qué habilita exactamente 777
- Reconocer por qué es peligroso en un servidor compartido
- Elegir un permiso mínimo en lugar de 777
“No andaba por permisos, le puse 777 y listo.” Es el atajo más común y uno de los más peligrosos. Este lab es corto: entendé por qué.
Qué dice 777, de verdad
777 es rwxrwxrwx: lectura, escritura y ejecución para todos — dueño, grupo y cualquier otro usuario del sistema.
7 7 7
rwx rwx rwx
dueño grupo otros
El bloque que importa es el último. otros = 7 significa que cualquier usuario o proceso del sistema puede leer, modificar y ejecutar ese archivo.
Por qué es un agujero
Si un atacante toma control de un proceso de bajo privilegio y encuentra un script tuyo en 777, puede reescribirlo. Cuando ese script lo ejecuta después un usuario con más permisos (o un cron como root), el código del atacante corre con esos permisos. 777 convirtió un problema chico en una escalada de privilegios.
Qué poner en su lugar
¿Es un secreto (clave, .env)? 600 (solo el dueño lee/escribe)
¿Es un archivo de datos normal? 644 (dueño escribe, el resto lee)
¿Es un script o binario ejecutable? 755 (todos ejecutan, solo el dueño escribe)
¿"No tiene permiso" un servicio? cambiá el DUEÑO (chown), no el modo
# Archivos que cualquiera puede escribir, dentro del directorio actual
find . -perm -o=w -type f -not -path './.git/*' Quiz
Comprobá lo que entendiste
0 / 2 correctas
-
1. Un servicio no puede leer config.json. ¿Cuál es la mejor primera movida?
-
2. ¿Qué permiso le corresponde a una clave privada SSH?
Lo que practicás en este lab
Llevátelo a tu repo si querés, pero no es obligatorio: es tu aprendizaje.
- Writeup de 4 líneas: un caso donde verías 777 y con qué lo reemplazarías
Reto
Buscá archivos world-writable en un directorio de prueba con find . -perm -o=w. Por cada uno, decidí el permiso mínimo correcto y justificá en una línea.
Resolvelo y escribí dos líneas explicando qué pasó. Con eso lo fijás.