rarezas en la interferencia de las ACL extendidas de Linux y los permisos "regulares"

rarezas en la interferencia de las ACL extendidas de Linux y los permisos "regulares"

Tengo un código heredado que verifica que algún archivo sea de solo lectura y solo legible por su propietario, es decir, permisos establecidos en 0400. También necesito otorgar acceso de solo lectura a este archivo a algún otro usuario en el sistema. Estoy intentando configurar ACL extendidas, pero esto también cambia los bits de permiso "normales" de una manera extraña:

$ ls -l hostkey.pem 
-r-------- 1 root root 0 Jun  7 23:34 hostkey.pem
$ setfacl -m user:apache:r hostkey.pem 
$ getfacl hostkey.pem 
# file: hostkey.pem
# owner: root
# group: root
user::r--
user:apache:r--
group::---
mask::r--
other::---

$ ls -l hostkey.pem 
-r--r-----+ 1 root root 0 Jun  7 23:34 hostkey.pem

Y después de esto, el código heredado comienza a quejarse de que el archivo es legible por el grupo (¡aunque en realidad no lo es!)

¿Es posible configurar las ACL extendidas de tal manera que algún otro usuario también tenga acceso de solo lectura, mientras que el archivo parecerá tener solo 0400 permisos "normales"?

Respuesta1

Hemos visto algo como esto en nuestros experimentos con ACL de Linux, especialmente a través de Samba. Pero en la mayoría de los casos, aunque los bits regulares de permiso/modo de archivo se cambian de maneras extrañas, el sistema sigue funcionando en general según lo previsto.

Recuerdo haber leído en alguna parte (no recuerdo dónde, lo siento) que al crear archivos (posiblemente a través de Samba) los permisos de ACL no se reflejaban correctamente en los bits de modo hasta que se escribían los datos en el archivo. Esto afectaría a los archivos creados usando, por ejemplo, el tacto.

Otra cosa a considerar es si es posible que desee configurar ACL predeterminadas.

Usamos algo como esto al crear un nuevo directorio con archivos protegidos por ACL; El último comando, con getfacl canalizado a setfacl, copia las ACL actualmente configuradas para usarlas como ACL predeterminadas para los nuevos archivos creados en este directorio:

chown --recursive $username:$userrole /home/data/private/$datadir
chmod --recursive u=rwx,g=,o= /home/data/private/$datadir

# remove previous ACLs
setfacl --recursive --remove-all /home/data/private/$datadir

# User/group access for owner, group leader and web server
setfacl --recursive -m u:$username:rwx /home/data/private/$datadir
setfacl --recursive -m g:RGLeader:rx /home/data/private/$datadir
setfacl --recursive -m u:www-data:rwx /home/data/private/$datadir

# Copy access modes to default access modes
getfacl --access /home/data/private/$datadir | setfacl --recursive -d -M- /home/data/private/$datadir

información relacionada