Los permisos de un archivo indican quién puede leerlo (r), escribirlo (w) o ejecutarlo (x), por separado para tres grupos: el usuario propietario (u), el grupo del propietario (g) y otros (o). chmod los cambia. La Calculadora Chmod hace la aritmética por usted.
Cómo leer ls -l
-rwxr-xr-- 1 ana staff 1024 Oct 3 10:00 deploy.sh
El primer carácter es el tipo (- archivo, d carpeta, l enlace simbólico). Los nueve siguientes son tres grupos de tres: rwx para el propietario, r-x para el grupo y r-- para otros. Este script es entonces 754: el propietario lo puede todo, el grupo puede leerlo y ejecutarlo y otros solo leerlo.
Dígitos octales
Cada grupo recibe un dígito que es la suma de leer = 4, escribir = 2 y ejecutar = 1.
| Dígito | Binario | Permisos |
|---|---|---|
7 |
111 |
rwx leer + escribir + ejecutar |
6 |
110 |
rw- leer + escribir |
5 |
101 |
r-x leer + ejecutar |
4 |
100 |
r-- leer |
3 |
011 |
-wx escribir + ejecutar |
2 |
010 |
-w- escribir |
1 |
001 |
--x ejecutar |
0 |
000 |
--- ninguno |
Modos habituales
| Octal | Simbólico | Significado |
|---|---|---|
644 |
-rw-r--r-- |
Archivo normal: usted lee y escribe, los demás leen |
600 |
-rw------- |
Archivo privado: solo usted (claves SSH, secretos) |
640 |
-rw-r----- |
Usted lee y escribe, su grupo lee, el resto nada |
664 |
-rw-rw-r-- |
Usted y su grupo escriben, el resto lee |
755 |
-rwxr-xr-x |
Programa o carpeta: usted lo hace todo, el resto lee y ejecuta |
700 |
-rwx------ |
Programa o carpeta privados: solo usted |
750 |
-rwxr-x--- |
Usted lo hace todo, su grupo lee y ejecuta, el resto nada |
775 |
-rwxrwxr-x |
Carpeta compartida: usted y su grupo lo hacen todo |
444 |
-r--r--r-- |
Solo lectura para todos |
400 |
-r-------- |
Solo lectura, y solo para usted |
777 |
-rwxrwxrwx |
Todos pueden hacerlo todo: evítelo |
En una carpeta, r permite listar su contenido, w permite crear y borrar entradas y x permite entrar y llegar a lo que contiene. Una carpeta sin x queda prácticamente bloqueada, por eso las carpetas suelen ser 755 o 700 y no 644.
Modo simbólico
Describa el cambio en lugar del valor final: quién (u, g, o o a para todos), un operador (+ añadir, - quitar, = fijar exactamente) y los permisos.
chmod u+x script.sh # el propietario puede ejecutarlo
chmod go-w notes.txt # quita escritura a grupo y otros
chmod a=r readme.txt # todos: solo lectura
chmod u=rwx,g=rx,o= tool # equivale a 750
chmod -R u+rwX,go-rwx dir # recursivo; la X mayúscula añade ejecución solo a carpetas
Cambiar muchos archivos a la vez
find . -type d -exec chmod 755 {} + # todas las carpetas
find . -type f -exec chmod 644 {} + # todos los archivos normales
Poner 755 a todo vuelve ejecutables los archivos de datos, y chmod -R 777 casi nunca es la solución a un error de «permiso denegado». Averigüe qué usuario necesita acceso y conceda exactamente eso.
Bits especiales
Un cuarto dígito inicial fija tres bits especiales.
| Bit | Octal | En un archivo | En una carpeta |
|---|---|---|---|
| setuid | 4000 |
se ejecuta como el propietario del archivo | sin efecto en la mayoría de sistemas |
| setgid | 2000 |
se ejecuta como el grupo del archivo | los archivos nuevos heredan el grupo de la carpeta |
| sticky | 1000 |
se ignora | solo el propietario de un archivo puede borrarlo (como en /tmp) |
chmod 1777 shared/ crea una carpeta escribible por todos con el bit sticky, y chmod 2775 project/ mantiene los archivos de una carpeta de equipo en un mismo grupo.
Permisos por defecto y umask
Los archivos nuevos parten de 666 y las carpetas nuevas de 777; después la umask quita bits. Con la umask habitual 022, los archivos nuevos son 644 y las carpetas 755. Con 077 son 600 y 700. Consulte la suya con umask.