我有一个由 set 拥有的文件夹,/stuff
因此所有新文件夹的组都设置为.root:stuff
setgid
stuff
我想要这样:
- 新文件有
rw-rw----
:- 用户: 读和写
- 团体: 读和写
- 其他: 没有任何
- 新文件夹有
rwxrwx---
:- 用户:读、写、执行
- 团体:读、写、执行
- 其他: 没有任何
如果我设置默认 ACL,setfacl
那么它似乎适用于文件和文件夹。对我来说,这很好其他因为文件和文件夹都没有权限:
setfacl -d -m o::---- /stuff
但我做什么用户和团体?如果我执行类似上面的操作,那么它将在所有文件和文件夹上设置。
而且我无法使用umask
。
我有一个共享驱动器。我正在努力让人们stuff
可以读/写/执行,但其他人(其他)不能。我想确保默认情况下文件不会设置执行位,无论帐户是什么umask
。
答案1
无法使用区分文件和目录设定值仅有的。相反,您可以使用以下方法解决该问题inotify 工具检测新创建的文件/目录,然后递归地为每个文件/目录应用正确的 ACL:
1-您必须先安装 inotify-tools 软件包。
2-恢复默认的/stuff目录acls
sudo setfacl -bn /stuff
3-设置GID
sudo chmod g+s /stuff
4- 在后台执行以下脚本以进行测试,为了永久解决方案,请将其包装在服务中。
#!/bin/bash
sudo inotifywait -m -r -e create --format '%w%f' /stuff | while read NEW
do
# when a new dir created
if [ -d "$NEW" ]; then
sudo setfacl -m u::rwx "$NEW"
sudo setfacl -m g::rwx "$NEW"
# when a new file created
elif [ -f "$NEW" ]; then
sudo setfacl -m u::rw "$NEW"
sudo setfacl -m g::rw "$NEW"
fi
# setting no permissions for others
sudo setfacl -m o:--- "$NEW"
done