Los sistemas de archivos utilizan permisos y atributos para regular el nivel de interacción que los procesos del sistema pueden tener con los archivos y directorios.
Viewing permissions
Use la opción del comando ls -l
para ver los permisos (o modo de archivo) establecidos para el contenido de un directorio, por ejemplo:
$ ls-l /path/to/directory
la primera columna es en la que debemos centrarnos., Taking an example value of drwxrwxrwx+
, the meaning of each character is explained in the following tables:
d |
rwx |
rwx |
rwx |
+ |
The file type, technically not part of its permissions. See info ls -n "What information is listed" for an explanation of the possible values., |
los permisos que el propietario tiene sobre el archivo, se explican a continuación. | los permisos que el grupo tiene sobre el archivo, que se explican a continuación. | los permisos que todos los demás usuarios tienen sobre el archivo, se explican a continuación. | un carácter único que especifica si se aplica un método de acceso alternativo al archivo. Cuando este carácter es un espacio, no hay un método de acceso alternativo. Un carácter . indica un archivo con un contexto de seguridad, pero no otro método de acceso alternativo., Un archivo con cualquier otra combinación de métodos de acceso alternativos se marca con un carácter + , por ejemplo en el caso de las listas de control de acceso., |
Cada uno de los tres permiso tríadas (rwx
en el ejemplo anterior) puede estar compuesta de los siguientes caracteres:
Personaje | Efecto en los archivos | Efecto en los directorios | |
---|---|---|---|
permiso de Lectura (el primer carácter) | - |
El archivo no se puede leer., | el contenido del directorio no se puede mostrar. |
r |
El archivo se puede leer. | se puede mostrar el contenido del directorio. | |
permiso de Escritura (segundo personaje) | - |
El archivo no puede ser modificado. | el contenido del directorio no se puede modificar. |
w |
El archivo puede ser modificado., | el contenido del directorio se puede modificar (crear nuevos archivos o carpetas; renombrar o eliminar archivos o carpetas existentes); requiere que también se establezca el permiso de ejecución, de lo contrario este permiso no tiene efecto. | |
permiso de Ejecución (tercer personaje) | - |
El archivo no puede ser ejecutado. | no se puede acceder al directorio con cd. |
x |
El archivo puede ser ejecutado., | se puede acceder al directorio con cd; este es el único bit de permiso que en la práctica se puede considerar «heredado» de los directorios antecesores, de hecho si cualquier carpeta en la ruta no tiene el bit x , el archivo o carpeta final tampoco se puede acceder, independientemente de sus permisos; consulte path_resolution(7) para más información., |
|
s |
el bit setuid cuando se encuentra en la tríada de usuario; el bit setgid cuando se encuentra en la tríada de grupo; no se encuentra en la tríada de otros; también implica que x está establecido. |
||
S |
Mismo s , pero x no está establecido; poco frecuentes en los archivos regulares, e inútil en las carpetas., |
||
t |
The sticky bit; it can only be found in the others triad; it also implies that x is set. |
||
T |
Same as t , but x is not set; rare on regular files, and useless on folders. |
See info Coreutils -n "Mode Structure"
and chmod(1) for more details.,
namei -l path
.ejemplos
veamos algunos ejemplos para aclarar:
drwx------ 6 archie users 4096 Jul 5 17:37 Documents
Archie tiene acceso completo al directorio de documentos. Puede enumerar, crear archivos y renombrar, eliminar cualquier archivo en los documentos, independientemente de los permisos de archivo. Su capacidad para acceder a un archivo depende del permiso del archivo.
dr-x------ 6 archie users 4096 Jul 5 17:37 Documents
Archie tiene acceso completo, excepto que no puede crear, renombrar ni eliminar ningún archivo., Él puede listar los archivos y (si el permiso del archivo permite) puede acceder a un archivo existente en documentos.
d-wx------ 6 archie users 4096 Jul 5 17:37 Documents
Archie no puede hacer ‘ ls ‘ en documentos, pero si conoce el nombre de un archivo existente, puede listarlo, renombrarlo, eliminarlo o (si el permiso del archivo lo autoriza) acceder a él. Además, es capaz de crear nuevos archivos.
d--x------ 6 archie users 4096 Jul 5 17:37 Documents
Archie solo es capaz de (si el permiso de file lo autoriza) acceder a esos archivos en documentos que conoce. No puede enumerar los archivos ya existentes o crear, cambiar el nombre, eliminar cualquiera de ellos.,
debe tener en cuenta que elaboramos los permisos de directorio y no tiene nada que ver con los permisos de archivo individuales. Cuando crea un nuevo archivo, es el directorio el que cambia. Es por eso que necesita permiso de escritura en el directorio.
veamos otro ejemplo, esta vez de un archivo, no es un directorio:
-rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
Aquí podemos ver la primera letra no es de d
pero -
. Así que sabemos que es un archivo, no un directorio., A continuación, los permisos del propietario son rw-
por lo que el propietario tiene la capacidad de leer y escribir, pero no ejecutar. Esto puede parecer extraño que el propietario no tenga los tres permisos, pero el permiso x
no es necesario, ya que es un archivo de texto/datos, para ser leído por un editor de texto como Gedit, EMACS, o software como R, y no un ejecutable por derecho propio (si contenía algo como el código de programación python, entonces muy bien podría ser)., Los permisos del grupo se establecen en r--
, por lo que el grupo tiene la capacidad de leer el archivo pero no escribirlo/editarlo de ninguna manera — es esencialmente como configurar algo a solo lectura. Podemos ver que los mismos permisos se aplican a todos los demás también.
Cambiar permisos
chmod es un comando en Linux y otros sistemas operativos tipo Unix que permite cambiar los permisos (o modo de acceso) de un archivo o directorio.
método de texto
para cambiar los permisos — o el modo de acceso — de un archivo, utilice el comando chmod en una terminal., A continuación se muestra la estructura general del comando:
chmod who=permissions filename
donde who
es cualquiera de un rango de letras, cada una significando a quién se le está dando el permiso. Son como sigue:
-
u
: el usuario que posee el archivo. -
g
: el grupo de usuarios al que pertenece el archivo. -
o
: los otros usuarios, es decir, todos los demás. -
a
: todo lo anterior; use esto en lugar de escribirugo
.,
los permisos son los mismos que se discuten en #Viewing permissions (r
, w
y x
).
ahora eche un vistazo a algunos ejemplos usando este comando., Supongamos que te volviste muy protector del directorio de documentos y quisiste negar a todos menos a ti mismo, permisos para leer, escribir y ejecutar (o en este caso Buscar/mirar) en él:
antes: drwxr-xr-x 6 archie users 4096 Jul 5 17:37 Documents
$ chmod g= Documents$ chmod o= Documents
después: drwx------ 6 archie users 4096 Jul 6 17:32 Documents
aquí, debido a que desea denegar permisos, no coloque ninguna letra después del =
donde se ingresarían los permisos. Ahora puede ver que solo los permisos del propietario son rwx
y todos los demás permisos son -
.,
Esto puede ser revertido con:
Antes de: drwx------ 6 archie users 4096 Jul 6 17:32 Documents
$ chmod g=rx Documents$ chmod o=rx Documents
Después de: drwxr-xr-x 6 archie users 4096 Jul 6 17:32 Documents
En el siguiente ejemplo, desea conceder permisos de lectura y ejecución para el grupo y otros usuarios, así que poner las letras de los permisos (r
y x
) después de la etiqueta =
, sin espacios.
puede simplificar esto para poner más de una letra who
en el mismo comando, e.,g:
$ chmod go=rx Documents
who
cartas o el permiso de letras en un chmod
comando: usted podría tener chmod go=rx file
o chmod og=xr file
. Es todo lo mismo.,ider un segundo ejemplo, supongamos que desea cambiar un archivo foobar
para que tenga permisos de lectura y escritura, y otros usuarios en el grupo users
que pueden ser colegas que trabajan en foobar
, también pueden leer y escribir en él, pero otros usuarios solo pueden leerlo:
antes de: -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod g=rw foobar
después de: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
esto es exactamente como el primer ejemplo, pero con un archivo, no un directorio, y usted otorga permiso de escritura (solo para dar un ejemplo de concesión de cada permiso).,
accesos directos del método de texto
el comando chmod permite agregar y restar permisos de un conjunto existente utilizando +
o -
en lugar de =
. Esto es diferente de los comandos anteriores, que esencialmente re-escribir los permisos (por ejemplo, a cambio de un permiso de r--
a rw-
, usted todavía necesita para incluir r
así como w
después de =
en el comando chmod invocación., Si te lo perdiste r
, se perdería el r
permiso, ya que están siendo re-escrito con el =
. Usando +
y -
evita esto agregando o quitando del conjunto actual de permisos).,>Antes: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod a-w foobar
después: -r--r--r-- 1 archie users 5120 Jun 27 08:28 foobar
un atajo diferente es el especial X
mode: este no es un modo de archivo real, pero a menudo se usa junto con la opción -R
para establecer el bit ejecutable solo para directorios, y dejarlo sin cambios para archivos regulares, por ejemplo:
$ chmod -R a+rX ./data/
copiar permisos
es posible decirle a chmod que copie los permisos de una clase, digamos el propietario, y dar esos mismos permisos a group o incluso a all., Para ello, en lugar de poner r
, w
o x
después de =
, dicho de otra que de la carta. por ejemplo:
antes: -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod g=u foobar
después: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
Este comando esencialmente se traduce en «cambiar los permisos del grupo (g=
), para ser el mismo que el usuario propietario (=u
). Tenga en cuenta que no puede copiar un conjunto de permisos ni conceder otros nuevos, p. ej.,:
$ chmod g=wu foobar
En ese caso chmod tirar un error.
método numérico
chmod también puede establecer permisos usando números.
usar números es otro método que le permite editar los permisos de los tres propietarios, grupos y otros al mismo tiempo, así como los bits setuid, setgid y sticky. Esta estructura básica del código es la siguiente:
$ chmod xxx filename
donde xxx
es un número de 3 dígitos donde cada dígito puede ser de 0 a 7., El primer dígito se aplica a los permisos para el propietario, el segundo dígito se aplica a los permisos para el grupo, y el tercer dígito se aplica a los permisos para todos los demás.
en esta notación numérica, los valores r
, w
, y x
tienen su propio valor numérico:
r=4w=2x=1
para obtener un número de 3 dígitos debe considerar qué permisos desea que tengan el propietario, el grupo y todos los demás, y luego sumar sus valores., si desea que el grupo y todos los demás hayan leído y ejecutado los permisos, se le ocurrirían los valores numéricos como:
- propietario:
rwx
=4+2+1=7 - Group:
r-x
=4+0+1=5 - Other:
r-x
=4+0+1=5
$ chmod 755 filename
esto es el equivalente de usar lo siguiente:
$ chmod u=rwx filename$ chmod go=rx filename
para ver los permisos existentes de un archivo o directorio en forma numérica, use el comando stat(1):
$ stat -c %a filename
%una opción especifica la salida en forma numérica.,
La mayoría de las carpetas y directorios están configurados en 755
para permitir la lectura, escritura y ejecución al propietario, pero denegar la escritura a todos los demás, y los archivos son normalmente 644
para permitir la lectura y escritura para el propietario pero solo lectura para todos los demás; consulte la última nota sobre la falta de permisos x
archivos no ejecutables: es lo mismo aquí.,
para ver esto en acción con ejemplos considere el ejemplo anterior que se ha utilizado pero con este método numérico aplicado en su lugar:
antes: -rw-r--r-- 1 archie users 5120 Jun 27 08:28 foobar
$ chmod 664 foobar
después: -rw-rw-r-- 1 archie users 5120 Jun 27 08:28 foobar
Si esto fuera un ejecutable el número sería 774
si desea otorgar permiso ejecutable al propietario y al grupo. Alternativamente, si desea que todos solo tengan permiso de lectura, el número sería 444
., Tratar r
como 4, w
como 2, y x
como 1 es probablemente la forma más fácil de calcular los valores numéricos para usar chmod xxx filename
, pero también hay un método binario, donde cada permiso tiene número, y luego que a su vez se convierte en un número. Es un poco más complicado, pero aquí se incluye para completar.,
considere este conjunto de permisos:
-rwxr-xr--
Si pone un 1 bajo cada permiso concedido, y un 0 por cada uno no concedido, el resultado sería algo como esto:
-rwxrwxr-x 111111101
puede convertir estos números binarios:
000=0 100=4001=1 101=5010=2 110=6011=3 111=7
el valor de lo anterior sería por lo tanto 775.
considere que queríamos eliminar el permiso de escritura del grupo:
-rwxr-xr-x 111101101
por lo tanto, el valor sería 755 y usaría chmod 755 filename
para eliminar el permiso de escritura., Notará que obtiene el mismo número de tres dígitos sin importar el método que use. Si utiliza texto o números dependerá de las preferencias personales y la velocidad de escritura. Cuando desea restaurar un directorio o archivo a los permisos predeterminados, por ejemplo, permiso de lectura y escritura (y ejecución) para el propietario, pero denegar el permiso de escritura a todos los demás, puede ser más rápido usar chmod 755/644 filename
. Sin embargo, si está cambiando los permisos a algo fuera de la norma, puede ser más simple y rápido usar el método de texto en lugar de tratar de convertirlo en números, lo que puede conducir a un error., Se podría argumentar que no hay ninguna diferencia significativa real en la velocidad de cualquiera de los métodos para un usuario que solo necesita usar chmod en ocasiones.
También puede usar el método numérico para establecer los bits setuid
, setgid
y sticky
utilizando cuatro dígitos.
setuid=4setgid=2sticky=1
por ejemplo, chmod 2777 filename
establecerá bits de lectura/escritura/ejecutables para todos y también habilitará el bit setgid
.
Bulk chmod
generalmente los directorios y archivos no deben tener los mismos permisos., Si es necesario modificar de forma masiva un árbol de directorios, utilice find para modificar selectivamente uno u otro.
para chmod solo directorios a 755:
$ find directory -type d -exec chmod 755 {} +
para chmod solo archivos a 644:
$ find directory -type f -exec chmod 644 {} +
cambiar la propiedad
chown cambia el propietario de un archivo o directorio, que es más rápido y más fácil que alterar los permisos en algunos casos.
considere el siguiente ejemplo, hacer una nueva partición con GParted para los datos de copia de seguridad. Gparted hace todo esto como root por lo que todo pertenece a root por defecto., Todo esto está muy bien, pero cuando se trata de escribir datos en la partición montada, se deniega el permiso para los usuarios regulares.
brw-rw---- 1 root disk 8, 9 Jul 6 16:02 sda9drwxr-xr-x 5 root root 4096 Jul 6 16:01 Backup
como puede ver, el dispositivo en /dev
es propiedad de root, al igual que la ubicación de montaje (/media/Backup
)., Para cambiar el propietario de la ubicación de montaje se puede hacer lo siguiente:
antes: drwxr-xr-x 5 root root 4096 Jul 6 16:01 Backup
# chown archie /media/Backup
después: drwxr-xr-x 5 archie root 4096 Jul 6 16:01 Backup
ahora la partición puede tener datos escritos en ella por el nuevo propietario, archie, permisos (como la tríada de propietario ya tenía permisos rwx
).
-
chown
siempre borra los bits setuid y setgid. - Los usuarios no root no pueden usar
chown
para» regalar » los archivos que poseen a otro usuario.,
listas de control de acceso
Las listas de control de acceso proporcionan un mecanismo de permisos adicional y más flexible para los sistemas de archivos al permitir establecer permisos para cualquier usuario o grupo A CUALQUIER archivo.
Umask
la utilidad umask se utiliza para controlar la máscara de modo de creación de archivos, que determina el valor inicial de los bits de permiso de archivo para los archivos recién creados.,
atributos de archivo
Además de los bits de modo de archivo que controlan los permisos de lectura, escritura y ejecución de usuarios y grupos, varios sistemas de archivos admiten atributos de archivo que permiten una mayor personalización de las operaciones de archivo permitidas. Esta sección describe algunos de estos atributos y cómo trabajar con ellos.
chattr y lsattr
para sistemas de archivos ext2 y ext3, el paquete e2fsprogs contiene los programas lsattr y chattr que listan y cambian los atributos de un archivo, respectivamente.,/li>
u
: imborrableA
: no atime actualizacionesC
: no se copia en escrituraD
: sincrónico directorio de actualizacionesS
: las actualizaciones síncronasT
: parte superior de la jerarquía de directoriosPor ejemplo, si desea establecer la inmutable poco en algún archivo, utilice el comando siguiente:
# chattr +i /path/to/file
Para eliminar un atributo de un archivo que acaba de cambiar +
a -
.,
atributos extendidos
de xattr (7): «los atributos extendidos son nombres: pares de valores asociados permanentemente con archivos y directorios». Hay cuatro clases de atributos extendidos: seguridad, sistema, confianza y usuario.
los atributos extendidos también se utilizan para establecer capacidades.
user extended attributes
User extended attributes se pueden usar para almacenar información arbitraria sobre un archivo., To create one:
$ setfattr -n user.checksum -v "3baf9ebce4c664ca8d9e5f6314fb47fb" foo.txt
Use getfattr to display extended attributes:
$ getfattr -d foo.txt
# file: foo.txtuser.,3de557528">
--preserve=mode,ownership,timestamps,xattr
mv
tar
--xattrs
for creation and extractionbsdtar
-p
for extraction--xattrs
- mv silently discards extended attributes when the target file system does not support them.,
para preservar atributos extendidos con editores de texto, debe configurarlos para truncar archivos al guardar en lugar de usar rename(2).
consejos y trucos
preservar la raíz
utilice la bandera--preserve-root
para evitar quechmod
actúe recursivamente en/
. Esto puede, por ejemplo, evitar que uno elimine el bit ejecutable en todo el sistema y, por lo tanto, rompa el sistema. Para usar este indicador cada vez, establézcalo dentro de un alias. Véase también .,
ver también
- wikipedia: Chattr
- Linux File Permission Confusion
- Linux File Permission Confusion part 2
- wikipedia: Extended file attributes # Linux
- Extended attributes: the good, the not so good, the bad.
- copia de seguridad y restaurar permisos de archivos en Linux
- ¿Por qué es «chmod-R 777 /» destructivo?