如何使用 setfacl 为文件和文件夹设置不同的默认权限?

如何使用 setfacl 为文件和文件夹设置不同的默认权限?

我有一个由 set 拥有的文件夹,/stuff因此所有新文件夹的组都设置为.root:stuffsetgidstuff

我想要这样:

  • 新文件有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

相关内容