stringtranslate.com

Modificador de cambios

En los sistemas operativos Unix y similares , chmod es el comando y la llamada al sistema que se utilizan para cambiar los permisos de acceso y los indicadores de modo especial (los indicadores setuid , setgid y sticky ) de los objetos del sistema de archivos ( archivos y directorios ). En conjunto, originalmente se los denominaba modos [1] y el nombre chmod se eligió como una abreviatura de change mode [ 2 ] .

Historia

El comando chmod apareció por primera vez en la versión 1 de AT&T Unix , junto con la llamada al sistema chmod .

A medida que los sistemas crecieron en número y tipos de usuarios, se agregaron listas de control de acceso [3] a muchos sistemas de archivos además de estos modos más básicos para aumentar la flexibilidad.

La versión de chmod incluida en GNU coreutils fue escrita por David MacKenzie y Jim Meyering. [4] El comando está disponible como un paquete separado para Microsoft Windows como parte de la colección UnxUtils de puertos Win32 nativos de utilidades comunes de GNU Unix. [5] El comando chmod también ha sido portado al sistema operativo IBM i . [6]

Sintaxis de comandos

A lo largo de esta sección, u ser se refiere al propietario del archivo, como recordatorio de que la forma simbólica del comando utiliza " u ", para evitar confusiones con "other".

Tenga en cuenta que sólo el usuario o el superusuario (root) puede cambiar los permisos de archivos.

chmod [options] mode[,mode] file1 [file2 ...][7]

Las opciones que normalmente se implementan incluyen:

Si se especifica un enlace simbólico , el objeto de destino se ve afectado. Los modos de archivo asociados directamente con los enlaces simbólicos no suelen utilizarse.

Para ver el modo de archivo, se pueden utilizar los comandos lso :stat

$ ls  -l  findPhoneNumbers.sh -rwxr-xr-- 1 dgerman staff 823 16 de diciembre 15:03 findPhoneNumbers.sh $ stat  -c  %a  findPhoneNumbers.sh 754

Los rcaracteres , w, y xespecifican el acceso de lectura, escritura y ejecución respectivamente. El primer carácter del indicador ls -l indica el tipo de objeto; un guión representa un archivo simple. El script findPhoneNumbers.sh puede ser leído, escrito y ejecutado por el usuario dgerman ; leído y ejecutado por miembros del grupo staff ; y solo leído por otros usuarios.

Las partes principales de los permisos chmod :

Por ejemplo:rwxr-x---

Cada grupo de tres caracteres define permisos para cada clase :

Permisos numéricos

El formato numérico chmod acepta hasta cuatro dígitos. Los tres dígitos más a la derecha definen los permisos para el usuario del archivo, el grupo y otros. El dígito inicial opcional, cuando se proporcionan 4 dígitos, especifica los indicadores especiales setuid , setgid y sticky . Cada dígito de los tres dígitos más a la derecha representa un valor binario, que controla los permisos de "lectura", "escritura" y "ejecución" respectivamente. Un valor de 1 significa que una clase tiene permitido realizar esa acción, mientras que un 0 significa que no está permitido.

Por ejemplo, 754permitiría:

Un código numérico permite la ejecución si y solo si es impar (es decir 1, 3, 5, o 7). Un código numérico permite la "lectura" si y solo si es mayor o igual que 4(es decir 4, 5, 6, o 7). Un código numérico permite la "escritura" si y solo si es 2, 3, 6o 7.

Ejemplo numérico

Cambiar permisos para permitir que los programadores actualicen un archivo:

$ ls  -l  Archivo -rw-r--r-- 1 jsmith programmers 57 3 jul 10:13 Archivo $ chmod 664 Archivo $ ls -l Archivo -rw-rw-r-- 1 jsmith programmers 57 3 jul 10:13 Archivo    

Dado que los bits setuid , setgid y sticky no se especifican, esto es equivalente a:

$ chmod 0664 Archivo  

Modos simbólicos

El comando chmod también acepta una notación simbólica más detallada, [8] que permite modificar modos específicos sin modificar otros modos. El modo simbólico está compuesto por tres componentes que se combinan para formar una única cadena de texto:

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

