Chmod

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 8 de agosto de 2021; la verificación requiere 1 edición .

chmod
Tipo de programa para cambiar permisos de archivos y directorios
Desarrollador Proyecto GNU
Escrito en C
Sistema operativo similar a Unix
Primera edición 3 de noviembre de 1971
ultima versión 8.5 (23 de abril de 2010)
Licencia GPLv3+
Sitio web gnu.org

chmod (del inglés  change mode ) es un comando para cambiar los permisos de archivos y directorios que se utilizan en los sistemas operativos similares a Unix . Incluido en el estándar POSIX , en Coreutils .

Sintaxis:

chmod [opciones] modo[,modo] archivo1 [archivo2 ...]

Opciones:

El comando nunca cambia los permisos de los enlaces simbólicos ; sin embargo, para cada enlace simbólico especificado en la línea de comando, cambia los permisos del archivo asociado. El comando ignora los enlaces simbólicos encontrados durante el procesamiento recursivo de directorios.

El argumento de permisos del comando chmod se puede escribir en dos formatos: numérico y de caracteres.

Formato de número

Los derechos se escriben en una línea para tres tipos de usuarios a la vez:

En forma numérica, se establecen derechos absolutos para un archivo o directorio, mientras que en forma simbólica, se pueden establecer derechos individuales para diferentes tipos de usuarios.

Ejemplo: numéricamente, establezca los permisos en rwxr-xr-x:

nombre de archivo chmod 755

Ejemplo - el valor de la derecha "755"
dueño Grupo descansar
valor octal 7 5 5
notación de caracteres rwx receta receta
designación de tipo de usuario tu gramo o

Así, los derechos "755" se escriben en forma simbólica como "rwxr-xr-x". Al mismo tiempo, para comprender la esencia de establecer derechos en los sistemas Unix, es útil conocer la representación de los números en el sistema numérico binario .

Tres opciones para escribir derechos de usuario
binario octales simbólico permisos de archivo derechos de directorio
000 0 --- No No
001 una --X actuación leyendo las propiedades del archivo
010 2 -w- entrada No
011 3 -wx grabación y ejecución todo excepto obtener nombres de archivo
100 cuatro r-- lectura leer nombres de archivos
101 5 receta leyendo y ejecutando acceso de lectura a archivos/sus propiedades
110 6 rw- Lee y escribe leer nombres de archivos
111 7 rwx todos los derechos todos los derechos

Algunos permisos solo tienen sentido en combinación con otros. De los primeros cuatro elementos (que no dan derecho a leer el archivo), solo se suele utilizar “---” para los archivos, es decir, una denegación total de acceso al archivo para este tipo de usuario. Para los directorios de la lista completa, generalmente solo se usan 0, 5 y 7: denegar, leer y ejecutar, y acceso completo.

Al sumar estos códigos para tres tipos de usuarios, puede obtener una entrada numérica o simbólica. Por ejemplo, chmod 444 {filename} : 400+40+4=444 - todos tienen acceso de solo lectura (idéntico a "r--r--r--").

Además de los permisos estándar 'rwx', el comando chmod también controla los bits SGID, SUID y T. Si se establecen los atributos SUID o SGID, el archivo se puede ejecutar con permisos de propietario o grupo, respectivamente.

Para SUID, el peso es 4000 y para SGID, es 2000. Estos atributos son significativos cuando se establece el bit de ejecución correspondiente y se denotan con la letra "s" en notación simbólica: "rw s rwxrwx" y "rwxrw s rwx ”, respectivamente.

Ejemplo: chmod 4555 {nombre de archivo}  : todos tienen derecho a leer y ejecutar, pero el archivo se iniciará para su ejecución con derechos de propietario.

Establecer el SGID para un directorio hará que cada nuevo archivo creado pertenezca al mismo grupo que el propio directorio, en lugar del grupo principal del propietario, como sucede de forma predeterminada. SUID para un directorio no tiene sentido [1] .

el bit adhesivo o el indicador de eliminación restringida (t-bit) solo se usa con directorios. Cuando el bit t para un directorio no está configurado, un archivo en ese directorio puede ser eliminado (renombrado) por cualquier usuario con acceso de escritura a ese directorio. Al configurar el t-bit en un directorio, cambiamos esta regla de tal manera que solo el propietario de este archivo puede eliminar (renombrar) un archivo. Siguiendo la codificación anterior, el t-bit tiene un peso de 1000.

