Chmod

format_list_bulleted Contenido keyboard_arrow_down
ImprimirCitar

En los sistemas operativos Unix y similares a Unix, chmod es el comando y la llamada al sistema que se usa para cambiar los permisos de acceso y las banderas de modo especial (los indicadores setuid, setgid y sticky) de los objetos del sistema de archivos (archivos y directorios). En conjunto, estos se llamaron originalmente sus modos, y se eligió el nombre chmod como abreviatura de change < b>mode.

Historia

Un 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 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. El comando está disponible como un paquete separado para Microsoft Windows como parte de la colección UnxUtils de puertos Win32 nativos de utilidades similares a GNU Unix. El comando chmod también se ha portado al sistema operativo IBM i.

Sintaxis de comandos

A lo largo de esta sección, user se refiere al propietario del archivo, como recordatorio de que la forma simbólica del comando usa "u ".

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

Las opciones generalmente implementadas incluyen:

  • -R Recursive, es decir, incluir objetos en subdirectorios.
  • -v verbose, mostrar objetos cambiados (no se muestran objetos no cambiados).

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

Para ver el modo de archivo, se pueden usar los comandos ls o stat:

$ ls - encuentroPhoneNumbers.sh
-rwxr-xr-- 1 dgerman staff 823 dic 16 15:03 encontrarPhoneNumbers.sh$ stat -c %a findPhoneNumbers.sh
754

El r, w, y x especifica el acceso de lectura, escritura y ejecución (el primer carácter de ls muestra el tipo de objeto; un guión representa un archivo sin formato). 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 cualquier otro usuario.

Las partes principales de los permisos de chmod:

Por ejemplo: rwxr-x---

Cada grupo de tres caracteres define permisos para cada clase:

  • los tres personajes más izquierdos, rwx, definir permisos para Usuario clase (es decir, el propietario del archivo).
  • los tres personajes medios, r-x, definir permisos para Grupo clase (es decir, el grupo posee el archivo)
  • los tres personajes más correctos, ---, definir permisos para Otros clase. En este ejemplo, los usuarios que no son el propietario del archivo y que no son miembros del Grupo (y, por lo tanto, están en Otros class) no tiene permiso para acceder al archivo.

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 primer dígito opcional, cuando se dan 4 dígitos, especifica el especial setuid, setgid y pegajosas. Cada dígito de los tres dígitos que se encuentran más a la derecha representa un valor binario, que controla los valores de "lectura", "escritura" y "ejecutar" permisos respectivamente. Un valor de 1 significa que a una clase se le permite esa acción, mientras que un 0 significa que no está permitida.

#Sum rwx Permiso
74(r) + 2(w) + 1(x)rwxleer, escribir y ejecutar
64(r) + 2(w) rw-leer y escribir
54(r) + 1(x)r-xleído y ejecutado
44 r) r--leer sólo
32(w) + 1(x)-wxescribir y ejecutar
22 w) -w-escribir sólo
11(x)--xejecutar sólo
00 ---ninguno

Por ejemplo, 754 permitiría:

  • "read" (4), "escribir" (2), y "ejecutar" (1) para el Usuario clase; es decir, 7 (4 + 2 + 1).
  • "leer" (4) y "ejecutar" (1) para el Grupo clase; es decir, 5 (4 + 1).
  • Sólo "leer" (4) para el Otros clase.

Un código numérico permite la ejecución si y solo si es impar (es decir, 1, 3, < código class="mw-highlight mw-highlight-lang-text mw-content-ltr" id="" style="" dir="ltr">5, o 7). Un código numérico permite "leer" si y solo si es mayor o igual que 4 (es decir, 4, 5, 6, o 7). Un código numérico permite "escribir" si y solo si es 2, 3, 6, o 7.

Ejemplo numérico

Cambie los permisos para permitir que los miembros del grupo programadores actualicen un archivo:

