REFERENCIA RÁPIDA DE CHMOD
Permisos de archivo, modos numérico y simbólico, bits especiales, umask
Modo Numérico
Dígitos Octal de Permisos
| 4 | Lectura (r) |
| 2 | Escritura (w) |
| 1 | Ejecución (x) |
| 0 | Sin permiso |
Formato de Tres Dígitos
chmod 755 file # rwxr-xr-x
chmod 644 file # rw-r--r--
chmod 700 file # rwx------
chmod 600 file # rw-------
Cálculo de Dígitos
| 7 (4+2+1) | rwx — lectura, escritura, ejecución |
| 6 (4+2) | rw- — lectura, escritura |
| 5 (4+1) | r-x — lectura, ejecución |
| 4 | r-- — solo lectura |
| 3 (2+1) | -wx — escritura, ejecución |
| 2 | -w- — solo escritura |
| 1 | --x — solo ejecución |
| 0 | --- — sin permisos |
Modo Simbólico
Sintaxis: [ugoa][+-=][rwxXst]
| u | Usuario (propietario) |
| g | Grupo |
| o | Otros |
| a | Todos (u + g + o) |
| + | Agregar permiso |
| - | Quitar permiso |
| = | Establecer permiso exacto |
Ejemplos Simbólicos
chmod u+x file # propietario: agregar ejecución
chmod g-w file # grupo: quitar escritura
chmod o=r file # otros: solo lectura
chmod a+r file # todos: agregar lectura
chmod u+x,g-w,o= file # operaciones combinadas
Permisos Comunes
Presets de Permisos de Archivo
| 644 rw-r--r-- | Archivo estándar — propietario rw, otros lectura |
| 755 rwxr-xr-x | Script / binario — propietario rwx, otros rx |
| 600 rw------- | Archivo privado — solo propietario |
| 400 r-------- | Solo lectura privada (claves SSH) |
| 666 rw-rw-rw- | Archivo escribible por todos (evitar) |
| 777 rwxrwxrwx | Acceso total para todos (evitar) |
Referencia Rápida
chmod 644 *.html # web: propietario rw, mundo r
chmod 755 *.sh # scripts: propietario rwx, mundo rx
chmod 600 ~/.ssh/id_* # claves SSH: solo propietario
chmod 400 secret.pem # certificado: solo lectura
Permisos de Directorio
Qué Significan los Permisos en Directorios
| r (4) | Listar contenido del directorio (ls) |
| w (2) | Crear / eliminar archivos en el directorio |
| x (1) | Acceder (entrar con cd) al directorio |
| rx (5) | Listar + acceder (lectura típica) |
| rwx (7) | Control total |
Permisos Comunes de Directorio
chmod 755 dir/ # estándar: propietario rwx, otros rx
chmod 700 dir/ # privado: solo propietario
chmod 750 dir/ # acceso grupo: propietario rwx, grupo rx
chmod 1777 /tmp # sticky bit: solo propietario puede eliminar
Bits Especiales
Setuid, Setgid, Sticky
| Setuid (4xxx) | Ejecutar como propietario del archivo (ej., passwd) |
| Setgid (2xxx) | Ejecutar como grupo del archivo / heredar grupo del dir |
| Sticky (1xxx) | Solo el propietario puede eliminar archivos (ej., /tmp) |
Establecer Bits Especiales
chmod 4755 program # setuid: -rwsr-xr-x
chmod 2755 dir/ # setgid: drwxr-sr-x
chmod 1755 dir/ # sticky: drwxr-xr-t
chmod u+s program # setuid simbólico
chmod g+s dir/ # setgid simbólico
chmod +t dir/ # sticky bit simbólico
Recursivo
Cambios Recursivos de Permisos
chmod -R 755 dir/ # establecer todo a 755 recursivamente
chmod -R u+rwX dir/ # propietario rw, +x solo en dirs
chmod -R go-w dir/ # quitar escritura de grupo/otros
Archivos vs Directorios con find
# establecer directorios a 755, archivos a 644
find /path -type d -exec chmod 755 {} +
find /path -type f -exec chmod 644 {} +
X Mayúscula — Ejecución Condicional
| x (minúscula) | Agregar ejecución a todos los archivos y dirs |
| X (mayúscula) | Agregar ejecución solo a dirs y archivos ya ejecutables |
umask
Cómo Funciona umask
| umask | Mostrar umask actual |
| umask 022 | Archivos: 644, Dirs: 755 |
| umask 077 | Archivos: 600, Dirs: 700 |
| umask 002 | Archivos: 664, Dirs: 775 |
Cálculo de umask
# permiso por defecto menos umask = efectivo
# Files: 666 - 022 = 644 (rw-r--r--)
# Dirs: 777 - 022 = 755 (rwxr-xr-x)
umask # mostrar umask actual
umask 022 # valor típico por defecto
umask -S # mostrar en notación simbólica
Patrones Comunes
Casos de Uso Cotidianos
| Raíz web | chmod -R 755 /var/www/html |
| Archivo de config | chmod 600 app.conf |
| Directorio SSH | chmod 700 ~/.ssh |
| SSH authorized_keys | chmod 600 ~/.ssh/authorized_keys |
| Directorio compartido | chmod 2775 /shared (setgid) |
| Archivos de log | chmod 640 /var/log/app.log |
| Scripts cron | chmod 755 /etc/cron.daily/myjob |
| Directorio temporal | chmod 1777 /tmp (sticky) |
Ver Permisos
ls -l file.txt # mostrar permisos
ls -ld dir/ # mostrar permisos de directorio
stat -c '%A %a %n' * # simbólico + numérico + nombre
getfacl file.txt # mostrar ACLs (si se usan)