Las clases de usuarios se utilizan para distinguir a quiénes se aplican los permisos. Si no se especifica ninguna clase, se implica "all". Las clases se representan con una o más de las siguientes letras:

El programa chmod utiliza un operador para especificar cómo se deben ajustar los modos de un archivo. Se aceptan los siguientes operadores:

Los modos indican qué permisos se concederán o se quitarán a las clases especificadas. Hay tres modos básicos que corresponden a los permisos básicos:

Se pueden especificar múltiples cambios separando varios modos simbólicos con comas (sin espacios). Si no se especifica un usuario, chmodse comprobará la máscara de usuario y el efecto será como si se hubiera especificado " a ", excepto que los bits que están configurados en la máscara de usuario no se ven afectados. [9]

Ejemplos simbólicos

$ ls  -ld  dir # muestra los modos de acceso antes de chmod drwxr-xr-x 2 jsmitt northregion 96 8 abr 12:53 shared_dir $ chmod g+w dir $ ls -ld dir # muestra los modos de acceso después de chmod drwxrwxr-x 2 jsmitt northregion 96 8 abr 12:53 shared_dir      
$ ls  -l  nuestroMejorArchivoDeReferencia -rw-rw-r-- 2 tmiller northregion 96 8 de abril 12:53 nuestroMejorArchivoDeReferencia $ chmod  a-w  nuestroMejorArchivoDeReferencia $ ls  -l  nuestroMejorArchivoDeReferencia -r--r--r-- 2 tmiller northregion 96 8 de abril 12:53 nuestroMejorArchivoDeReferencia
$ 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 referenceLib
$ chmod  ug+rw  sample $ ls -ld sample drw-rw---- 2 rsanchez presupuesto 96 8 dic 12:53 sample
$ chmod  a-rwx  sample $ ls -l sample ---------- 2 rswven planificación 96 8 de diciembre 12:53 sample
$ # Permisos de archivo de muestra antes del comando $ ls  -ld  sample drw-rw---- 2 oschultz warehousing 96 Dec 8 12:53 NY_DBs $ chmod ug = rx sample   $ ls  -ld  sample dr-xr-x--- 2 oschultz warehousing 96 Dec 8 12:53 NJ_DBs
$ chmod u = rw,go = r muestra $ ls -ld muestra drw-r--r-- 2 oschultz warehousing 96 8 de diciembre 12:53 muestra    

Modos especiales

El comando chmod también es capaz de cambiar los permisos adicionales o los modos especiales de un archivo o directorio. Los modos simbólicos utilizan " s " para representar los modos setuid y setgid , y " t " para representar el modo sticky . Los modos solo se aplican a las clases apropiadas, independientemente de si se especifican o no otras clases.

La mayoría de los sistemas operativos admiten la especificación de modos especiales de forma numérica, en particular en octal, pero algunos no lo hacen. En estos sistemas, solo se pueden utilizar los modos simbólicos.

Ejemplos de línea de comandos

Véase también

Referencias

  1. ^ Los modos/permisos se muestran al enumerar archivos en formato largo.
  2. ^ "Tutorial para chmod". catcode.com .
  3. ^ "Gestión del sistema AIX 5.3". Centro de conocimiento de IBM . IBM . Consultado el 30 de agosto de 2015 .
  4. ^ "chmod(1): cambiar bits de modo de archivo - Página del manual de Linux". linux.die.net .
  5. ^ "Puertos Win32 nativos de algunas utilidades GNU". unxutils.sourceforge.net .
  6. ^ IBM . «Programación Qshell para IBM System i versión 7.2» (PDF) . IBM . Consultado el 5 de septiembre de 2020 .
  7. ^ "Página de manual de chmod con ejemplos y calculadora - Linux - SS64.com". ss64.com .
  8. ^ "Referencia de comandos de AIX 5.5". IBM Knowledge Center . IBM . Consultado el 30 de agosto de 2015 .
  9. ^ "Enmascaramiento de permisos con umask, chmod, permisos octales 777". teaching.idallen.com .

Enlaces externos