chmod es el comando que casi todo administrador Linux ejecuta a diario, pero pocos recuerdan de memoria a qué corresponde 644 o 750. Esta calculadora chmod convierte al instante entre notación octal y simbólica (rwxrwxrwx), muestra a qué corresponde cada bit y explica el efecto en propietario, grupo y otros. Incluye también bits especiales: setuid, setgid y sticky bit.
Los tres tríos: usuario, grupo, otros
Cada archivo Linux tiene 9 bits de permisos organizados en tres grupos: propietario (u), grupo (g) y otros (o). Cada grupo controla lectura (r=4), escritura (w=2) y ejecución (x=1). Sumando obtienes el dígito octal: 7 = rwx, 6 = rw-, 5 = r-x, 4 = r--. Así 755 significa rwxr-xr-x: el propietario lo hace todo, grupo y otros solo leen y ejecutan.
Permisos habituales y cuándo usarlos
644 (rw-r--r--) es el default de archivos de texto: el propietario edita, el resto lee. 755 (rwxr-xr-x) para directorios y ejecutables: cualquiera puede entrar y correr. 600 (rw-------) para archivos sensibles (claves SSH, .env). 700 para directorios privados como ~/.ssh. 400 para claves privadas que el propio proceso no debe modificar.
Setuid, setgid y sticky bit
Setuid (4000) hace que un ejecutable corra con los permisos del propietario, no del usuario que lo llama: es cómo funciona sudo o passwd. Setgid (2000) hace lo mismo con el grupo y, aplicado a directorios, hace que los archivos nuevos hereden el grupo del directorio. Sticky bit (1000), aplicado a un directorio (típicamente /tmp), impide que los usuarios borren archivos que no son suyos.
Errores frecuentes y auditoría
Nunca uses 777: abrir escritura a todo el mundo es la receta clásica del compromiso. Si tu app funciona con 777 tienes un problema de ownership, no de permisos: usa chown y grupos. Audita permisos peligrosos con `find / -perm -o=w -type f` (archivos escribibles por otros) y `find / -perm -4000` (binarios con setuid).
Casos de uso comunes
- Ajustar permisos de claves SSH tras copiarlas entre servidores.
- Preparar el árbol de una app web (nginx/apache) tras el deploy.
- Blindar archivos de configuración con secretos (.env, config.yml).
- Diagnosticar por qué un script falla con 'Permission denied'.
Buenas prácticas
- Nunca 777; usa grupos y ownership para colaborar.
- Claves SSH privadas siempre 600, públicas 644.
- Aplica el principio de mínimo privilegio: empieza restrictivo y abre solo lo necesario.
- Combina permisos POSIX con ACLs (setfacl) cuando necesites reglas complejas.