En sistemas operativos tipo Unix, el comando setfacl establece listas de control de acceso a archivos.
Este documento cubre la versión de Linux de setfacl.
Sintaxis
setfacl [-bkndRLPvh] [{-m | -x} acl_spec] [{-M | -X} acl_file] archivo ...
setfacl --restore = archivo
Descripción
La utilidad setfacl establece listas de control de acceso (ACL) de archivos y directorios. En la línea de comando, una secuencia de comandos es seguida por una secuencia de archivos (que a su vez puede ser seguida por otra secuencia de comandos, y así sucesivamente).
Las opciones -m y -x esperan una ACL en la línea de comando. Múltiples entradas de ACL están separadas por comas (","). Las opciones -M y -X leen una ACL de un archivo o de una entrada estándar. El formato de entrada de ACL se describe en la sección Entradas de ACL, a continuación.
Las opciones –set y –set-file establecen la ACL de un archivo o directorio. Se reemplaza la ACL anterior. Las entradas de ACL para esta operación deben incluir permisos.
Las opciones -m (–modify) y -M (–modify-file) modifican la ACL de un archivo o directorio. Las entradas de ACL para esta operación deben incluir permisos.
Las opciones -x (–remove) y -X (–remove-file) eliminan las entradas de ACL. No es un error eliminar una entrada que no existe. Solo se aceptan entradas de ACL sin el campo de permisos como parámetros, a menos que se defina la variable de entorno POSIXLY_CORRECT.
Al leer archivos usando las opciones -M y -X, setfacl acepta la salida producida por getfacl. Hay como máximo una entrada de ACL por línea. Después de un signo de número ("#"), todo hasta el final de la línea se trata como un comentario.
Si setfacl se usa en un sistema de archivos que no admite ACL, setfacl funciona en los bits de permiso del modo de archivo. Si la ACL no encaja completamente en los bits de permiso, setfacl modifica los bits de permiso del modo de archivo para reflejar la ACL lo más fielmente posible, escribe un mensaje de error al error estándar y regresa con un estado de salida mayor que 0.
El propietario del archivo y los procesos capaces de CAP_FOWNER tienen derecho a modificar las ACL de un archivo, lo que es análogo a los permisos necesarios para acceder al modo de archivo.
En los sistemas Linux actuales, root es el único usuario con la capacidad CAP_FOWNER, por lo que debe ser el superusuario para usar setfacl si no es el propietario del archivo.
-b, –remove-all | Elimine todas las entradas de ACL extendidas. Se conservan las entradas de ACL base del propietario, grupo y otros. |
-k, –remove-default | Elimine la ACL predeterminada. Si no existe una ACL predeterminada, no se emiten advertencias. |
-n, –no-mask | No vuelva a calcular la máscara de derechos efectivos. El comportamiento predeterminado de setfacl es recalcular la entrada de la máscara de ACL, a menos que se proporcione explícitamente una entrada de máscara. La entrada de máscara se establece en la unión de todos los permisos del grupo propietario y todas las entradas de usuarios y grupos nombrados. (Estas son exactamente las entradas afectadas por la entrada de máscara). |
–máscara | Vuelva a calcular la máscara de derechos efectiva, incluso si se proporcionó explícitamente una entrada de máscara de ACL. (Ver la opción -n.) |
-d, –default | Todas las operaciones se aplican a la ACL predeterminada. Las entradas de ACL regulares en el conjunto de entrada se promueven a entradas de ACL predeterminadas. Las entradas de ACL predeterminadas en el conjunto de entrada se descartan. (Se emite una advertencia si eso sucede). |
–restore = archivo | Restaurar una copia de seguridad de permisos creada por "getfacl -R" o similar. Todos los permisos de un subárbol de directorio completo se restauran utilizando este mecanismo. Si la entrada contiene comentarios de propietario o comentarios de grupo, setfacl intenta restaurar el propietario y el grupo propietario. Si la entrada contiene comentarios de banderas (que definen los bits setuid, setgid y sticky), setfacl establece esos tres bits en consecuencia; de lo contrario, los borra. Esta opción no se puede mezclar con otras opciones excepto "–test". |
–prueba | Modo de prueba. En lugar de cambiar las ACL de cualquier archivo, se enumeran las ACL resultantes. |
-R, –recursivo | Aplicar operaciones a todos los archivos y directorios de forma recursiva. Esta opción no se puede mezclar con "–restore". |
-L, –lógico | "Paseo lógico": siga enlaces simbólicos a directorios. El comportamiento predeterminado es seguir los argumentos de los enlaces simbólicos y omitir los enlaces simbólicos encontrados en los subdirectorios. Solo efectivo en combinación con -R. Esta opción no se puede mezclar con "–restore". |
-P, –físico | "Paseo físico": no siga enlaces simbólicos a directorios. Esto también omite los argumentos de enlaces simbólicos. Solo efectivo en combinación con -R. Esta opción no se puede mezclar con "–restore". |
-v, –version | Imprima la versión de setfacl y salga. |
-h, –ayuda | Imprima un mensaje de ayuda que explique las opciones de la línea de comandos. |
— | Un guión doble marca el final de las opciones de línea de comando; Todos los parámetros restantes se interpretan como nombres de archivo. Esta opción es especialmente útil para los nombres de archivo que comienzan con un guión. |
– | Si el parámetro del nombre del archivo es un solo guión, setfacl lee una lista de archivos desde la entrada estándar. |
Entradas de ACL
setfacl reconoce los siguientes formatos de entrada de ACL (los espacios en los siguientes formatos son opcionales, pero se han incluido para su legibilidad):
[d [por defecto]:] [u [ser]:] uid [: permisos] | Permisos del usuario con ID de usuario uid, o permisos del propietario del archivo si uid está vacío. |
[d [por defecto]:] g [roup]: gid [: perms] | Permisos del grupo con ID de grupo gid, o permisos del grupo propietario si gid está vacío. |
[d [por defecto]:] m [preguntar] [:] [: permisos] | Máscara de derechos efectivos. |
[d [por defecto]:] o [allí] [:] [: permisos] | Permisos de otros. |
Se ignora el espacio en blanco entre los caracteres delimitadores y los caracteres no delimitadores.
Las entradas de ACL adecuadas, incluidos los permisos, se utilizan en operaciones de modificación y configuración (opciones -m, -M, –set y –set-file). Las entradas sin el campo de permisos se utilizan para eliminar entradas (opciones -x y -X).
Para uid y gid puede especificar un nombre o un número.
El campo de permisos es una combinación de caracteres que indican los permisos: leer ("r"), escribir ("w"), ejecutar ("x") o "ejecutar solo si el archivo es un directorio o ya tiene permiso de ejecución para algún usuario "(mayúscula" X "). Alternativamente, el campo de permisos puede ser un dígito octal ("0" – "7").
Entradas creadas automáticamente
Inicialmente, los archivos y directorios contienen solo las tres entradas básicas de ACL para el propietario, el grupo y otros. Hay algunas reglas que deben cumplirse para que una ACL sea válida:
- Las tres entradas base no se pueden eliminar. Debe haber exactamente una entrada de cada uno de estos tipos de entrada base.
- Siempre que una ACL contenga entradas de usuario con nombre u objetos de grupo con nombre, también debe contener una máscara de derechos efectiva.
- Siempre que una ACL contenga entradas de ACL predeterminadas, también deben existir las tres entradas base de ACL predeterminadas (propietario predeterminado, grupo predeterminado y otros predeterminados).
- Siempre que una ACL predeterminada contenga entradas de usuario con nombre u objetos de grupo con nombre, también debe contener una máscara de derechos efectiva predeterminada.
Para ayudar al usuario a garantizar estas reglas, setfacl crea entradas a partir de entradas existentes en las siguientes condiciones:
- Si una ACL contiene entradas de usuario con nombre o de grupo con nombre, y no existe una entrada de máscara, se crea una entrada de máscara que contiene los mismos permisos que la entrada de grupo. A menos que se proporcione la opción -n, los permisos de la entrada de máscara se ajustan aún más para incluir la unión de todos los permisos afectados por la entrada de máscara. (Ver la descripción de la opción -n).
- Si se crea una entrada de ACL predeterminada y la ACL predeterminada no contiene ninguna entrada de propietario, grupo propietario u otros, se agrega una copia del propietario de ACL, grupo propietario u otra entrada a la ACL predeterminada.
- Si una ACL predeterminada contiene entradas de usuario con nombre o entradas de grupo con nombre, y no existe una entrada de máscara, se agrega una entrada de máscara que contiene los mismos permisos que la entrada de grupo de la ACL predeterminada. A menos que se proporcione la opción -n, los permisos de la entrada de máscara se ajustan aún más para incluir la unión de todos los permisos afectados por la entrada de máscara. (Ver la descripción de la opción -n, arriba).
Ejemplos
Archivo setfacl -mu: lisa: r
Otorgue al usuario lisa acceso de lectura al archivo.
setfacl -mm :: archivo rx
Revoque el acceso de escritura de todos los grupos y todos los usuarios nombrados (utilizando la máscara de derechos efectiva) para el archivo de archivo.
setfacl -xg: archivo de personal
Elimine la entrada de grupo para el personal del grupo de la ACL del archivo.
getfacl file1 | setfacl --set-file = - file2
Copie la ACL del archivo1 en el archivo2.
getfacl - dir acceso | setfacl -d -M- dir
Copie la ACL de acceso en la ACL predeterminada.
Comandos relacionados
chmod: cambia los permisos de archivos o directorios. getfacl: muestra las listas de control de acceso a archivos. umask: obtiene o establece la máscara de creación del modo de archivo.