![cover](https://bighead-psy.oss-cn-shanghai.aliyuncs.com/sice/unsplash_lot_of_color_locks.jpg)
Linux lsattr与chattr命令
本文最后更新于 2024-07-09,文章内容可能已经过时。
Linux lsattr与chattr命令
Linux系统下的文件有一些隐藏(扩展)属性,这些属性对文件提供额外的保护功能,方便我们可以更好的管理文件和控制权限。
在Linux中,lsattr
和 chattr
是用于管理和查看文件扩展属性的命令,它们与传统的文件权限(如使用 ls -al
查看的权限)不同,主要用于增强文件系统安全性和控制。
lsattr和chattr需要ext2、ext3、ext4等文件系统上适用,不过Linux 内核2.6以后的版本,基本都是支持的。
有些Linux发型版本并未默认安装lsattr和chattr,可以使用下面的命令手动安装:
#Debian
apt-get install e2fsprogs
#Ubuntu
apt-get install e2fsprogs
#Arch Linux
pacman -S e2fsprogs
#CentOS
yum install e2fsprogs
lsattr (list attributes)
lsattr
命令用于列出文件或目录的扩展属性。它显示了与 chattr
相关的属性信息,通常与 chattr
命令配合使用,以检查文件或目录上设置的扩展属性。
命令格式
lsattr [-adlRvV] [文件或目录...]
参数
-a
显示所有文件和目录,包括以"."为名称开头字符的额外内建,现行目录"."与上层目录".."。
-d
显示,目录名称,而非其内容。
-l
此参数目前没有任何作用。
-R
递归处理,将指定目录下的所有文件及子目录一并处理。
-v
显示文件或目录版本。
-V
显示版本信息。
chattr (change attributes)
chattr
命令来自于英文词组“change attribute”的缩写,其功能是用于更改文件隐藏属性。
chattr
修改文件在Linux第二扩展文件系统(E2fs)上的特有属性
chattr
命令语法
chattr [+-=][ASacDdIijsTtu] [文件或目录名]
+
:增加某个属性-
:移除某个属性=
:设置指定的属性,其他未指定的属性将被移除
常用的属性选项
a
:只能向文件中追加数据,而不能删除或修改已存在的数据。A
:文件或目录的访问时间atime不可被修改,可防止通过atime猜测文件使用情况。c
:将文件或目录压缩后存储,读取时自动解压。d
:当目录被删除时,其下的文件也会被自动删除。i
:文件或目录不可被修改;不可被删除;不可被重命名;不可被创建链接;不可被写入或新增内容。j
:当目录所在的文件系统被卸载时,目录会被记录。s
:彻底从磁盘上删除数据,在有些情况下可以用来覆盖已删除文件的数据。S
:在文件被修改时,将修改同步写入磁盘。t
:禁止文件或目录被dump备份。u
:当删除该文件后依然保留其在磁盘上的数据,以便于以后恢复。
示例
- 设置文件为只追加模式
假设我们有一个名为 log.txt
的文件,我们想要确保只有追加数据到文件末尾的操作是被允许的,可以使用以下命令:
chattr +a log.txt
之后,任何尝试修改或删除 log.txt
文件内容的操作都会失败。
- 设置目录为不可修改模式
如果我们有一个名为 protected_dir
的目录,并且我们想要防止其被修改(包括添加、删除或重命名其中的文件或子目录),可以使用以下命令:
chattr +i protected_dir
请注意,一旦设置了 i
属性,即使是root用户也不能修改该目录或其中的内容(除了使用 chattr
命令本身来移除该属性)。
- 查看文件和目录的扩展属性
虽然 chattr
命令本身不直接提供查看文件和目录扩展属性的功能,但我们可以使用 lsattr
命令来查看:
/root lsattr -d protected_dir
----i---------e----- protected_dir
👀️ 需要注意的是,chattr
和 lsattr
命令不适用于所有的文件,比如它们对 /
、/dev
、/tmp
和 /var
等目录的保护是无效的,因为这些目录需要经常被修改以保证系统的正常运行。
使用 chattr
和 lsattr
命令可以增强系统安全性,但同时也需要谨慎使用,避免因错误设置而造成数据不可访问或其他问题。
- 感谢你赐予我前进的力量