如何为目录和文件设置不同的Linux默认ACL

我在目录上定义了一些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)

相关文章

1、安装Apache。 1)执行如下命令,安装Apache服务及其扩展包...
一、先说一下用ansible批量采集机器信息的实现办法: 1、先把...
安装配置 1. 安装vsftpd 检查是否安装了vsftpd # rpm -qa | ...
如何抑制stable_secret读取关键的“net.ipv6.conf.all.stabl...
1 删除0字节文件 find -type f -size 0 -exec rm -rf {} ...
## 步骤 1:安装必要的软件包 首先,需要确保系统已安装 `dh...