$ Es compartido Archivo
-rw-r--r... 1 jsmith programmers 57 Jul 3 10:13 shared Archivo$ chmod 664 compartido Archivo
$ Es compartido Archivo
-rw-rw-r... 1 jsmith programmers 57 Jul 3 10:13 shared Archivo

Dado que los bits setuid, setgid y sticky no están especificados, esto es equivalente a:

$ chmod 0664 compartido Archivo

Modos simbólicos

El comando chmod también acepta una notación simbólica de grano más fino, que permite modificar modos específicos mientras deja intactos otros modos. El modo simbólico se compone de tres componentes, que se combinan para formar una sola cadena de texto:

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

Las clases de usuarios se utilizan para distinguir a quién se aplican los permisos. Si no se especifica ninguna clase, "todas" está implícito. Las clases están representadas por una o más de las siguientes letras:

ReferenciaClaseDescripción
uusuariopropietario del archivo
ggrupomiembros del grupo del archivo
ootrosusuarios que no son propietarios del archivo ni miembros del grupo del archivo
aTodoslos tres anteriores, igual que ugo
(vacío)por defectoigual que "todo", excepto que los pedazos en el umask serán sin cambios

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

OperadorDescripción
+añade los modos especificados a las clases especificadas
-elimina los modos especificados de las clases especificadas
=los modos especificados se harán los modos exactos para las clases especificadas

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

ModoNombreDescripción
rleídorAgregar un archivo o listar el contenido de un directorio
wescribirwrito a un archivo o directorio
xejecutarexecute un archivo o recurre a un árbol del directorio
Xejecución especialque no es un permiso en sí mismo, sino más bien puede ser utilizado x. Aplica permisos de ejecución a directorios independientemente de sus permisos actuales y aplica permisos de ejecución a un archivo que ya tiene por lo menos un bit de permiso de ejecución ya establecido (ya sea Usuario, Grupo o Otros). Es realmente útil cuando se usa con + y generalmente en combinación con el -R bandera para dar Grupo o Otros acceso a un gran árbol de directorios sin establecer el permiso de ejecución en archivos normales (como archivos de texto), que normalmente sucedería si acaba de utilizar chmod -R a+rx., mientras que con X Puedes hacerlo chmod -R a+rX. en lugar
ssetuide/gid
tpegajoso

Se pueden especificar múltiples cambios separando múltiples modos simbólicos con comas (sin espacios). Si no se especifica un usuario, chmod verificará el umask y el efecto será como si "a" se especificó, excepto que los bits que se establecen en el umask no se ven afectados.

