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

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

假设在桌面上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)尝试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

相关内容