linux文件属性包括文件的许多特征,通常有文件类型、文件大小、文件所有者、文件所属组、文件最后修改时间等,而隐藏属性是属于文件的特殊性质。这些隐藏属性在linux中可以通过chattr
命令进行设置,通过lsattr
命令查看。
chattr
chattr
是一个linux命令,用于设置文件的某些隐藏属性,以保护重要文件和文件夹免受意外删除或修改,而且是少有的能够直接限制root用户的命令。
chattr
的语法如下,
chattr [选项] [操作符] [属性] 文件...
其中操作符有以下几个符号:
+
:将指定的属性添加到现有属性-
:从现有属性中删除指定的属性=
:将指定的属性设置为唯一属性,覆盖原来的属性
操作符后可接多个属性,下面是一些常见属性:
a
:文件只能以追加模式写入。A
:文件的访问时间(atime)记录不会被修改,可以减少磁盘IO。e
:文件使用extents映射磁盘上的块,这个属性无法被chattr
修改,与文件系统有关,例如ext4文件系统。i
:文件不可变,即文件不能被删除或修改。
更多说明内容可以使用man chattr
查询。
lsattr
lsattr
命令主要用于查看文件对应的隐藏属性。
例如
lsattr /etc/passwd
chattr锁定文件
前面提到chattr
是少有的能够直接限制root用户的命令,但同时它也需要谨慎使用。
可以通过以下命令创建并锁定文件,即使root用户也无法直接删除和修改。
touch ~/immutable.txt
sudo chattr +i ~/immutable.txt
lsattr ~/immutable.txt
sudo rm -rf ~/immutable.txt
要删除文件,只能使用chattr
重新取消i
属性。
sudo chattr -i ~/immutable.txt
rm -rf ~/immutable.txt
chattr
命令虽然可以阻止文件被意外删除或修改,但是它所针对的文件或目录对象,通常是一些内容不会去改动的系统配置文件、日志文件、备份文件等,而且这些文件和目录不应该对其他的文件和目录有依赖关系。例如,你对那些linux命令的可执行文件使用chattr
锁定,那它们大概率会无法正常工作。