前言

文件系统属性chatttr,通过 man chattr 命令可以返回的部分描述信息为:
chattr - 修改文件在Linux第二扩展文件系统(E2fs)上的特有属性

注意:该属性对root也生效。 前面章节讲解的普通文件权限,ACL权限,SUID,SBIT权限等,均对root不生效。 该属性具有类似于权限的功能,attr属性的添加和移除都很容易,主要的目的还是避免超级用户误删除文件。

设置文件系统属性

命令语法:chattr [选项R] [+-=] [参数ia] [文件或目录名称]

选项: -R:递归设置attr属性

+:增加属性 -:删除属性 =:直接等于某属性

参数: i:如果对文件设置i属性,那么不允许对文件进行删除,修改内容,重命名等操作;如果对目录设置i属性,那么只能修改目录下文件的内容,但不允许新建、删除和重命名操作。 a:如果对文件设置a属性,那么只能在文件中增加数据,但是不能修改原本的数据;如果对目录设置a属性,那么只允许在目录中建立和修改文件或目录,但不允许删除和重命名操作。

i属性类似于锁定所有档案,只能查看,不允许其他任何改动。(更严格) a属性类似于封存所有档案,只能增加和查看,不能删除和减少。

  1. ## 范例
  2. chattr +i libai.txt ## 增加libai.txt文件具有attr的i属性
  3. chattr -a tang ## 移除tang目录具有attr的a属性
  4. chattr +ia song ## 增加song目录具有attr的i属性和a属性
  5. chattr =a song ## 设置目录的attr属性为a
  6. chattr -R +i qing ## 递归增加qing目录及其子文件和子目录的attr的i属性

查看文件系统属性

命令语法:lsattr [选项ad] [文件名]
-a:显示所有文件和目录的attr属性
-d:列出目标本身的属性,而不是子文件或子目录

## 范例
[root@localhost gmd]# lsattr    ## 查看当前目录下文件和目录的attr属性
----i----------- libai.txt

[root@localhost gmd]# lsattr libai.txt    ## 查看libai.txt文件的attr属性
----i----------- libai.txt

[root@localhost home]# lsattr -a    ## 查看当前目录的全部子文件或目录权限

[root@localhost home]# lsattr -a tang   ## 查看tang目录的全部子文件或目录的attr属性
-----a---------- /home/tang/.    ## 本目录attr属性
---------------- /home/tang/..   ## 父目录attr属性
----i----------- /home/tang/libai.txt    ## 子文件attr属性

[root@localhost home]# lsattr -d tang    ## 打印tang目录本身的attr属性
-----a---------- tang