![Linux:组权限用户有读写权限但不能删除彼此的文件](https://linux22.com/image/1491406/Linux%EF%BC%9A%E7%BB%84%E6%9D%83%E9%99%90%E7%94%A8%E6%88%B7%E6%9C%89%E8%AF%BB%E5%86%99%E6%9D%83%E9%99%90%E4%BD%86%E4%B8%8D%E8%83%BD%E5%88%A0%E9%99%A4%E5%BD%BC%E6%AD%A4%E7%9A%84%E6%96%87%E4%BB%B6.png)
我想在我的 Debian 服务器上创建一个共享文件夹,以便用户可以创建和编辑文件,但不能删除该目录中彼此的文件。
/home/sharedfolder
能够读写映射中的文件的用户属于以下组:work
我尝试了一些类似的权限命令,但仍然没有成功:
setfacl -dm u::rwx,g::rwx,o::r /shared/directory
我怎样才能实现我的愿望?
答案1
共享文件夹的经典解决方案是粘性位,它可以防止删除其他用户的文件。最好的例子是/tmp目录
因此设置以下所有权:
chown root:work /shared/directory
和权限:
chmod 3775 /shared/directory
我推荐以下 POSIX ACL:
setfacl -dm u::rwX,g::rwX,o::rX /shared/directory
只有组内的用户work
可以编辑新创建的文件和目录,但不能删除其他用户的文件。
对 Dipanshu Chaubey 五年多后的解释:)
-d
– 中新创建文件和文件夹的默认选项/shared/directory
。这意味着指定的默认 ACL 将应用于此文件夹内所有新创建的文件和文件夹。此选项不适用于文件。您还可以以以下形式指定此选项d:u:admin:rw
:
setfacl -m d:u:admin:rw,g::rwX,o::rX /shared/directory
默认选项仅适用于用户权限,而不适用于组或其他人的权限。
u::rwX
– 此处省略用户名。这意味着新文件或文件夹的附加 ACL 将与创建者的所有权一起应用(请参阅我解释末尾的注释)。组也是如此。如果文件存在,则附加 ACL 将应用于文件的所有者(或组)。显然,其他后面总是跟两个冒号。
x
–small x
表示文件的可执行位和文件夹的可扩展性。通常这不是您想要的,尤其是在使用–R
选项递归处理文件和文件夹时。
X
–big X
有两个用途。对于文件,如果现有文件未设置可执行位,则使用它。如果可执行位一直设置,则它保持不变。对于文件夹,它仅用于向文件夹添加 x 位。
另外,需要澄清的是,所有新创建的文件和文件夹都将在您的系统中以创建者的用户和组权限显示,但此外,所有这些人员都将承担额外的 ACL,这些 ACL+
在您的终端中的权限后用符号表示,如下所示
drwxrwsr-t+ admin admin
-rw-rw-r--+ admin vagrant
因此,仅凭一眼是不可能知道真正的权限的。您必须使用getfacl file
命令来获取所有额外的 ACL 信息。
答案2
chmod 1776 /home/sharedfolder 来自 root 用户
:)