文件夹的动态权限

文件夹的动态权限

事情是这样的。我在 win10 上使用 VMbox 运行 debian 10。有点习惯 UNIX 环境。我使用 vsftpd 在虚拟 Debian 和我的实际 WWin10 之间传输文件。我主要在 root 下执行操作,但我有 alex 用户用于我的 FTP 传输。我想做的是:我有一个文件夹 /home/alex/STUFFMAGREGA,我将要传输到我的 Win10 的文件存储在其中,但问题是,当我将一些日志从 /var/log 复制到 root 下的该文件夹时,我无法通过 FTP 以 alex 的身份访问它们,因为我没有正确的权限。

我怎样才能使任何文件最终位于 /home/alex/STUFFMAGREGA 时,它就变成 alex 的?

我尝试过的事情:

  1. 尝试创建一个包含 root 和 alex 的组,并使其对目录具有相同的权限。

     sudo mkdir -p /home/alex/STUFFMAGREGA 
     sudo groupadd share
     sudo usermod -a -G share alex
     sudo usermod -a -G share root
     sudo chgrp -R share /home/alex/STUFFMAGREGA 
     sudo chmod -R 2775 /home/alex/STUFFMAGREGA 
    

    没用。我以 Root 身份将日志从 /var/log 复制到 /home/alex/STUFFMAGREGA,然后以 Alex 身份访问此 ftp 文件夹,但我打不开文件。我只能将其删除。

  2. chmod g+s alex /home/alex/STUFFMAGREGA 或者 chmod g+s /home/alex/STUFFMAGREGA

    这里我尝试让该目录中的所有新文件继承该文件夹的设置权限。

    没有用。

关于如何使其发挥作用,您有什么想法吗?

答案1

chmod g+s只会让新文件继承“群组所有权”,但实际上不会继承群组权限– 这些仍由 umask 决定。它与 Windows 的 ACL 继承相差甚远。


然而,Linux具有支持继承的 ACL 形式,可使用setfacl工具访问。文件夹可以有两种 ACL 条目:“普通”(影响目录本身)和“默认”(由新文件和子文件夹继承)。

您可以通过两种方式实现此目的。您可以继续使用 g+s 进行组继承,并仅使用 ACL 强制文件继承默认组权限:

chown :share $dir
chmod g+s $dir
setfacl -d -m "group::rwX" $dir

或者,您可以删除 g+s 并指定直接授予特定组访问权限的 ACL 条目(作为“有效”条目和“可继承”条目):

setfacl -R -m "group:share:rwX" $dir                # Sets the effective ACL.
setfacl -R -d -m "group:share:rwX" $dir             # Sets the inheritable ACL.

简写(g:用于组、d:用于默认/可继承):

setfacl -R -m "g:share:rwX,d:g:share:rwX" $dir

相关内容