【Linux】权限相关命令(二)
- chattr命令
改变存放在ext2文件系统上的文件或目录属性i 无法对文件进行修改 若对目录设置了该参数,则仅能修改其中的子文件内容而不能新建或删除 a 仅允许补充内容,无法覆盖/删除内容 S 文件内容在变更后立即同步到硬盘 s 彻底从硬盘中删除,不可恢复 A 不再修改文件的最后访问时间 b 不再修改文件的存取时间 D 检查压缩文件中的错误 d 使用dump命令备份时忽略本文件 c 默认将文件进行压缩 u 当删除该文件后依然保留其在硬盘中的数据 t 让文件系统支持尾部合并(tail-merging) x 可以直接访问压缩文件中的内容
# chattr +i file
设置无法对文件进行修改
# chattr -i file
撤销i属性
# chattr +a file
仅允许补充内容,无法覆盖/删除内容
# chattr -a file
撤销a属性
# chattr -V +i file
显示指令执行过程
-R 递归处理,将指令目录下的所有文件及子目录一并处理 -v 设置文件或目录版本 -V 显示指令执行过程 + 开启文件或目录的该项属性 - 关闭文件或目录的该项属性 = 指定文件或目录的该项属性
- lsattr命令
list attribute
chattr命令用于改变文件或目录的隐藏属性
lsattr命令用于查看其属性
# lsattr file
显示文件属性
# lsattr -R you/
递归地处理指定目录下的所有文件
# lsattr -a ./
列出目录中的所有文件,包括隐藏文件
# lsattr -d you
只显示目录属性
# lsattr -v file
-v 显示文件或目录版本
-a 列出目录中的所有文件,包括隐藏文件 -d 只显示目录名称 -R 递归地处理指定目录下的所有文件及子目录 -v 显示文件或目录版本 -V 显示版本信息
- setfacl命令
set file access control list-m 更改文件的访问控制列表 -M 从文件读取访问控制列表条目更改 -x 根据文件中访问控制列表移除条目 -X 从文件读取访问控制列表条目并删除 -b 删除所有扩展访问控制列表条目 -k 移除默认访问控制列表 --set 设定替换当前的文件访问控制列表 --set-file 从文件中读取访问控制列表条目设定 --mask 重新计算有效权限掩码 -n 不重新计算有效权限掩码 -d 应用到默认访问控制列表的操作 -R 递归操作 -L 依照系统逻辑,跟随符号链接 -P 依照自然逻辑,不跟随符号链接 --restore 恢复访问控制列表 --test 测试模式 -v 显示版本 -h 显示帮助信息
选项-m和-x后边跟acl规则。多条规则以 , 隔开 选项--set和--set-file用来设置文件的acl规则,先前的设定将被覆盖 选项-m和-M选项修改文件的acl规则 选项-x和-X选项删除acl规则
user ACL_USER_OBJ和ACL_USER group ACL_GROUP_OBJ和ACL_GROUP mask ACL_MASK other ACL_OTHER
# setfacl -m user:you:rw- ./test.txt
# -rw-rw-r--+ 1 root admin 0 Jan 21 13:06 ./test.txt
用户you拥有对test.txt文件的读写权限 当一个文件拥有了ACL_USER或ACL_GROUP的值后可以称它为ACL文件, 用+号判断 当一个文件拥有了ACL_USER或ACL_GROUP的值时ACL_MASK也会被定义
user::rwx user:you:rwx #effective:r-- group::rw- #effective:r-- mask::r-- other::r--
ACL_MASK规定了ACL_USER,ACL_GROUP_OBJ和ACL_GROUP的最大权限 effective:r– 最大权限是read 虽然给ACL_USER和ACL_GROUP_OBJ 其他权限,但是真正有效果的只有read权限 对于rw-rw-r--,当中的rw-是指文件组的权限. 如果文件有ACL_MASK值 当中那个rw-代表的就是mask值而不再是文件组的权限 如果一个文件后面有+标记,需要用getfacl来确认权限
# chacl -b
彻底删除文件或者目录的ACL属性 mv命令会默认地移动文件的ACL属性 用chmod命令改变文件权限的时候相应的ACL值也会改变
- getfacl命令
# getfacl test
获取文件访问控制列表
# getfacl -a test
仅显示文件访问控制列表
# getfacl -d test
仅显示默认的访问控制列表
# getfacl -c test
不显示注释表头 --omit-header
# getfacl -e test
显示所有的有效权限
-a 仅显示文件访问控制列表 -d 仅显示默认的访问控制列表 -c 不显示注释表头 -e 显示所有的有效权限 -E 显示无效权限 -s 跳过只有base entries的文件 -R 递归显示子目录 -L 逻辑遍历(跟随符号链接) -P 物理遍历(不跟随符号链接) -t 使用制表符分隔的输出格式 -n 显示数字的用户/组标识 -p 不去除路径前的 / 符号 -v 显示版本 -h 显示帮助信息