linux扩展ACL和“常规”权限的干扰方面有些奇怪

我有一些遗留代码检查某些文件是只读的,只有它的所有者才能读取,即权限设置为0400.我还需要给系统中的其他用户提供对此文件的只读访问权限。 我试图设置扩展的ACL,但是这也以一种奇怪的方式改变了“常规”权限位:

$ 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 

在此之后,遗留代码开始抱怨该文件是组可读的(而实际上不是!)

是否有可能设置扩展ACL的方式,其他用户也将具有只读访问权限,而该文件似乎只有0400“常规”的权限?

我们在使用Linux ACL的实验中看到过类似的情况,特别是通过Samba。 但是在大多数情况下,即使常规权限/文件模式位以奇怪的方式改变,系统仍然按预期进行总体操作。

我记得在某处读过(不记得在哪里,对不起),当创build文件时(可能通过Samba),直到数据写入文件,ACL权限才被正确地反映在模式位中。 这会影响使用例如触摸创build的文件。

还有一些需要考虑的是你是否想要设置默认的ACL。

在创build具有受ACL保护的文件的新目录时,我们使用类似的东西; 最后一个命令(使用getfacl传送到setfacl中)复制当前设置的ACL,作为在此目录中创build的新文件的默认ACL:

 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 -mu:$username:rwx /home/data/private/$datadir setfacl --recursive -mg:RGLeader:rx /home/data/private/$datadir setfacl --recursive -mu: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