如何授予读写权限但不删除文件

use*_*898 12 permissions files

我想让用户能够在其他用户目录中创建写入和读取文件,但不能选择在创建后删除文件(粘滞位在这里不起作用......)例如:

我有manager 目录的用户repository
我有用户worker1需要写入文件/manager/repository但无法删除文件
我有用户worker2需要写入文件/manager/repository 但无法删除文件
我有用户worker3需要写入文件/manager/repository 但不能删除文件

worker 1-2-3只有在创建后无法删除这些文件manager,并root可以删除这些文件worker 1-2-3创建。

我试过几个chownchmod技巧与应用粘着位没有成功。

cou*_*ode 8

与 Windows 不同,Unix/Linux 下没有明显的删除权限。删除(或创建或重命名)文件的权利绑定到包含目录。删除工作人员的写权限,/manager/repository/以拒绝工作人员创建、删除和重命名文件。

请注意,不能允许创建文件但拒绝删除它们。


Rah*_*hul 7

首先确保您的系统中启用了 ACL,然后运行此命令

setfacl -d -R -m user::rwx,user:worker1:---,user:worker2:---,user:worker3:--- \
/manager/repository
Run Code Online (Sandbox Code Playgroud)

这个怎么运作

  • 此命令将为目录的所有者授予读、写和执行权限/manager/repository。它将撤销worker1,worker2和 的所有权限worker3

  • 这将授予其他用户读写访问权限,但将拒绝删除访问权限。


来自man setfacl

-d, --default
       All  operations  apply to the Default ACL.

-R, --recursive
       Apply operations to all files and directories recursively.

-m, --modify
       Options to modify the ACL of a file or directory.
Run Code Online (Sandbox Code Playgroud)

  • 这不会仍然允许有人在这里写一个空文件吗?像 `echo " " > $file` 会用 " " 破坏文件内容,这在技术上是写,但有效地删除了内容。看起来像 svn 这样的实际回购在这里是最好的选择。 (5认同)