如何防止目录被用户删除?
假设目录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
)尝试使用GUI nautilus(没有sudo
)删除dir1
,那么他就不行 。
但如果试图用终端删除那么他可以哪个不好: –
-
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
?
[可选的]
我的最终目标是:只有所有者才能删除目录,组和其他只能读/执行。
在他的答案中所说的Class Stacker是正确的,但它并没有解决你的问题。 要防止目录被拥有父目录(在您的情况下为/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
在鹦鹉螺:
请阅读man chattr
了解更多信息。
实际上,目录是特殊文件。
在目录/home/user
,创建或删除entires(例如文件或目录)的权限由/home/user
本身的权限决定,而不是由条目的权限决定。
在您的情况下,最好提供一个子目录,例如/home/user/fixed
,并将其权限设置为rx
。 然后,用户将无法在其中创建或删除文件或目录。 他仍然可以根据/home/user/fixed
单个文件和目录的权限进行编辑,下降等。