lsattr
和 chattr
是在 Linux 系统中用于管理和查看文件扩展属性的命令。这些属性被称为文件的“特殊权限”或“扩展属性”,不同于常规的读、写、执行权限。
lsattr
lsattr
命令用来列出文件或目录的扩展属性。这些属性通常用于文件系统级别的锁定,防止文件被删除、修改等。lsattr
命令默认会显示当前目录下所有文件的扩展属性,或者你可以指定文件或目录作为参数。
基本语法:
lsattr [OPTION]... [FILE]...
示例:
lsattr
这将显示当前目录下所有文件和子目录的扩展属性。
lsattr filename
这将显示文件 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
命令用于改变文件的扩展属性。你可以使用 +
添加属性,使用 -
删除属性,或者使用 =
设置属性而不保留任何现有的属性。
基本语法:
chattr [OPTION]... [FLAGS] FILE...
示例:
chattr +i filename
这将使文件 filename
不可变。
chattr -i filename
这将取消文件 filename
的不可变属性。
chattr =a filename
这将设置文件 filename
为追加模式,并移除其他所有属性。
注意:
-
使用
chattr
设置或删除文件的特殊权限时,通常需要管理员权限。 -
一旦设置了某些特殊权限(如
i
或a
),可能无法轻易地移除,除非使用管理员权限。 -
在使用
chattr
之前,最好先用lsattr
检查文件的当前属性,以免误操作。