lsattr
和 chattr
是在 Linux 系统中用于管理和查看文件扩展属性的命令。这些属性被称为文件的“特殊权限”或“扩展属性”,不同于常规的读、写、执行权限。
lsattr
lsattr
命令用来列出文件或目录的扩展属性。这些属性通常用于文件系统级别的锁定,防止文件被删除、修改等。lsattr
命令默认会显示当前目录下所有文件的扩展属性,或者你可以指定文件或目录作为参数。
基本语法:
示例:
这将显示当前目录下所有文件和子目录的扩展属性。
这将显示文件 filename
的扩展属性。
属性含义:
a
: append-only(追加模式)。文件只能追加数据,不能删除或修改现有内容。i
: immutable(不可变)。文件不能被删除、重命名、设置链接或修改属性。A
: no dump(不转储)。该文件不会被系统备份程序转储。b
: no setUID/SETGID(无SUID/SGID)。即使设置了SUID或SGID权限,文件也不会有这些权限。c
: compress(压缩)。文件在存储时会被压缩。C
: no directory indexing(无目录索引)。目录不会被索引,影响目录操作的速度。d
: no deletion(不删除)。文件不能被删除,但可以被重命名。e
: encryption(加密)。文件在存储时会被加密。j
: journaling(日志)。文件的更改会被记录到日志中。s
: secure deletion(安全删除)。文件在删除时会被擦除。S
: synchronous(同步)。文件的更改会立即写入磁盘。T
: no tail-merging(不合并尾部)。文件的尾部不会与其他文件合并。u
: undeletable(不可删除)。文件不能被删除,也不能被重命名或设置链接。U
: undeletable(不可删除)。与u
相同,但在某些文件系统中使用不同的实现。V
: versioned(版本化)。文件的更改会被版本化。-
: 没有特殊属性。
chattr
chattr
命令用于改变文件的扩展属性。你可以使用 +
添加属性,使用 -
删除属性,或者使用 =
设置属性而不保留任何现有的属性。
基本语法:
示例:
这将使文件 filename
不可变。
这将取消文件 filename
的不可变属性。
这将设置文件 filename
为追加模式,并移除其他所有属性。
注意:
- 使用
chattr
设置或删除文件的特殊权限时,通常需要管理员权限。 - 一旦设置了某些特殊权限(如
i
或a
),可能无法轻易地移除,除非使用管理员权限。 - 在使用
chattr
之前,最好先用lsattr
检查文件的当前属性,以免误操作。