Guía de permisos chmod en Linux
Aprende permisos chmod en Linux: valores 755, 644 y 777, permisos rwx, notación simbólica y ejemplos seguros para archivos y scripts.
Qué es chmod
chmod es el comando estándar de Unix/Linux para cambiar los permisos de un archivo o directorio. Determina quién puede leerlo (r), modificarlo (w) o ejecutarlo (x), y aplica esos permisos a tres audiencias: el propietario, el grupo asociado y el resto de usuarios.
Owner, group y others
Cada archivo Linux tiene tres bloques de permisos, uno por audiencia:
- Owner (usuario propietario): quien creó el archivo, salvo cambio con
chown. - Group: usuarios pertenecientes al grupo asociado al archivo. Útil para compartir entre miembros de un equipo.
- Others: cualquier otro usuario con acceso al sistema.
Bits r, w, x
Cada audiencia tiene tres bits: lectura, escritura y ejecución. En octal cada bit suma:
- 4 = r (lectura)
- 2 = w (escritura)
- 1 = x (ejecución)
Sumando se obtiene el valor por audiencia:
| Octal | Simbólico | Significado |
|---|---|---|
| 7 | rwx | Lectura, escritura y ejecución |
| 6 | rw- | Lectura y escritura |
| 5 | r-x | Lectura y ejecución |
| 4 | r-- | Solo lectura |
| 0 | --- | Sin permisos |
Ejemplos seguros
Los valores siguientes cubren los casos más habituales sin caer en el extremo permisivo de chmod 777:
chmod 755 script.sh— script público ejecutable; propietario edita.chmod 644 file.txt— archivo de configuración legible por todos, escribible solo por el propietario.chmod 700 private-script.sh— solo el propietario lee, escribe y ejecuta. Grupo y otros sin acceso.chmod 600 secret.txt— solo el propietario lee y escribe. Típico para llaves SSH privadas.chmod 777— concede rwx a todos. Evítalo: cualquier proceso o usuario del sistema puede modificar y ejecutar el archivo. Usa un valor más restrictivo (755 o 750 suele ser suficiente).
Octal frente a simbólico
La notación octal define permisos absolutos. La simbólica los modifica de forma incremental:
chmod u+x script.sh— añade ejecución al propietario sin tocar al resto.chmod go-w file.txt— quita escritura a grupo y otros, deja al propietario intacto.chmod a+r public.html— añade lectura a todos (all).
Las audiencias son u (user/owner), g (group), o (others) y a (all). Los operadores son + (añade), - (quita) y = (asigna exactamente).
Bits especiales (setuid, setgid, sticky)
Linux soporta tres bits adicionales que se anteponen al modo octal estándar:
- setuid (4xxx): el ejecutable corre con la identidad del propietario en lugar del usuario que lo invoca. Ejemplo:
/usr/bin/passwd. - setgid (2xxx): en ejecutables, corre con el grupo del archivo. En directorios, los archivos creados heredan el grupo del directorio.
- sticky (1xxx): en directorios, solo el propietario de un archivo puede borrarlo, aunque otros tengan w. Típico en
/tmp.
Errores frecuentes
- Aplicar chmod 777 para "que funcione". Suele ocultar un problema de propietario, grupo o ruta.
- Olvidar que para acceder a un archivo necesitas también permiso de lectura/ejecución en el directorio.
- Cambiar permisos recursivos con
chmod -R 777 .y dejar el sistema vulnerable. - No comprobar el propietario con
ls -lantes de cambiar permisos. - Asumir que copiar un archivo conserva permisos:
cp -pconserva,cpnormal no.
Calcula los permisos
Si dudas qué valor octal usar, prueba con la calculadora:
Siguientes pasos
Si vas a ejecutar un script con cron, revisa tanto los permisos como la programación. Combina esta guía con la guía de cron o usa directamente el generador de cron para programar la tarea.
Preguntas frecuentes
- ¿Qué significa chmod 755?
- El propietario obtiene rwx (lectura, escritura y ejecución = 7), y grupo y otros obtienen r-x (lectura y ejecución = 5). Es el valor típico para directorios y scripts ejecutables que deben poder consultarse y lanzarse, pero solo el propietario puede modificarlos.
- ¿Por qué chmod 777 es peligroso?
- Asigna rwx a propietario, grupo y otros. Cualquier usuario del sistema (incluido un proceso comprometido) puede leer, modificar y ejecutar el archivo. En servidores con varios usuarios o servicios expuestos a internet, es un riesgo de seguridad alto. Usa el mínimo permiso necesario.
- ¿Cuál es la diferencia entre permisos octales y simbólicos?
- Los permisos octales (p. ej. 755) son un número que codifica los 3 bits rwx de cada audiencia. Los simbólicos (p. ej. u+x) modifican los permisos existentes de forma incremental. Octal es más expresivo cuando defines permisos absolutos; simbólico es útil para añadir o quitar puntualmente.
- ¿Qué permisos necesita un script para ejecutarse?
- El bit de ejecución (x) para la audiencia que vaya a lanzarlo. Para un script personal basta `chmod u+x script.sh` o `chmod 700 script.sh`. Para uno público de solo lectura más ejecución, `chmod 755 script.sh`. El propietario sigue necesitando r para que el shell pueda leer el contenido.
- ¿Qué son setuid, setgid y sticky?
- Bits especiales adicionales. setuid (4xxx) hace que el ejecutable corra como su propietario. setgid (2xxx) hace lo equivalente con el grupo, o fuerza herencia de grupo en directorios. El bit sticky (1xxx) en un directorio impide que un usuario borre archivos de otro (típico en /tmp).