Chmod
Chmod
Ir a la navegaciónIr a la búsqueda
chmod, que significa "cambiar modo" (del inglés: "change mode"), es un comando
asociado con el sistema operativo UNIX (estandarizados en POSIX y otros estándares)
que permite la asignación de permisos de acceso a carpetas o directorios1.
Índice
1 Sintaxis
1.1 Comando
1.2 Llamada al sistema
2 Especificación de permisos
2.1 Permisos básicos
2.2 Clases de usuarios
3 Asignación de permisos en el comando chmod
3.1 Modo octal
3.2 Modo carácter
4 Permisos adicionales
5 Véase también
6 Enlaces externos
7 Referencias
Sintaxis
Comando
Las opciones del comando chmod se especifica del siguiente modo:
-f: no visualiza los posibles mensajes de error que puedan ocurrir debido a
conflictos en la asignación de permisos.
-v: lista los ficheros y directorios a los que se les va aplicando el comando a
medida que el mismo se ejecuta
-h:
-R: aplica el comando chmod recursivamente a todos los ficheros y de los
subdirectorios.
-H:
-L:
-P:
-c: igual a -v con excepción que solo lista los ficheros modificados.
-E:
El orden y compatibilidad de los modificadores está dada por:
Llamada al sistema
Ejemplo en lenguaje de programación C:
Especificación de permisos
Permisos básicos
Existen tres permisos independientes, llamados permisos básicos, que pueden ser
permitidos (estado 1) o denegados (estado 0) a un fichero y/o directorio
r - lectura
w - escritura
x - ejecución
El significado de estos tres permisos se resume en la siguiente tabla:
Por lo tanto, las clases de usuarios a los cuales se les puede asignar los permisos
básicos anteriormente mencionados son:
Modo octal
Como resultado de la combinación de los tres tipos de permisos (lectura, escritura
y ejecución), con las tres clases de usuarios (dueño, grupo y otros), se obtiene {\
displaystyle 2^{3}=8}{\displaystyle 2^{3}=8} permisos en total que pueden ser
asignados o denegados de forma independiente.
La base 8 se utiliza habitualmente para que exista un dígito por cada combinación
de permisos (un bit a modo de bandera por cada permiso, con valor 1 o 0 según el
permiso esté concedido o denegado).
Así, las posibles combinaciones se resumen en números octales de tres dígitos del
000 al 777, cada uno de los cuales permite establecer un tipo de permiso distinto a
cada clase de usuario:
Permiso set user ID, setuid o SUID: cuando un fichero que tiene este permiso
asignado se ejecuta, el proceso resultante asumirá el identificador de usuario
efectivo dado a la clase de usuario. El ejemplo típico es el cambio de una clave de
usuario: ningún usuario debería poder modificar /etc/passwd/ directamente. La única
forma de poder modificarlo debería ser a través del comando correspondiente, que
necesariamente tendrá que tener asignado el setuid. Es decir, el comando
/usr/bin/passwd ejecutado por un usuario se ejecutará como si lo hubiese invocado
el superusuario, para que pueda modificar /etc/passwd.
Permiso set group ID, setgid o SGID: cuando un fichero que tiene este permiso
asignado se ejecuta, el proceso resultante asumirá el identificador de grupo
efectivo dado a la clase de grupo. Cuando el setgid le es asignado a un directorio,
ficheros nuevos y directorios creados debajo de ese directorio heredarán el grupo
de ese directorio, a diferencia del comportamiento por defecto, que es usar el
grupo primario del usuario efectivo al asignar el grupo de ficheros nuevos y
directorios.
Permiso de sticky bit (o menos común, bit pegadizo): El comportamiento típico del
sticky bit en ficheros ejecutables fuerza al núcleo a retener la imagen del proceso
resultante luego de su terminación. Originalmente, esta era una característica para
ahorrar memoria, pero hoy en día, los precios de las memorias han disminuido y
existen mejores técnicas para manejarlo, así que no se lo suele utilizar más para
optimizaciones en ficheros. En un directorio, por el contrario, el sticky bit
(llamado también "Restricted Deletion Flag" o "Bandera de restricción de borrado")
previene que los usuarios renombren, muevan o borren los ficheros que allí se
encuentran, pertenecientes a usuarios otros que ellos mismos, incluso si tienen
permiso de escritura en el directorio. Solo el propietario del directorio y el
superusuario quedan exentos de esto.
Estos tres permisos (especificables de forma independiente), un bit por cada uno de
ellos, permiten 8 combinaciones posibles que se expresan con un dígito en base 8
(del 0 al 7, uno por cada combinación posible) que se antepone al modo de permisos.
Así, el modo se ampliaría ahora del 0000 al 7777.
Por ejemplo: