Usar chmod en Linux
Todos los sistemas de archivos basados en Unix, como lo es Linux, manejan tres tipos de permisos: lectura, escritura y ejecución. Los mismos se otorgan a tres categorías posibles: el usuario (usuario), el grupo al que pertenece el usuario (grupo) y todos los demás usuarios del sistema (global).
Para ver los permisos de un directorio podemos ejecutar el comando ls -l
en un terminal y obtener una salida como la siguiente:
$ ls -l
lrwxrwxrwx 1 usuario grupo 14 may 21 2018 Datos -> /datos/usuario/
-rw-r--r-- 1 usuario grupo 0 abr 11 17:11 ejemplo.txt
drwxr-xr-x 2 usuario grupo 4096 mar 24 11:19 Escritorio
Los primeros 10 caracteres representan los permisos, para el ejemplo anterior corresponden a:
Tipo de archivo | Usuario | Grupo | Global |
---|---|---|---|
l Enlace simbólico | rwx | rwx | rwx |
- Archivo | rw- | r-- | r-- |
d Directorio | rwx | r-x | r-x |
El primero corresponde al tipo de archivo. Los restantes 9 agrupados en 3 grupos de 3 letras representan los permisos del usuario, el grupo y todos los demás (global) respectivamente. Cada letra representa:
r
Lectura (read)w
Escritura (write)x
Ejecución (execute)
Ya comprendido lo anterior, la sintaxis a seguir para asignar permisos a un archivo o directorio es la siguiente:
$ chmod [u,g,o,a][+,-,=][r,w,x] archivo_o_directorio
Donde los parámetros corresponden a:
Parámetro | Significado |
---|---|
u | Usuario |
g | Grupo |
o | Global |
a | Todos |
+ | Otorgar |
- | Revocar |
= | Copiar |
r | Lectura |
w | Escritura |
x | Ejecución |
Por ejemplo, si un usuario quiere otorgarle permisos de escritura al archivo ejemplo.txt a todos los usuarios de su mismo grupo, debe ejecutar chmod
con los parámetros g+w
de la siguiente manera:
$ chmod g+w ejemplo.txt
Para revocar el permiso se cambiar el parámetro por g-w
:
$ chmod g-w ejemplo.txt
Si lo que desea es que el grupo tenga los mismos permisos que el usuario sobre el directorio Escritorio, debe ejecutar chmod
con los parámetros g=u
:
$ chmod g=u Escritorio
Si se indica la categoría a
o no se indica ninguna categoría, los permisos se aplica a todas las categorías:
# Se otorga permiso de ejecución a usuario, grupo y global
$ chmod a+x ejemplo.txt
# Equivalente a
$ chmod +x ejemplo.txt
Se pueden especificar diferentes permisos al mismo tiempo utilizando coma:
$ chmod g+w,o-rw,a+x ejemplo.txt
Y se pueden aplicar permisos recursivamente utilizando el parámetro -R
:
$ chmod -R +r Escritorio
El anterior ejemplo, le otorga permisos de lectura al directorio Escritorio al igual que a todo su contenido.
Otro método de establecer permisos es mediante el uso de la notación octal, la cual consiste en representar los 3 permisos (lectura, escritura y ejecución) en binario, donde 0 es que no tiene el permiso y 1 que si tiene el permiso y pasarlos luego a su representación en base 8, utilizando los dígitos del 0 al 7.
Binario | Octal | Permiso |
---|---|---|
000 | 0 | --- |
001 | 1 | --x |
010 | 2 | -w- |
011 | 3 | -wx |
100 | 4 | r-- |
101 | 5 | r-x |
110 | 6 | rw- |
111 | 7 | rwx |
La sintaxis de la notación octal sería igual a la anterior, remplazado los parámetros por el valor octal:
$ chmod 750 ejemplo.txt
Así por ejemplo el parámetro 750
significa que el usuario tiene permisos rwx
, el grupo tiene permisos r-x
y los otros no tiene permisos ---
.
Las notaciones octales más frecuentes son:
Octal | Permisos |
---|---|
777 | rwxrwxrwx Todos tienen todos los permisos |
755 | rwxr-xr-x Usuario tiene todos los permisos, los demás solo leer y ejecutar |
644 | rw-r--r-- Usuario puede leer y escribir, los demás solo leer |
600 | rw------- Usuario puede leer y escribir, los demás sin permisos |