我创建了一个名为的目录demo
,并授予名为的用户读取、写入和执行权限demoUser
。
我希望用户能够读取、写入和执行demo
目录中的文件,但不能删除任何文件。这可能吗?
我尝试了一种技术,创建了 3 个组:reader
和。我使用editor
以下方法admin
授予组读取权限reader
和编辑权限editor
:
setfacl OPTION X:NAME:Y /DIRECTORY
现在我添加到了组demoUser
中editor
。用户可以读取,写入和执行文件,但也可以删除文件。
有没有什么办法demoUser
可以不删除文件?
答案1
粘滞位是设置在文件或目录上的权限位,允许仅限用户/所有者文件/目录或根用户删除或重命名文件,即使通过组所有权授予了写入权限。
粘性位可以通过以下方式设置:
chmod +t /directoryname
此后,具有写权限的用户将无法删除该文件夹内的文件除非他们自己创建了文件/文件夹。您还可以使该文件夹中的所有文件继承组所有权,方法是:
chmod g+s /directoryname
我刚刚做了一个小测试以确保万无一失。我创建了一个名为 的文件夹testfolder
,其所有权为root:user1
。我设置了775
权限 ( rwxrwxrw
),然后运行:
sudo chmod +t testfolder
给它粘性位,并且:
sudo chmod g+s testfolder
使新文件继承组所有权。
之后,我以 的身份登录user2
,它是 的组成员user1
。我进入文件夹并尝试删除testfile
具有rwx
组 权限的user1
。由于user2
是该组的成员,他们应该有权限删除它,但他们没有。权限被拒绝。
之后,我决定删除粘性位,使用:
sudo chmod -t testfolder
然后再次尝试删除该文件。成功了。
不确定这是否是您想要的,因为您不希望用户使用touch
或mkdir
。这只会禁止他们删除内容,同时保持写入。