Nota: El permiso de escritura (w) brinda al usuario la capacidad de escribir o modificar un archivo, mientras que el permiso de escritura del directorio brinda la capacidad de crear nuevos archivos o eliminar archivos de ese directorio. Si se puede escribir en un directorio (w), entonces un archivo dentro de ese directorio se puede eliminar incluso si el archivo no tiene permiso de escritura . (Según el concepto de sistema de archivos POSIX).

Significados populares

400 (-r--------) El titular tiene derecho a leer; nadie más tiene derecho a hacer nada 440 (-r--r-----) El propietario y el grupo tienen acceso de lectura; nadie más tiene derecho a hacer nada 644 (-rw-r--r--) Todos los usuarios tienen acceso de lectura; el propietario puede editar 660 (-rw-rw----) El propietario y el grupo pueden leer y editar; al resto no se les permite realizar ninguna acción 664 (-rw-rw-r--) Todos los usuarios tienen acceso de lectura; el propietario y el grupo pueden editar 666 (-rw-rw-rw-) Todos los usuarios pueden leer y editar. 700 (-rwx------) El propietario puede leer, escribir y ejecutar; nadie más tiene derecho a hacer nada 744 (-rwxr--r--) Cada usuario puede leer, el propietario tiene derecho a editar y ejecutar 755 (-rwxr-xr-x) Cada usuario tiene derecho a leer y ejecutar; el propietario puede editar 777 (-rwxrwxrwx) Cada usuario puede leer, editar y ejecutar 2555 (-r-xr-sr-x) Cada usuario tiene derecho a leer y ejecutar con los derechos del grupo de usuarios del propietario del archivo. 4555 (-r-sr-xr-x) Cada usuario tiene derecho de lectura y ejecución con los derechos del propietario del archivo

Formato de caracteres

En forma simbólica, el uso del comando le permite agregar, establecer o eliminar permisos en archivos o directorios de manera más flexible:

$ chmod [referencias][operador][modos] archivo ...

Las referencias definen los usuarios cuyos derechos se cambiarán. Las referencias se definen por una o más letras:

referencia clase Descripción
tu usuario Propietario del archivo
gramo grupo Usuarios en el grupo de propietarios de archivos
o otros Otros usuarios
a todos Todos los usuarios (o ugo)

El operador define la operación que realizará chmod:

operador Descripción
+ agregar ciertos permisos
- eliminar ciertos derechos
= establecer ciertos permisos

Modos define qué permisos se establecerán, agregarán o eliminarán:

modo Nombre Descripción
r leer leer un archivo o contenido de un directorio
w escribe escribir en un archivo o directorio
X ejecutar ejecutar un archivo o leer el contenido de un directorio
X ejecución especial ejecutar si el archivo es un directorio o ya tiene permiso de ejecución para algún usuario
s setuid/gid los atributos establecidos SUID o SGID le permiten ejecutar el archivo para su ejecución con los derechos del propietario del archivo o del grupo, respectivamente
t pegajoso al configurar el t-bit en un directorio, cambiamos esta regla de tal manera que solo el propietario de este archivo puede eliminar un archivo

Ejemplos

Establecer permisos "rwxr-xr-x" (0755) para un archivo:

chmod u=rwx,g=rx,o=rx nombre de archivo

Configure los permisos de ejecución para el propietario del archivo, elimine los permisos de ejecución del grupo, elimine los permisos de escritura y ejecución de otros usuarios:

chmod u+x,gx,o-wx nombre de archivo

Establezca permisos de lectura recursiva para todos los usuarios:

chmod -R a+r directorio

Elimine recursivamente los atributos SUID y SGID:

chmod -R us, directorio gs

Características

Los valores por defecto son:

Los valores son diferentes para archivos y directorios porque el indicador "ejecutar" afecta a los archivos y directorios de manera diferente. Para archivos ejecutables, "ejecutar" significa ejecutarlos, para directorios, el derecho a leer el archivo (si hay un derecho de lectura en él) y sus atributos de archivo con un nombre conocido (sin el derecho a leer, no puede obtener el nombre de los archivos en el directorio).

El siguiente comando aplicará reglas recursivamente a todos los archivos en el directorio "/home/test", así como a todos los archivos en todos los subdirectorios:

# buscar /inicio/prueba -tipo f -exec chmod 644 {} \;

El siguiente comando aplicará reglas recursivamente a todos los directorios en el directorio "/home/test", así como a todos los directorios en todos los subdirectorios:

# encontrar /inicio/prueba -tipo d -exec chmod 755 {} \;

Puede lograr el mismo resultado sin usar find (tenga en cuenta la X mayúscula):

# chmod -R go=rX,u=rwX /inicio/prueba

Notas

  1. Scott Granneman "Guía de bolsillo de Linux", Williams Publishing House, 2007

Enlaces