lsattrchattr 是在 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 设置或删除文件的特殊权限时,通常需要管理员权限。
  • 一旦设置了某些特殊权限(如 ia),可能无法轻易地移除,除非使用管理员权限。
  • 在使用 chattr 之前,最好先用 lsattr 检查文件的当前属性,以免误操作。