Ext2/Ext3中的系统保护文件

关于Linux下的文件操作很简单,权限的话用chmod很方便,不过我今天想说的是如何创建一些更安全的文件,就连root都无法进行操作。

首先创建一个普通的文件试试:

touch file

查看一下文件属性先:

lsattr file

可以看到输出:

-----------------e- file

好,现在使用chattr给文件加上一个特殊的标志:

sudo chattr +i file

再查看一下文件属性,可以看到多了个i的标志:

----i------------e- file

现在来尝试对这个文件进行操作:

sudo rm file
# rm: cannot remove `file': Operation not permitted
sudo mv file file1
# mv: cannot move `file' to `file1': Operation not permitted
sudo echo 'something' > file
# bash: file: Permission denied
sudo ln file file1
# ln: creating hard link `file1' => `file': Operation not permitted

可以看到,删除、重命名、写入甚至是设置硬连接都无法进行(就算是sudo也没用哦)。那要怎么样才能把这个“顽固的东西”赶走呢,只要把原来加的那个标志位去掉就可以了:

sudo chattr -i file

原理:在ext2和ext3文件系统中,除了chmod可访问的标准属性位外,还有许多附加的文件属性。相关的内容可以查看chattrlsattr的手册。文章中用到的是一个i属性,即系统保护标志。设置该标志后,会禁止对文件的删除、重命名、写入等操作,即使是root权限也没用。