Saltar al contenido
Open Security
Ciberseguridad Práctica Inicial · 10 min

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.

#ciberseguridad#permisos#hardening

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
vt@labs:~
# 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. 1. Un servicio no puede leer config.json. ¿Cuál es la mejor primera movida?

  2. 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.

¿Hiciste el lab?

Si querés, guardá lo que hiciste (comandos, notas, un repo) para volver después. Y si encontrás un error o querés mejorar este lab, contribuí al repo. El progreso se guarda solo en tu navegador.