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锁定,那它们大概率会无法正常工作。

References

最后修改:2024 年 11 月 03 日
如果觉得我的文章对你有用,请随意赞赏