二、用户身份与文件权限( 六 )


4.文件的隐藏属性
Linux 系统中的文件除了具备一般权限和特殊权限之外,还有一种隐藏权限,即被隐藏起来的权限,默认情况下不能直接被用户发觉 。
:设置文件的隐藏权限
语法格式: [ -RV ] [ -v] [ mode ] files...
说明:
-R 递归处理,将指定目录下的所有文件及子目录一并处理 。-v<版本编号> 设置文件或目录版本 。-V 显示指令执行过程 。+<属性> 开启文件或目录的该项属性 。-<属性> 关闭文件或目录的该项属性 。=<属性> 指定文件或目录的该项属性 。
如果想要把某个隐藏功能添加到文件上,则需要在命令后面追加“+参数”,如果想要把某个隐藏功能移出文件,则需要追加“-参数” 。
参数作用
无法对文件进行修改;若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除文件
仅允许补充(追加)内容,无法覆盖/删除内容( Only)
文件内容在变更后立即同步到硬盘(sync)
彻底从硬盘中删除,不可恢复(用 0 填充原文件所在硬盘区域)
不再修改这个文件或目录的最后访问时间(atime)
不再修改文件或目录的存取时间
检查压缩文件中的错误
使用 dump 命令备份时忽略本文件/目录
默认将文件或目录进行压缩
当删除该文件后依然保留其在硬盘中的数据,方便日后恢复
让文件系统支持尾部合并(tail-)
可以直接访问压缩文件中的内容
实例:设置不允许删除与覆盖(+a 参数)权限,然后再尝试将这个文件删除(适用于日志文件):
[root@LB-nginx-01 linux]# chattr +a 1.txt [root@LB-nginx-01 linux]# rm -rf 1.txt rm: 无法删除"1.txt": 不允许的操作 [root@LB-nginx-01 linux]# lsattr 1.txt#查看文件隐藏权限-----a---------- 1.txt
:显示文件的隐藏权限
语法格式: [ -RVadv ] [ files... ]
说明:
-a:显示所有文件和目录,包括以"."为名称开头字符的额外内建,现行目录"."与上层目录".." 。-d:显示,目录名称,而非其内容 。-l:此参数目前没有任何作用 。-R:递归处理,将指定目录下的所有文件及子目录一并处理 。-v:显示文件或目录版本 。-V:显示版本信息 。
实例:查看隐藏权限
[root@LB-nginx-01 linux]# lsattr 1.txt#查看文件隐藏权限-----a---------- 1.txt
5.文件访问控制列表
一般权限、特殊权限、隐藏权限有一个共性是针对某一类用户设置的 。如果对某个指定的用户进行单独的权限控制,就需要用到文件的访问控制列表(ACL)了 。就是说基于普通文件或目录设置 ACL 其实就是针对指定的用户或用户组设置文件或目录的操作权限 。另外,如果针对某个目录设置了 ACL,则目录中的文件会继承其 ACL;若针对文件设置了 ACL,则文件不再继承其所在目录的 ACL 。
为了更直观地看到 ACL 对文件权限控制的强大效果,我们先切换到普通用户,然后尝试进入 root 管理员的家目录中 。在没有针对普通用户对 root 管理员的家目录设置 ACL之前,其执行结果如下所示:
[root@LB-nginx-01 ~]# su - yu上一次登录:三 1月 13 17:14:52 CST 2021pts/0 上[yu@LB-nginx-01 ~]$ cd /root-bash: cd: /root: 权限不够
:管理文件的 ACL 规则
语法格式: [-] [{-m|-x} ] [{-M|-X} ] file ...
文件的 ACL提供的是在所有者、所属组、其他人的读/写/执行权限之外的特殊权限控制,使用命令可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制 。
说明:
-m :设置后续的 acl 参数给文件使用,不可与 -x 合用;-x :删除后续的 acl 参数,不可与 -m 合用;-b :移除“所有的” ACL 设置参数;-k :移除“默认的” ACL 参数,关于所谓的“默认”参数于后续范例中介绍;-R :递回设置 acl,亦即包括次目录都会被设置起来;-d :设置“默认 acl 参数”的意思!只对目录有效,在该目录新建的数据会引用此默认值