chmod可以将文件权限分为u、g、o三个组,setfacl可以为每个文件或目录设置更准确的文件权限
ACL可以对单个用户,单一文件或目录进行r、w、x权限控制
setfacl [-bkndRLP] xbdsmt | -X . } file .-m --modify-acl更改文件访问控制列表- m-- modify-file=从文件读取访问控制列表条目更改- x-- remove=ACL file -all删除所有扩展访问控制列表项-k --remove-default删除默认访问控制列表--set=acl设置替换当前文件访问控制列表--set-file=file 重新计算掩码--n--no代码--- d----应用默认访问控制列表的操作----r----recursive递归操作子目录----l-- - 符号链接----p----physical遵循自然逻辑,根据符号目录--restore=file返回访问控制列表,其作用与“获取- r”相反在--test测试模式下,不会实际更改访问控制列表属性-v --version的显示版本以退出-h --help帮助信息的显示
u :各个用户设置ACL权限
首先,检查用户的默认acl权限,以及chmod所有者组和其他用户的权限
acl权限与chmod权限一起使用
- bash-4.2 # mkdirmakaka-bash-4.2 # chmod-r 755 ma Kaka-bash-4.2 # ll total 0表示文件总共占用0个块的磁盘空间。 通常,一个块表示512字节或1024字节。 drwxr-xr-x2 root root6jun 2809336038 ma Kaka-bash-4.2 # getfaclmakaka # file 3360 ma Kaka------ -文件名# owner 33330组: root--所属组user:rwx ---所属主的acl权限group33603360r-x----所属组的权限other33603360r-x----
向test用户添加ACL权限,使其对名为makaka的文件夹具有可读写权限
- bash-4.2 # setfacl-mu : test : rwxmakaka-bash-4.2 # getenforcemakakadisabled-bash-4.2 # getfaclmakaka # 文件组: root user :3360 rwx user : test : rwx----测试用户的acl权限组:3360 r-xmask 33603360 rwx---- mask权限
从以上内容可以看出,生成了很多两个信息
第一条ser:testrwx显然是test用户的ACL权限
第二条mask权限是指用户或用户组可以具有的最大ACL权限,用户、用户组具有的最大权限不得超过mask权限,超出的范围无效处理
举个例子:
mask的权限为r - x
test用户权限为r w x
最终test权限为r - x
也可以使用setfacl命令更改mask权限。
- bash-4.2 # setfacl-m : rxmakaka-bash-4.2 # getenforcemakakadisabled-bash-4.2 # getfaclmakaka # file 3360 ma Kaka file 3360 ma group : root user : rwx user : test : rwx group :3360 r-xmask 33603360 r-x-- mask权限为r-xother33603360r
如果设置了ACL权限的目录以ll显示,则权限部分会显示一个小加号
- bash-4.2 # lldrwxrwxr-x http://www.Sina.com/3 root root 20ju n 2810336058 ma Kaka
然后测试test用户对makaka目录的操作以及对其他平面目录的操作
test用户创建文件夹[ test @ k8s-mastermakaka ] $ mkdir images [ test @ k8s-mastermakaka ] $ ls images [ t ]
est@k8s-master home]$ lsesuser java makaka test[test@k8s-master home]$ cd java/[test@k8s-master java]$ ls javav29.zip java.zip zjtq zjtq_20210618[test@k8s-master java]$ mkdir testmkdir: cannot create directory ‘test’: Permission denied
可以看到test用户可以查看java目录下的文件,但是不可以创建文件
因为这个用户的chmod权限是755 test拥有对这个目录 可读 可执行权限
g:用户组设置ACL权限
对用户组设置ACL权限 在用户组的用户都拥有对应的权限,可以将用户添加到一个组中,这样就不需要一个用户一个用户添加
-bash-4.2# setfacl -m g:test:rwx makaka-bash-4.2# getfacl makaka# file: makaka# owner: root# group: rootuser::rwxuser:test:rwxgroup::r-xgroup:test:rwx ---test用户组拥有rwx权限mask::rwxother::r-x
关于目录的默认和递归权限
在上面 对makaka目录设置了ACL权限,可以通过ll 查看到 子级目录并没有继承父级目录二点权限
可以通过-d: 或-R 两个参数 让下级目录拥有父级的权限
在现实场景使用中 是配合使用的
-d: 的使用方式
#给目录设置acl权限-bash-4.2# setfacl -m d:test:rwx makaka-bash-4.2# getfacl makaka# file: makaka# owner: root# group: rootuser::rwxuser:test:rwxgroup::r-xgroup:test:rwxmask::rwxother::r-x---多了几条默认权限---default:user::rwxdefault:user:test:rwxdefault:group::r-xdefault:mask::rwxdefault:other::r-x查看下级目录的权限,可以看到权限边上没有+号-bash-4.2# lltotal 0drwxrwxr-x 2 test test 6 Jun 28 10:58 imagesdrwxr-xr-x 2 root root 6 Jun 28 14:02 test对应的acl权限也没有增加-bash-4.2# getfacl images/# file: images/# owner: test# group: testuser::rwxgroup::rwxother::r-x新创建一个目录-bash-4.2# mkdir baibei-bash-4.2# lltotal 0drwxrwxr-x+ 2 root root 6 Jun 28 14:11 baibeidrwxrwxr-x 2 test test 6 Jun 28 10:58 imagesdrwxr-xr-x 2 root root 6 Jun 28 14:02 test可以看到baibei目录权限右边有一个+号查看baibei的acl权限-bash-4.2# getfacl baibei# file: baibei/# owner: root# group: rootuser::rwxuser:test:rwxgroup::r-xmask::rwxother::r-xdefault:user::rwx 注意这里也有默认权限default:user:test:rwxdefault:group::r-xdefault:mask::rwxdefault:other::r-x
注意 d: 的作用是增加默认权限 在执行这个命令之前创建的文件 并没有继承父目录的权限 可以通过-R 命令 递归来达到继承父级的权限
-bash-4.2# setfacl -R -m u:test:rwx makaka-bash-4.2# ll makaka/total 0drwxrwxr-x+ 3 root root 19 Jun 28 14:23 baibeidrwxrwxr-x+ 2 test test 6 Jun 28 10:58 imagesdrwxr-xr-x+ 2 root root 6 Jun 28 14:02 test-bash-4.2# getfacl makaka/images# file: makaka/images# owner: test# group: testuser::rwxuser:test:rwxgroup::rwxmask::rwxother::r-x
继承了上级的权限,但是并没有默认权限,意味着在images创建下级文件,也没有test用户的acl权限
所以一般使用的时候 -R 和 d:配合使用
下级也就有默认权限,后期在images创建目录的时候 不需要再重新运行 -R 来添加权限
-bash-4.2# setfacl -R -m d:u:test:rwx makaka -bash-4.2# getfacl makaka/images/# file: makaka/images/# owner: test# group: testuser::rwxuser:test:rwxgroup::rwxmask::rwxother::r-x这样下级也有默认权限default:user::rwxdefault:user:test:rwxdefault:group::rwxdefault:mask::rwxdefault:other::r-x
其他参数用法
移除文件指定用户的ACL权限
makaka这个文件 esuser拥有可读,可执行的权限
test对该文件拥有可读可写可执行权限
移除esuser用户对makaka文件的权限:
如下所示 esuser用户应有makaka的默认权限,所以删除的时候 也要加上d:
-ba-bash-4.2# setfacl -R -x d:u:esuser makaka加上d:删除默认权限-bash-4.2# getfacl makaka# file: makaka# owner: root# group: rootuser::rwxuser:test:rwxgroup::r-xmask::rwxother::r-xdefault:user::rwxdefault:user:test:rwxdefault:group::r-xdefault:mask::rwxdefault:other::r-x
新创建的ceshi文件 没有默认权限 可以直接用过-x u: 来清除用户的ACL权限
移除指定文件扩展的ACL权限通过 -b参数 基本的属主属组其他人 的权限会保留
-bash-4.2# setfacl -b makaka-bash-4.2# getfacl makaka# file: makaka# owner: root# group: rootuser::rwxgroup::r-xother::r-x
未完待续.....