如何在Linux中禁用文件和目录的删除权限?

很多时候,可能会意外删除文件或目录。这可能会导致重要数据丢失或系统配置错误,因此我们需要一种阻止意外删除文件和目录的方法,它可能不适用于所有文件和目录,但我们可以设计一种至少包含一些文件的设计和目录被阻止在这种情况下。

我们使用change attribute命令来防止下面的情况看到该命令如何应用于两个文件和目录。

语法

以下是change attribute命令的语法。

chattr [operator] [flag] [filename]
Where the operator can be ‘+’ , ‘-‘ or ‘=’ .
And flag can be set to i to make the file immutable.

现在,让我们首先研究目录的现有属性及其中的文件。我们看到它们是可以重写和删除的普通文件。

~/Documents/tutorials$ pwd ; ls -l
/home/ubuntu/Documents/tutorials
total 4
drwxrwxr-x 2 ubuntu ubuntu 4096 Dec 31 21:13 linux
~/Documents/tutorials$ lsattr
-------------e-- ./linux
~/Documents/tutorials$ cd linux/
~/Documents/tutorials/linux$ lsattr
-------------e-- ./passwd_bkup.txt
-------------e-- ./movie_list.txt

现在,我们应用“ i”标志使文件之一不可变,从而使其无法删除。

$ sudo chattr +i passwd_bkup.txt
[sudo] password for ubuntu:
$ lsattr
----i--------e-- ./passwd_bkup.txt
-------------e-- ./movie_list.txt

如您所见,passwd_bkup.txt文件现在具有i文件属性。现在,让我们尝试删除该文件。具有I属性的文件将不会被删除,而其他文件将被删除。

$ rm -rf passwd_bkup.txt
rm: cannot remove 'passwd_bkup.txt': Operation not permitted
# Other file gets deleted.
$ rm -rf movie_list.txt
$ lsattr
----i--------e-- ./passwd_bkup.txt

现在,包含此文件的目录也不会被删除,因为它不能为空。

$ rm -rf linux/
rm: cannot remove 'linux/passwd_bkup.txt': Operation not permitted