Mandato chmod
Finalidad
Cambia modalidades de archivo.
Sintaxis
Para cambiar modalidades de archivo simbólicamente
chmod [ -R ] [ -h ]
[ -f
] [ [ u ] [ g ] [ o
] | [ a ]
] { { - | + | = } [ r ] [ w ] [ x ] [ X
] [ s ] [
t ] } { Archivo ... | Directorio ... }
Para cambiar modalidades de archivo
numéricamente
chmod [ -R ] [ -h ]
[ -f
] CódigoPermiso { Archivo ...
| Directorio ... }
Descripción
El mandato chmod modifica los bits de modalidad y las listas de
control de acceso (ACL) ampliadas de los archivos o directorios especificados.
La modalidad puede definirse simbólicamente o numéricamente (modalidad absoluta).
Cuando se encuentra un enlace simbólico y no se ha especificado el distintivo
-h, el mandato chmod cambia la modalidad del
archivo o directorio al que señala el enlace y no la modalidad del enlace en sí. Si
especifica el distintivo -h, el mandato chmod impide este cambio de modalidad.
Si especifica tanto el distintivo -h como el distintivo
-R, el mandato chmod desciende por los
directorios especificados recursivamente y, cuando encuentra un enlace simbólico, la
modalidad del archivo o directorio al que señala el enlace no cambia.
Distintivos
|
-f |
Suprime todo el informe de errores excepto los permisos no válidos y las
sentencias de utilización. |
|
-h |
Suprime un cambio de modalidad para el archivo o directorio al que señala el
enlace simbólico encontrado.
Nota:
Este comportamiento es ligeramente diferente
del comportamiento del distintivo -h de los mandatos chgrp y chown, ya que los bits de modalidad no pueden
establecerse en enlaces simbólicos. |
|
-R |
Desciende sólo por los directorios recursivamente, según lo especificado por el
patrón Archivo...|Directorio.... El distintivo
-R cambia los bits de modalidad de archivo de cada directorio y
de todos los archivos coincidentes con el patrón especificado. Consulte el Ejemplo 6.
Cuando
se encuentra un enlace simbólico y el enlace señala a un directorio, los bits de
modalidad de archivo de ese directorio se cambian, pero el directorio ya no vuelve a
cruzarse. |
Modalidad simbólica
Para especificar una modalidad en formato simbólico, debe especificar tres conjuntos
de distintivos.
Nota:
No separe los distintivos con espacios.
El primer conjunto de distintivos especifica a quién se otorgan o deniegan los
permisos especificados, del siguiente modo:
|
u |
Propietario de archivo. |
|
g |
Entradas ACL ampliadas y de grupo pertenecientes al grupo del archivo. |
|
o |
Todos los demás. |
|
a |
Usuario, grupo y todos los demás. El distintivo a tiene el
mismo efecto que especificar juntos los distintivos ugo.
Si no se especifica ninguno de estos distintivos, el valor predeterminado es el
distintivo a y se aplica la máscara de creación de archivos (umask). |
El segundo conjunto de distintivos especifica si los permisos deben eliminarse,
aplicarse o establecerse:
|
- |
Elimina los permisos especificados. |
|
+ |
Aplica los permisos especificados. |
|
= |
Borra el campo del permiso especificado y lo establece en el permiso
especificado. Si no especifica un permiso a continuación de =, el mandato chmod elimina todos los permisos del campo
seleccionado. |
El tercer conjunto de distintivos especifica los permisos que deben eliminarse,
aplicarse o establecerse:
|
r |
Permiso de lectura. |
|
w |
Permiso de escritura. |
|
x |
Permiso de ejecución para archivos; permiso de búsqueda para directorios. |
|
X |
Permiso de ejecución para archivos si los bits de modalidad actuales (no
modificados) tienen establecido al menos uno de los bits de usuario, grupo u otros bits
de ejecución. El distintivo X se pasa por alto si se especifica el parámetro Archivo
y ninguno de los bits de ejecución está establecido en los bits de modalidad actuales.
Permiso de búsqueda para directorios. |
|
s |
Permiso para Establecer ID de usuario durante ejecución si
se ha especificado o está implícito el distintivo u. Permiso para
Establecer ID de grupo durante ejecución si se ha especificado o está implícito el
distintivo g. |
|
t |
Para directorios, indica que sólo los propietarios de archivos pueden enlazar o
desenlazar archivos en el directorio especificado. Para archivos, establece el atributo save-text. |
Modalidad numérica o absoluta
El mandato chmod también permite utilizar notación octal
para la modalidad. La modalidad numérica es la suma de uno o varios de los siguientes
valores:
|
4000 |
Establece el ID de usuario durante la ejecución. |
|
2000 |
Establece el ID de grupo durante la ejecución. |
|
1000 |
Establece el permiso de enlace para directorios o establece el atributo
save-text para archivos. |
|
0400 |
Permite la lectura por parte del propietario. |
|
0200 |
Permite la grabación por parte del propietario. |
|
0100 |
Permite la ejecución o la búsqueda por parte del propietario. |
|
0040 |
Permite la lectura por parte del grupo. |
|
0020 |
Permite la grabación por parte del grupo. |
|
0010 |
Permite la ejecución o la búsqueda por parte del grupo. |
|
0004 |
Permite la lectura por parte de otros. |
|
0002 |
Permite la grabación por parte de otros. |
|
0001 |
Permite la ejecución o la búsqueda por parte de otros. |
Notas:
- La especificación de la modalidad numéricamente inhabilita las Listas de
control de acceso (ACL) ampliadas que puedan existir.
- El cambio de permisos de acceso de grupo simbólicamente también afecta a las entradas
de ACL ampliada. A las entradas de grupo de la ACL que son iguales al grupo propietario del
archivo se les deniega cualquier permiso que se haya eliminado de la modalidad.
- Puede especificar varias modalidades simbólicas separadas por comas. Las
operaciones se realizan en el orden de aparición, de izquierda a derecha.
- Debe especificar la modalidad simbólicamente o utilizar un octal explícito de 4
caracteres con un cero inicial (por ejemplo, 0755) al eliminar el permiso para Establecer
ID de grupo durante ejecución de los directorios.
Seguridad
Control de acceso: este programa debe instalarse como un programa de usuario normal en
la Base de cálculo de confianza.
Sólo el propietario del archivo o el usuario raíz pueden cambiar la modalidad de un
archivo.
Estado de salida
Este mandato devuelve los siguientes valores de salida:
|
0 |
El mandatos e ha ejecutado satisfactoriamente y todos los cambios solicitados
se han realizado. |
|
>0 |
Se ha producido un error. |
Ejemplos
- Para añadir un tipo de permiso a varios archivos:
chmod g+w chap1 chap2
Este mandato añade permiso de escritura para los miembros de grupo sobre los
archivos chap1 y chap2.
- Para realizar varios cambios de permiso simultáneamente:
chmod go-w+x mydir
Este mandato deniega a los miembros de grupo y a otros el permiso para crear o
suprimir archivos en mydir (go-w) y
permite a los miembros de grupo y a otros buscar en mydir o
utilizarlo en un nombre de vía de acceso (go+x). Es equivalente a
la secuencia de mandatos:
chmod g-w mydir
chmod o-w mydir
chmod g+x mydir
chmod o+x mydir
- Para permitir sólo al propietario utilizar un procedimiento de shell como mandato:
chmod u=rwx,go= cmd
Este mandato otorga los permisos de lectura, escritura y
ejecución al usuario que es propietario del archivo (u=rwx). También
deniega al grupo y a otros el permiso para acceder a cmd de
ningún modo (go=).
Si tiene permiso para ejecutar el archivo
de mandatos de shell cmd, puede ejecutarlo especificando:
cmd
Nota:
Dependiendo
de la variable de shell PATH, puede que necesite especificar la vía
de acceso completa al archivo cmd.
- Para utilizar modalidades Establecer ID:
chmod ug+s cmd
Cuando se
ejecuta el mandato cmd, los ID de usuario y grupo en vigor se establecen en los que son propietarios
del archivo cmd. Sólo se cambian los ID en vigor asociados con
el proceso hijo que ejecuta el mandato cmd. Los ID en vigor de la sesión de shell permanecen sin cambios.
Esta
característica permite otorgar acceso a archivos restringidos.
Suponga que el programa cmd tiene habilitada la modalidad
Establecer ID de usuario y es propiedad de un usuario llamado dbms.
El usuario dbms no es realmente una persona, sino que puede
estar
asociado a un sistema de gestión de bases de datos. El usuario betty no tiene permiso para acceder a ninguno de los archivos de datos de
dbms. Sin embargo, sí tiene permiso para ejecutar el mandato
cmd. Cuando lo hace, su ID de usuario en vigor cambia
temporalmente a dbms, de modo que el programa cmd pueda acceder a los archivos de datos que son propiedad
del usuario dbms.
De ese modo, el usuario
betty puede utilizar el mandato
cmd para acceder a los archivos de datos, pero no puede
dañarlos accidentalmente con los mandatos de shell estándar.
- Para utilizar el formato de modalidad absoluta del mandato
chmod:
chmod 644 text
Este mandato establece el permiso de lectura y escritura para el
propietario, y la modalidad de sólo lectura para el grupo y otros. También elimina todas
las ACL ampliadas que puedan estar asociadas con el archivo.
- Para descender recursivamente por los directorios y cambiar los permisos de archivo y
directorio dada la estructura en árbol:
./dir1/dir2/file1
./dir1/dir2/file2
./dir1/file1
especifique este secuencia de mandatos:
chmod -R 777 f*
que cambiará los permisos en ./dir1/file1.
Pero, dada esta estructura en
árbol:
./dir1/fdir2/file1
./dir1/fdir2/file2
./dir1/file3
la secuencia de mandatos:
chmod -R 777 f*
cambiará
los permisos en
./dir1/fdir2
./dir1/fdir2/file1
./dir1/fdir2/file2
./dir1/file3
Archivo
|
/usr/bin/chmod |
Contiene el mandato chmod. |