Last Updated on
前言
之前,我们讲过linux的普通文件权限,但实际上,在普通的文件权限上,还有一层更高级的特殊权限(也叫隐藏权限或属性),这个可以控制改变文件的属性,以达到更高级的功能
以下所有基于Centos7
系统进行示例。以下就详细说说在centos7系统中的使用和表现。
正文
与文件传统权限类似,特殊权限的查看和修改,分别使用 lsattr
和 chattr
命令
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:强制执行,忽略大多数错误
结束
如上所示,灵活使用chattr
和lsattr
就可以管理文件的特殊权限(属性),可以帮助更好的进行系统管理和运维