ToolsOps

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:

OctalSimbólicoSignificado
7rwxLectura, escritura y ejecución
6rw-Lectura y escritura
5r-xLectura y ejecución
4r--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 -l antes de cambiar permisos.
  • Asumir que copiar un archivo conserva permisos: cp -p conserva, cp normal no.

Calcula los permisos

Si dudas qué valor octal usar, prueba con la calculadora:

Usa la calculadora chmod

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