Este artículo describe cómo cambiar los permisos en un servidor en la nube de Linux® usando chmod
comando.
¿Qué es el comando chmod?
En pocas palabras, chmod
significa modo de cambio y se utiliza para establecer permisos de archivos o directorios en Linux. Los usuarios raíz usan chmod
para determinar qué usuarios, grupos y otros pueden acceder a archivos o directorios.
Por lo general, usa el chmod
comando en los siguientes formatos:
$ chmod (options) (permissions) (file name)
$ chmod (permissions) (file name)
El uso de opciones con chmod
El comando es opcional. El segundo ejemplo recibe el uso más frecuente. Sin una opción presente, chmod
modifica los permisos del archivo o directorio designado en el comando.
Permisos
En un sistema Linux, puede usar permisos para referirse al propietario del archivo o directorio (usuario), el grupo propietario del archivo o directorio (grupo) o cualquier otra persona que acceda al archivo o directorio (otros).
Indique estos permisos usando la siguiente notación:
- caracteres alfanuméricos (r, w, x)
- números octales (0-7)
Por ejemplo, tiene un archivo llamado example.txt y desea establecer los siguientes permisos:
- El usuario puede leer, escribir y ejecutar el archivo.
- Los miembros del grupo pueden leer y ejecutar, pero no escribir el archivo.
- Cualquier otro solo puede leer el archivo.
La siguiente opción de comando establece los permisos deseados para example.txt :
$ chmod u=rwx,g=rx,o=r example.txt
Esta opción utiliza caracteres alfanuméricos para indicar los usuarios que pueden acceder al archivo, así como los permisos que desea establecer para estos usuarios designados.
- La letra 'u' =usuario
- La letra 'g' =grupo
- La letra 'o' =otro
- La letra 'r' =leer
- La letra 'w' =escribir
- La letra 'x' =ejecutar
El siguiente ejemplo muestra cómo Linux representa los permisos otorgados en el ejemplo anterior:
-rwxr-xr--
Las tres primeras letras (rwx) son los permisos del usuario. Los otros tres (r-x) representan los permisos del grupo, y los últimos tres (r–) representan los permisos de los demás.
A continuación, tenemos la opción octal para nuestro example.txt ejercicio:
$ chmod 754 example.txt
En este ejemplo, los números 7, 5 y 4 representan cada uno los permisos de usuario, grupo y otros. La posición del primer número determina el permiso del usuario, el segundo número determina los permisos del grupo y el tercer número asigna los permisos para los demás.
Estos números no se seleccionan al azar. La suma de los números 4, 2, 1 y 0 determina los permisos. Los números tienen las siguientes asignaciones:
- 4 significa 'leer'
- 2 significa 'escribir'
- 1 significa 'ejecutar'
- 0 significa 'ninguno'
Por lo tanto, en nuestro ejemplo anterior, el 7 se determina a partir de la combinación de leer (4), escribir (2) y ejecutar (1):4 + 2 + 1 =7. El 5 se obtiene al sumar leer (4), ninguno (0) y ejecutar (1):4 + 0 + 1 =5. Por último, el 4 es una combinación de lectura (4), ninguno (0) y ninguno (0):4 + 0 + 0 =4 .
Opciones
Por lo general, no necesita usar opciones en el chmod
comando, pero en caso de que lo haga, puede usar las siguientes opciones con chmod
:
-c
,--changes
:da una salida detallada para los cambios realizados-f
,--silent
,--quiet
:silencia la mayoría de los mensajes de error-v
,--verbose
:genera un mensaje detallado para cada acción procesada--no-preserve-root
:Ignora la deferencia que normalmente se da por defecto al directorio / (raíz)--preserve-root
:No opera recursivamente en el directorio / (raíz)--reference=RFILE
:Establece permisos para que coincidan con los de RFILE, ignorando cualquier MODO específico-R
,--recursive
:Los cambios realizados en archivos o directorios se aplican de forma recursiva--help
:Muestra el mensaje de ayuda, luego sale--version
:muestra la información de la versión y luego sale
Extras
Además de los permisos ya discutidos, el chmod
El comando puede establecer otros tres permisos especiales en Linux.
- SUID (Establecer ID de usuario)
- SGID (establecer ID de grupo)
- Broca adhesiva
SUID
Un s
en el rwx
del usuario conjunto de permisos, reemplazando el x
, representa este permiso, como se muestra en el siguiente ejemplo:
$ chmod 4755 /usr/bin/passwd
$ ls -lh /usr/bin/passwd
-rwsr-xr-x. 1 root root 28K Mar 10 2020 /usr/bin/passwd
Las primeras tres letras en rwsr-xr-x
representan los permisos del usuario. Tenga en cuenta que en lugar de un x
hay un s
en las tres ranuras de permisos del usuario. En lugar de mostrar x
para ejecutar, hay un s
en el lugar de ejecución. ¿Por qué es eso?
755
, el permiso está escrito como 4755
.
Debe usar esta opción con precaución porque este permiso en particular le permite a un usuario ejecutar un programa binario como si fuera el propietario de ese programa aunque no lo sea. El ejemplo más conocido de esto es el passwd
comando.
En el caso de passwd
, el usuario puede ejecutar el programa aunque el programa binario sea propiedad de root. Sin embargo, debido a que passwd
está configurado como SUID de forma predeterminada, siempre se ejecuta como usuario raíz.
Si un usuario regular tiene permisos SUID en otros programas binarios, podría ejecutar comandos como root sin tener root
permisos Permite una escalada anormal de privilegios que generalmente requiere sudo
privilegios de acceso.
Los permisos SUID pueden afectar una precaución integrada en el sistema operativo Linux en forma de archivos binarios únicamente. No afecta a los scripts.
SGID
Un s
en el rwx
del grupo conjunto de permisos, reemplazando el x
en t r-x
segmento, representa el permiso SGID, como se muestra en el siguiente ejemplo:
$ chmod 2755 /usr/bin/screen
$ ls -lh /usr/bin/screen
-rwxr-sr-x. 1 root screen 465K Feb 10 2020 /usr/bin/screen
Este s
está en el segundo grupo de tres permisos, que descubrimos que son los permisos del grupo anteriormente cuando se escriben en estilo alfanumérico. En la representación octal, un 2
delante de los otros tres números octales de permiso denota este permiso. En lugar de 755
, escribe esto como 2755
.
Al igual que SUID, los permisos SGID solo funcionan en binarios. No funcionan en scripts. En cuanto a lo que hace SGID, permite a los miembros del grupo sin privilegios ejecutar un binario como si fueran el usuario root.
Por lo general, puede usar este permiso en directorios donde los miembros del grupo necesitan tener acceso dentro del directorio compartido por el grupo. Todos los archivos creados en este directorio tienen el mismo propietario del grupo, sin importar qué miembro del grupo haya creado el archivo.
Pedacito pegajoso
Un t
en el rwx
de los demás conjunto de permisos, reemplazando el x
, representa este permiso, como se muestra en el siguiente ejemplo:
$ chmod 1777 /tmp
$ ls -lhd /tmp
drwxrwxrwt. 8 root root 4.0K Nov 6 14:42 /tmp
Observe el t
en el último grupo de tres letras. El equivalente octal de la t
es un 1
delante de los tres octales de permiso. En lugar de 777
, escribe esto como 1777
.
¿Qué hace este bit pegajoso? Por lo general, utiliza este permiso en un tmp directorio, y su función es evitar que los usuarios eliminen archivos propiedad de otros usuarios. Por lo general, si un grupo tiene acceso de escritura a un directorio, cualquier usuario dentro de ese grupo puede eliminar cualquier archivo dentro de ese directorio. El permiso de bits pegajosos detiene eso. Solo el creador del archivo puede eliminarlo.
Como práctica recomendada, debe establecer el permiso de bits adhesivos en cualquier directorio cuyo otro permiso sea octal 7 (lectura, escritura, ejecución). En nuestro 754
ejemplo, desea utilizar el permiso de bit fijo si los octales son 757
donde 7 es el tercer octal (que representa el permiso de los demás).
Hoja de referencia de permisos para archivos y directorios
A continuación se muestra una hoja de referencia rápida que explica cada parte del resultado de ejemplo:
-rwxrw-r-- rack space 123G Feb 03 15:36 example.txt
-
:El-
al principio te dice que se trata de un archivo. Ad
al principio indica un directorio.rwx
:Las tres primeras letras representan los permisos del propietario del archivo y significan que el propietario puede leer, escribir y ejecutar el archivo ejemplo.txt.rw-
:Las segundas tres letras representan los permisos del grupo y significan que los miembros del grupo pueden leer y escribir en el archivo, pero no pueden ejecutarlo.r--
:Las tres terceras letras representan los permisos de los demás y significan que cualquier persona que no sea el propietario o que no pertenezca al grupo al que pertenece el archivo solo puede leer el archivo. No pueden escribir en el archivo ni ejecutarlo.rack
:el propietario del archivo.space
:El propietario del grupo.123G
:El tamaño del archivo en gigabytes. UnaM
denotaría megabytes, y unaK
denotaría kilobytes.Feb 03 15:36
:Indica la fecha y la hora en que se modificó el archivo por última vez.example.txt
:El nombre del archivo. Si enumera esto como '/example', es el nombre del directorio.