我在目录上定义了一些ACL,如下所示:
# owner: root # group: root user::rwx group::r-- mask::r-x other::r-- default:user::r-- default:group::r-- default:mask::r-x default:other::r--
我希望在该文件夹中创建的任何新文件都是u:apache:r–以及任何新目录:uache:r-x.如何使用ACL指定该意图?
我已经尝试过-dm u:apache:rX,与rx相比,它似乎没有做任何不同的事情
overt htdocs # getfacl . # file: . # owner: root # group: root user::rwx user:apache:r-- group::r-- mask::r-x other::r-- default:user::r-- default:user:apache:r-- default:group::r-- default:mask::r-- default:other::r-- overt htdocs # setfacl -dm u:apache:rx . overt htdocs # touch blah.txt overt htdocs # getfacl blah.txt # file: blah.txt # owner: root # group: root user::r-- user:apache:r-x #effective:r-- group::r-- mask::r-- other::r-- overt htdocs # rm blah.txt overt htdocs # setfacl -dm u:apache:rX . overt htdocs # touch blah.txt overt htdocs # getfacl blah.txt # file: blah.txt # owner: root # group: root user::r-- user:apache:r-x #effective:r-- group::r-- mask::r-- other::r--
大写X权限似乎仅对设置当前权限有用,而不是用于设置默认权限:
overt htdocs # setfacl -x u:apache blah.txt overt htdocs # getfacl blah.txt # file: blah.txt # owner: root # group: root user::r-- group::r-- mask::r-- other::r-- overt htdocs # setfacl -m u:apache:rX blah.txt overt htdocs # getfacl blah.txt # file: blah.txt # owner: root # group: root user::r-- user:apache:r-- group::r-- mask::r-- other::r--
解决方法
好吧,但你的例子完全符合你的要求;)
看看第二个:
overt htdocs # setfacl -dm u:apache:rx . overt htdocs # touch blah.txt overt htdocs # getfacl blah.txt # file: blah.txt # owner: root # group: root user::r-- user:apache:r-x #effective:r-- group::r-- mask::r-- other::r--
重要的是:
user:apache:r-x #effective:r–
即使acl设置为r-x,它实际上也是r–用于文件.这是因为面具.
如果用户使用rw-权限为用户创建了掩码,则掩码将始终仅为rw-. (我不是100%肯定,但掩码不能比基本权限更少限制).
因此,有效地获得r– for files和r-x for directories.Because创建的目录将具有user:r-x – >掩模将是r-x – >有效许可将是r-x.对于文件:它们将具有r–所以掩码将是r–并且ACL的有效权限也将是r–.(如果你创建一个文件并给它一个用户:: r-x权限,那么掩码将被修改,用户形成的acl也将获得x)