当基本权限UGOrwx和SUID、SGID、Sticky,都不能满足权限的需求,需要对某些特别的人进行权限的设置时。就要进行访问控制的操作。
访问控制列表 ACL -----高优先级
SUID高于ACL高于SGID
用于给用户单独设置一些权限。
基本操作:
给控制表中添加用户及权限
[root@localhost test-gsc]# setfacl -m u:user01:rw- quanxian.txt //-m 更改文件访问控制表 u:用户:权限 文件名
[root@localhost test-gsc]# getfacl quanxian.txt //查看文件的访问控制表
# file: quanxian.txt
# owner: root
# group: root
user::rw-
user:g:rw-
user:user01:rw-
group::r--
group:dba:rw-
mask::rw- //权限上限。
other::r--
[root@localhost test-gsc]# ll quanxian.txt
-rw-rw-r--+ 1 root root 0 Oct 17 11:18 quanxian.txt
有+ 表示设置了访问控制表,查看访问控制表为getfacl。
mask:设置访问控制表后,文件的属组权限显示的是这个。并且如果有用户的权限超过了这个mask所限制的那么超过的权限无效。
另外有一个叫unmask的是权限掩码,这个掩码是跟随用户的,作用是在用户创建文件时设置文件权限。
[root@localhost test-gsc]# umask
0022
0022转化为权限为----w–w-
这个用户所创建出的文件权限默认为 rw-r–r-- 数字表示 644
总之掩码和文件权限相加为 rw-rw-rw-
注:不能做加减,因为文件默认没有x权限。
删除某组权限
[root@localhost test-gsc]# setfacl -x g:dba quanxian.txt
[root@localhost test-gsc]# getfacl quanxian.txt
# file: quanxian.txt
# owner: root
# group: root
user::rw-
user:g:rw-
user:user01:rw-
group::r--
mask::rw-
other::r--
复制访问控制表
[root@localhost ~]# getfacl file1 | setfacl --set-file=- file2
将file1的表复制给file2
删除全部权限:
[root@localhost test-gsc]# setfacl -b quanxian.txt
[root@localhost test-gsc]# getfacl quanxian.txt
# file: quanxian.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
[root@localhost test-gsc]# ll quanxian.txt
-rw-r--r--. 1 root root 0 Oct 17 11:18 quanxian.txt
指令setfacl 和 getfacl 的全部选项
setfacl 2.2.51—设置文件访问控制列表
用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
-m,--modify-acl 更改文件的访问控制列表
-M,--modify-file=file 从文件读取访问控制列表条目更改
-x,--remove=acl 根据文件中访问控制列表移除条目
-X,--remove-file=file 从文件读取访问控制列表条目并删除
-b,--remove-all 删除所有扩展访问控制列表条目
-k,--remove-default 移除默认访问控制列表
--set=acl 设定替换当前的文件访问控制列表
--set-file=file 从文件中读取访问控制列表条目设定
--mask 重新计算有效权限掩码
-n,--no-mask 不重新计算有效权限掩码
-d,--default 应用到默认访问控制列表的操作
-R,--recursive 递归操作子目录
-L,--logical 依照系统逻辑,跟随符号链接
-P,--physical 依照自然逻辑,不跟随符号链接
--restore=file 恢复访问控制列表,和“getfacl -R”作用相反
--test 测试模式,并不真正修改访问控制列表属性
-v,--version 显示版本并退出
-h,--help 显示本帮助信息
getfacl 2.2.51—获取文件访问控制列表
用法:getfacl[-aceeslptpndvh]文件…
-a,--access仅显示文件访问控制列表
-d,--默认仅显示默认访问控制列表
-c,--省略标题不显示注释标题
-e,--所有有效打印所有有效权利
-E,--无有效印刷品无有效权利
-s,--跳过只包含基项的基跳过文件
-R,--递归递归到子目录
-L,--逻辑遍历,遵循符号链接
-P,--依照自然逻辑,不跟随符号链接
-t,--表格使用表格输出格式
-n,--数字打印数字用户/组标识符
-p,--绝对名称不去掉路径名中的前导“/”
-v,--版本打印版本和退出
-h,--帮助文本
文件属性权限:
设置权限:chattr
查看权限:lsattr
Chattr对root用户也有限制
+<属性> 开启文件或目录的该项属性。
-<属性> 关闭文件或目录的该项属性。
=<属性> 指定文件或目录的该项属性。
[root@localhost test-gsc]# chattr +a quanxian.txt
[root@localhost test-gsc]# lsattr quanxian.txt
-----a---------- quanxian.txt
chattr的详细选项:
这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:
a:让文件或目录仅供附加用途。只能追加内容。
b:不更新文件或目录的最后存取时间。
c:将文件或目录压缩后存放。
d:将文件或目录排除在倾倒操作之外。
i:不得任意更动文件或目录。不能更改删除。
s:保密性删除文件或目录,安全删除。
S:即时更新文件或目录。
u:预防意外删除。
a,文件只能追加内容。不能改前边的内容。
s安全删除,rm 的删除方式并不能直接删除,可以被找回,用这个方法可以在删除后用0或1进行覆盖,无法找回。
lsattr的详细选项。
-a 显示所有文件和目录,包括以"."为名称开头字符的额外内建,现行目录"."与上层目录".."。
-d 显示,目录名称,而非其内容。
-l 此参数目前没有任何作用。
-R 递归处理,将指定目录下的所有文件及子目录一并处理。
-v 显示文件或目录版本。
-V 显示版本信息。