Ejemplos simbólicos

  • Agregar permiso de escritura (w) a la del Grupo (g) modos de acceso de un directorio, permitiendo a los usuarios del mismo grupo añadir archivos:
    $ ls -ld shared_dir # Mostrar modos de acceso antes de chmoddrwxr-xr-x 2 jsmitt northregion 96 Apr 8 12:53 shared_dir$ chmod g+w shared_dir
    $ ls -ld shared_dir # Mostrar modos de acceso después de chmoddrwxrwxr-x 2 jsmitt northregion 96 Apr 8 12:53 shared_dir
  • Quitar permisos de escritura (w) para todas las clases (a), evitando que alguien escriba al archivo:
    $ Es nuestra BestReferenceFile
    -rw-rw-r... 2 tmiller norregion 96 Apr 8 12:53 nuestroMejorReferenciaFile$ ♪ ♪ BestReferenceFile
    $ Es nuestra BestReferenceFile
    -r...r...r... 2 tmiller norregion 96 Apr 8 12:53 nuestroMejorReferenciaFile
  • Establecer los permisos para los user y el Grupoug) para leer y ejecutar (rxSólo (sin permiso de escritura) referenceLib, evitando que alguien añada archivos.
    $ ls -ld reference Lib
    Drwxr... 2 ebowman northregion 96 Apr 8 12:53 reference Lib$ chmod ug=rx reference Lib
    $ ls -ld reference Lib
    dr-xr-x--- 2 ebowman northregion 96 Apr 8 12:53 reference Lib
  • Añadir los permisos de lectura y escritura a las clases de usuario y grupo de un archivo o directorio llamado muestra:
    $ muestra de chmod ug+rw
    $ Is -veda muestra
    Drw-rw... Presupuesto de 2 rsanchez 96 dic 8 12:53 muestra
  • Eliminar todos los permisos, permitiendo que nadie lea, escriba o ejecute el archivo llamado muestra sin fin útil.
    $ chmod a-rwx sample
    $ Is -l sample
    ---------- 2 rswven planning 96 Dec 8 12:53 sample
  • Cambiar los permisos para que el usuario y el grupo lean y ejecuten solamente (sin permiso de escritura) en muestra.
    $ # permisos de archivo de muestra antes del comando$ Is -veda muestra
    Drw-rw... 2 oschultz warehousing 96 dic 8 12:53 NY_DBs$ chmod ug=muestra rx
    $ Is -veda muestra
    dr-xr-x--- 2 oschultz warehousing 96 dic 8 12:53 NJ_DBs

Modos especiales

El comando chmod también es capaz de cambiar los permisos adicionales o modos especiales de un archivo o directorio. Los modos simbólicos usan '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 numéricamente, particularmente en octal, pero algunos no lo hacen. En estos sistemas, solo se pueden usar los modos simbólicos.

Ejemplos de línea de comandos

ComandoExplicación
chmod a+r publicComments.txtañade permiso de lectura para todas las clases (es decir, user, Grupo y Otros)
chmod a-x publicComments.txtelimina el permiso de ejecución para todas las clases
chmod a+rx viewer.shañade permisos de lectura y ejecución para todas las clases
chmod u=rw,g=r,o= internalPlan.txtsets read and write permission for user, conjuntos leídos para Grupo, y niega el acceso para Otros
chmod -R u+w,go-w docsañade permiso de escritura al directorio docs y todos sus contenidos (es decir, Recursivamente) para el propietario, y elimina el permiso de escritura para grupo y otros
chmod ug=rw groupAgreements.txtestablece permisos de lectura y escritura para user y Grupo
chmod 664 global.txtestablece permisos de lectura y escritura para user y Grupo, y proporciona lectura Otros.
chmod 744 Show_myCV.shsets leer, escribir y ejecutar permisos para user, y establece permiso para leer Grupo y Otros
chmod 1755 findReslts.shestablece bit pegajoso, establece leer, escribir y ejecutar permisos para propietario, y establece permisos de lectura y ejecución para grupo y otros (esto sugiere que el script se mantenga en memoria)
chmod 4755 setCtrls.shsets UID, sets leer, escribir y ejecutar permisos para user, y establece permisos para leer y ejecutar Grupo y Otros
chmod 2755 setCtrls.shsets GID, sets leer, escribir y ejecutar permisos para user, y establece permisos para leer y ejecutar Grupo y Otros
chmod -R u+rwX,g-rwx,o-rx personalStuffRecursivamente (es decir, en todos los archivos y directorios en personalStuff) añade permisos de lectura, escritura y ejecución especial para user, elimina los permisos de lectura, escritura y ejecución para Grupo, y elimina los permisos de lectura y ejecución para Otros
chmod -R a-x+X publicDocsRecursivamente (es decir, en todos los archivos y directorios en publicDocs) elimina el permiso de ejecución para todas las clases y añade permiso de ejecución especial para todas las clases

Contenido relacionado

Organización autónoma descentralizada

Una organización autónoma descentralizada a veces llamada corporación autónoma descentralizada es una organización construida por reglas codificadas como...

Yakarta EE. UU.

Cábala de la columna vertebral

Más resultados...
Tamaño del texto:
  • Copiar
  • Editar
  • Resumir
undoredo
format_boldformat_italicformat_underlinedstrikethrough_ssuperscriptsubscriptlink
save