chmodes un comando de shell para cambiar los permisos de acceso y los indicadores de modo especial de los archivos (incluidos archivos especiales como directorios ). El nombre es una abreviatura de change mode , donde mode se refiere a los permisos y los indicadores en conjunto. [ 1 ] [ 2 ]
El comando se originó en la versión 1 de AT&T Unix y fue exclusivo de los sistemas operativos Unix y similares a Unix hasta que se portó a otros sistemas operativos como Windows (en UnxUtils ) [ 3 ] e IBM i . [ 4 ]
En los sistemas operativos Unix y similares , una llamada al sistema con el mismo nombre que el comando, chmod() , proporciona acceso a los datos de control de acceso subyacentes. El comando expone las capacidades de la llamada al sistema a un usuario de shell.
A medida que crecía la necesidad de mejorar los permisos del sistema de archivos , se añadieron listas de control de acceso [ 5 ]chmod a muchos sistemas de archivos para ampliar los modos controlados a través de .
La implementación chmodincluida en GNU coreutils fue escrita por David MacKenzie y Jim Meyering. [ 6 ]
Usar
Aunque la sintaxis del comando varía ligeramente según la implementación, generalmente acepta un único valor octal (que especifica todos los bits de modo de cada archivo) o una lista de especificadores simbólicos separados por comas (que describe cómo cambiar los bits de modo existentes de cada archivo). Los argumentos restantes son una lista de rutas a los archivos que se van a modificar. [ 7 ]
El cambio de permisos solo está permitido para el superusuario (root) y el propietario del archivo.
Si se especifica un enlace simbólico , se ajustan los bits de modo del destino del enlace. Por lo general, no se utilizan los permisos directamente asociados a una entrada del sistema de archivos de enlace simbólico.
Opciones
Las opciones opcionales de la línea de comandos pueden incluir:
-Rrecursivo; incluye archivos contenidos y subdirectorios de directorios especificados.-vdetallado; registrar los nombres de los archivos cambiados
Notación octal
Dado un argumento de permisos numérico, el chmodcomando lo trata como un número octal , [ a ] y reemplaza todos los bits de modo para cada archivo. (Aunque se especifican cuatro dígitos, 0los dígitos iniciales pueden omitirse). [ 8 ]
Hay doce bits de modo estándar, que comprenden tres bits especiales ( setuid , setgid y sticky ) y tres grupos de permisos (que controlan el acceso por usuario , grupo y otros ) de 3 bits cada uno ( read , write y exec/scan ); cada bit de permiso otorga acceso si está activado (1) o deniega el acceso si está desactivado (0).
Dado que un dígito octal representa un valor de 3 bits, los doce bits de modo se pueden representar como cuatro dígitos octales. chmodAdmite hasta cuatro dígitos y utiliza 0 para los dígitos de la izquierda no especificados (como es habitual en la representación numérica). En la práctica, se suelen especificar tres dígitos, ya que los modos especiales se utilizan con poca frecuencia y la clase de usuario suele estar especificada.
En el contexto de un dígito octal, cada bit de operación representa un valor numérico: lectura: 4, escritura: 2 y ejecución: 1. La siguiente tabla relaciona los valores de los dígitos octales con un valor de operación de clase.
El comando statpuede informar los permisos de un archivo en octal. Por ejemplo:
$ stat -c %a findPhoneNumbers.sh 754El valor reportado 754indica los siguientes permisos:
- Clase de usuario: leer, escribir y ejecutar; 7 => (4 + 2 + 1)
- clase de grupo: leer y ejecutar; 5 => (4 + 1)
- otras clases: solo lectura; (4)
Un código permite su ejecución solo si es impar (es decir, 1, 3, 5 o 7). Un código permite su lectura solo si es mayor o igual que 4 (es decir, 4, 5, 6 o 7). Un código permite su escritura solo si es 2, 3, 6 o 7.
Notación simbólica
El chmodcomando acepta notación simbólica que especifica cómo modificar los permisos existentes. [ 9 ] El comando acepta una lista de especificadores separados por comas, como:[classes]+|-|=operations
Las clases asignan permisos a los usuarios. Un especificador de cambio puede seleccionar una clase incluyendo su símbolo, varias incluyendo el símbolo de cada clase sin delimitador, o todas las clases sin especificar un símbolo; al usar el último método, los bits de la máscara umask permanecerán sin cambios. [ 10 ] Los especificadores de clase incluyen:
Como la propiedad es clave para el control de acceso, y dado que la especificación simbólica utiliza la abreviatura o , algunos piensan erróneamente que significa propietario , cuando, de hecho, es una abreviatura de otros .
Los operadores de cambio incluyen:
Las operaciones se pueden especificar de la siguiente manera:
La mayoría de chmodlas implementaciones admiten la especificación de los modos especiales en octal, pero algunas no, lo que requiere el uso de la notación simbólica.
El lscomando puede informar los permisos de archivo en una notación simbólica similar a la utilizada con chmod. ls -linforma los permisos en una notación que consta de 10 letras. La primera indica el tipo de entrada del sistema de archivos, como un guion para un archivo regular y una 'd' para un directorio. A continuación, hay tres conjuntos de tres letras que indican los permisos de lectura, escritura y ejecución agrupados por usuario, grupo y otras clases. Cada posición es un guion para indicar la falta de permiso o la abreviatura de una sola letra del permiso para indicar que está concedido. Por ejemplo:
$ ls -l findPhoneNumbers.sh -rwxr-xr-- 1 dgerman staff 823 16 de diciembre 15:03 findPhoneNumbers.shEl especificador de permisos -rwxr-xr--comienza con un guion, que indica que findPhoneNumbers.shse trata de un archivo regular, no de un directorio. Las siguientes tres letras rwxindican que el usuario propietario puede leer, escribir y ejecutar el archivo dgerman. Las siguientes tres letras r-xindican que los miembros del staffgrupo pueden leer y ejecutar el archivo. Y las últimas tres letras r--indican que el archivo es de solo lectura para los demás usuarios.
Ejemplos
Agrega permisos de escritura a la clase de grupo de un directorio, permitiendo que los usuarios del mismo grupo agreguen archivos:
$ ls -ld dir # antes de drwxr-xr-x 2 jsmitt northregion 96 Apr 8 12:53 shared_dir $ chmod g+w dir $ ls -ld dir # después de drwxrwxr-x 2 jsmitt northregion 96 Apr 8 12:53 shared_dirEliminar el permiso de escritura para todas las clases, impidiendo que cualquier persona escriba en el archivo:
$ ls -l ourBestReferenceFile -rw-rw-r-- 2 tmiller northregion 96 Apr 8 12:53 ourBestReferenceFile $ chmod a-w ourBestReferenceFile $ ls -l ourBestReferenceFile -r--r--r-- 2 tmiller northregion 96 Apr 8 12:53 ourBestReferenceFileEstablezca los permisos para las clases de usuario y grupo para que solo tengan permisos de lectura y ejecución , sin permiso de escritura , impidiendo que cualquier persona agregue archivos:
$ ls -ld referenceLib drwxr----- 2 ebowman northregion 96 8 de abril 12:53 referenceLib $ chmod ug = rx referenceLib $ ls -ld referenceLib dr-xr-x--- 2 ebowman northregion 96 8 de abril 12:53 referenceLibHabilitar lectura y escritura para la clase de usuario, mientras que para el grupo y otros solo se permite la lectura :
$ chmod u = rw,go = r sample $ ls -ld sample drw-r--r-- 2 oschultz warehousing 96 Dec 8 12:53 samplePara establecer de forma recursiva el acceso al directorio docs/ y a los archivos que contiene:
chmod -R u+w docs/
Para configurar usuarios y grupos para solo lectura y escritura, y configurar otros para solo lectura:
chmod 664 file
Para configurar el usuario con permisos de lectura, escritura y ejecución únicamente, y el grupo y otros con permisos de solo lectura:
chmod 744 file
Para configurar el bit de permanencia además de los permisos de usuario, grupo y otros:
chmod 1755 file
Para configurar el UID además de los permisos de usuario, grupo y otros:
chmod 4755 file
Para configurar el GID además de los permisos de usuario, grupo y otros:
chmod 2755 file
Véase también
attribcacls, modifica las listas de control de accesochattrcambia los atributos de un archivochgrpcambia el grupo de un archivochowncambia el propietario de un archivo- Identificador de grupo : número de grupo de cuentas del sistema Unix/POSIX; valor numérico utilizado para representar un grupo específico.
- Lista de comandos POSIX
- Identificador de usuario : valor que identifica una cuenta de usuario en sistemas operativos Unix y similares a Unix.
umaskrestringe los permisos en la creación de archivos
Notas
- ↑ ¿ Por qué octal en lugar de decimal? Aunque hoy en día se usa poco, durante el desarrollo inicial de UNIX, el sistema octal era muy útil porque los grupos repetitivos de 3 bits eran comunes en la estructura física de las computadoras de la época, y estos bits eran más fáciles de leer y comprender cuando se codificaban como dígitos octales, al igual que los grupos de 4 bits son más fáciles de agrupar en dígitos hexadecimales. La expresión numérica de los permisos del sistema de archivos en octal es uno de los pocos vestigios de esa época.
Referencias
- ↑ Los modos/permisos se muestran al listar archivos en formato largo.
- ↑ "Tutorial para chmod" . catcode.com . Archivado del original el 20 de mayo de 2000. Consultado el 26 de agosto de 2008 .
- ↑ "Adaptaciones nativas para Win32 de algunas utilidades GNU" . unxutils.sourceforge.net . Archivado del original el 9 de febrero de 2006. Consultado el 9 de agosto de 2025 .
- ↑ IBM . "IBM System i Versión 7.2 Programación Qshell" (PDF) . IBM . Archivado (PDF) del original el 18 de septiembre de 2020 . Recuperado el 5 de septiembre de 2020 .
- ↑ "Administración del sistema AIX 5.3" . Centro de conocimiento de IBM . IBM. Archivado del original el 4 de marzo de 2016. Consultado el 30 de agosto de 2015 .
- ↑ "chmod(1): cambia los bits del modo de archivo - página man de Linux" . linux.die.net . Archivado del original el 9 de enero de 2019. Consultado el 6 de enero de 2019 .
- ↑ "Página de manual de chmod con ejemplos y calculadora - Linux - SS64.com" . ss64.com . Archivado del original el 12 de febrero de 2003. Consultado el 12 de septiembre de 2020 .(Tenga en cuenta que "delimitado por espacios" es una característica del intérprete de comandos , no de chmod en sí).
- ↑ Esto difiere del lenguaje “C”, donde el
0prefijo para los números octales es un vestigio de su período inicial. - ↑ "Referencia de comandos de AIX 5.5" . Centro de conocimiento de IBM . IBM. Archivado del original el 4 de marzo de 2016. Consultado el 30 de agosto de 2015 .
- ↑ "Enmascaramiento de permisos con umask, chmod, permisos octales 777" . teaching.idallen.com . Archivado del original el 22 de febrero de 2020. Consultado el 9 de marzo de 2020 .
Enlaces externos
- : cambiar modos de archivo – Manual de comandos generales de FreeBSD
- – Manual del programador de Plan 9 , Volumen 1
- – Manual de comandos generales de Inferno
chmod— página del manual de GNU coreutils .- Manual de GNU "Configuración de permisos"
- CHMOD-Win 3.0 — Convertidor gratuito de ACL de Windows a CHMOD.
- Tutorial para principiantes con ejemplo práctico en línea.
- Permisos del sistema de archivos
- Seguridad del sistema operativo
- Programas estándar de Unix
- Software relacionado con el sistema de archivos Unix
- Utilidades Unix SUS2008
- Órdenes del Plan 9
- Comandos de Inferno (sistema operativo)
- Comandos de Qshell para IBM i