假设在桌面上dir1
创建了一个目录。sudo
sudo mkdir dir1
然后我申请了chown
,chmod
如下:
sudo chown root:root dir1
sudo chmod go-rwx dir1
现在dir1
只有所有者才可以访问root
。
$ ls -ld dir1
drwx------ 2 root root 4096 Jul 29 19:21 dir1
如果用户($USER
= pandya
)尝试dir1
删除GUI nautilus (无sudo
),那么他就不能没关系。
但如果尝试使用终端删除,那么他就可以,这是不行的:-
rm -r
(没有sudo
):$ rm -r dir1 rm: descend into write-protected directory ‘dir1’? Y rm: remove write-protected directory ‘dir1’? Y $
使用 ! 更简单
rmdir
(无需 sudo):$ rmdir dir1 $
那么,如何防止dir1
被用户删除呢sudo
?
[可选]
我的最终目标是:只有所有者可以删除目录,组和其他人只能读取/执行。
答案1
说什么类堆叠器在他的回答是正确的,但它没有解决您的问题。为了防止拥有父目录所有权限的用户删除目录(/home/pandya
在您的例子中),您必须使用该chattr
命令。
以下是一个例子:
$ sudo mkdir dir1
$ sudo chattr +i dir1
$ rmdir dir1
rmdir: failed to remove ‘dir1’: Operation not permitted
$ rm -r dir1
rm: remove write-protected directory ‘dir1’? y
rm: cannot remove ‘dir1’: Operation not permitted
$ chattr -i dir1
chattr: Permission denied while setting flags on dir1
在 Nautilus 中:
请阅读man chattr
以了解更多信息。
答案2
实际上,目录是特殊的文件。
在目录中/home/user
,创建或删除条目(例如文件或目录)的权限是由条目/home/user
本身的权限决定的,而不是由条目的权限决定的。
就你的情况而言,最好提供一个子目录,例如/home/user/fixed
,并将该子目录的权限设置为r-x
。这样,用户就无法在其中创建或删除文件或目录。他可能仍然能够根据其中各个文件和目录的权限进行编辑、删除等操作/home/user/fixed
。