Last Updated on

前言

之前,我们讲过linux的普通文件权限,但实际上,在普通的文件权限上,还有一层更高级的特殊权限(也叫隐藏权限或属性),这个可以控制改变文件的属性,以达到更高级的功能

以下所有基于Centos7系统进行示例。以下就详细说说在centos7系统中的使用和表现。

正文

与文件传统权限类似,特殊权限的查看和修改,分别使用 lsattrchattr 命令

lsattr 查看

lsattr命令没有help帮助信息,看可以看到一个简单的usage,提示了使用方法:

# lsattr -h
lsattr: invalid option -- 'h'
Usage: lsattr [-RVadlv] [files...]

如上可以看出lsattr一共有如下几个参数,后跟文件或目录,就可以查看到文件的特殊权限(属性):

-R  递归地处理指定目录下的所有文件及子目录
-V  显示版本信息
-a 列出目录中的所有文件,包括隐藏文件
-d  显示目录名称,而非其内容
-l 指出要显示设备的逻辑名称
-v 显示文件或目录版本

chattr 修改

chattr命令用于修改文件的特殊权限(属性),直接在查看命令的用法:

# chattr --help
Usage: chattr [-RVf] [-+=aAcCdDeijsStTu] [-v version] files...

可以看到可以通过 + - = 来增加,删除,设置文件的特殊权限,那这些aAcCdDeijsStTu又分别代表什么权限呢? 通过man查看命令的文档,可以看得到:

  • a:只能以追加模式打开以进行写入
  • A:访问时不会修改其 atime 记录
  • c:写入此文件会在将数据存储到磁盘之前压缩数据,读取时会自动解压返回正常数据
  • C:文件不会受到写时复制更新的影响
  • d:文件不能成为dump程序的备份目标
  • D:目录被修改时,这些更改会同步写入磁盘
  • e:该文件正在使用范围来映射磁盘上的块。不能使用 chattr 删除它
  • i:无法修改,无法删除或重命名,无法创建指向此文件的链接,也无法写入或新增内容
  • j:如果文件系统在mount时,使用“data=ordered”或“data=writeback”,写入文件本身之前会将其所有数据写入journal日志,当使用“data=journal”,此属性无效
  • s:文件被删除时,它的块被归零并写回到磁盘,即硬盘空间被全部收回
  • S:文件被修改时,这些更改会同步写入磁盘
  • t:文件系统支持尾部合并(tail-merging)
  • T:目录将被视为目录层次结构的顶部
  • u:文件被删除时,其内容会仍存在磁盘中,后面可以请求恢复

如上,通过chattr就可以修改文件的特殊权限(属性),最常见的就是 a,i 来限制文件的修改,删除,写入功能。如:

# chattr +i test.txt

除了这些属性权限外,使用中还有[-RVf],其意思分别为:

  • R:遍历目录下的所有文件
  • V:详细说明 chattr 的输出并打印程序版本
  • f:强制执行,忽略大多数错误

结束

如上所示,灵活使用chattrlsattr就可以管理文件的特殊权限(属性),可以帮助更好的进行系统管理和运维