事情是这样的。我在 win10 上使用 VMbox 运行 debian 10。有点习惯 UNIX 环境。我使用 vsftpd 在虚拟 Debian 和我的实际 WWin10 之间传输文件。我主要在 root 下执行操作,但我有 alex 用户用于我的 FTP 传输。我想做的是:我有一个文件夹 /home/alex/STUFFMAGREGA,我将要传输到我的 Win10 的文件存储在其中,但问题是,当我将一些日志从 /var/log 复制到 root 下的该文件夹时,我无法通过 FTP 以 alex 的身份访问它们,因为我没有正确的权限。
我怎样才能使任何文件最终位于 /home/alex/STUFFMAGREGA 时,它就变成 alex 的?
我尝试过的事情:
尝试创建一个包含 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 文件夹,但我打不开文件。我只能将其删除。
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