如何防止目录被用户删除?

假设目录dir1是由桌面上的sudo创建的。

 sudo mkdir dir1 

然后我应用chownchmod如下:

 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单个文件和目录的权限进行编辑,下降等。