Linux访问控制列表ACL

一 基础概念

1.1 起因

Linux系统限制了文件的访问权限仅限于文件的所有者、文件所属组、其他所有用户。除此之外,进程就不适合作为文件所属组的成员,而将权限授予其他任何用户更是不可取。所以,我们需要对权限的进一步细分。

使用ACL可以向文件分配细化权限。通过指定用户或者UID、指定用户组或者GID,应用相同的权限标志(r读、w写、x执行),进行权限的细分。

1.2 系统支持

文件系统必须挂载已经启用的ACL支持。
XFS系统内置ACL支持;
红帽Linux7的ext4系统默认启动了ACL支持。

1.3 相关定义

名称解释
ls -l 命令文件权限后的+存在ACL设置
ls -l 命令文件权限后的.文件存在SELinux的安全上下文
ACL掩码指定用户、属组成员可拥有的最大权限
ACL权限优先级依次是用户、指定用户、组、其他

二 查看ACL权限

2.1 简单查看

通过ls -l命令,可以查看较少的ACL权限信息。

[root@server tmp]# ls -l
total 4
-rw-rw-r--+ 1 root root 14 Dec 19 10:01 test.txt

第一个rw-显示用户ACL设置,与标准的用户文件设置相同。
第二个rw-显示当前的ACL掩码设置,不是组所有者设置。
第三个r--显示其他ACL设置,与标准的其他文件设置相同。

如果使用chmod修改这个具有ACL的文件的组的权限,那么修改的是ACL掩码,而不是属组权限;
如果想要修改属组权限,需要setfacl -m g::perms 文件名

2.2 详细查看

使用getfacl详细查看ACL信息。

[root@server tmp]# getfacl test.txt 
# file: test.txt
# owner: root
# group: root
user::rw-
user:oldboy:rw-
group::r--
mask::rw-
other::r--

首先,前三行是注释条目,识别文件名、属主和属组。

第四行是属主以及对应的所有者权限。
第五行是指定用户oldboy的权限。
第六行是属组的权限。
第七行是ACL掩码,是所有指定的用户、指定的组所拥有的理论上最大权限。
最后一行是其他权限。

2.3 具体配置

描述操作
文件具有rx权限的指定james用户u:james:rx file
文件具有rx权限的属主用户u::rx file
目录属组的rw权限g::rw /dir
目录指定组dev的rwx权限g:dev:rwx /dir
设置成默认掩码的rx权限d:m:rx /dir
设置指定用户dick的新文件rx初始权限d:user:dick:rx /dir

三 更改ACL权限

3.1 添加或修改ACL

给oldboy用户添加rx权限

[root@server tmp]# setfacl -m u:oldboy:rx test.txt 
[root@server tmp]# getfacl test.txt 
# file: test.txt
# owner: root
# group: root
user::rw-
user:oldboy:r-x
group::r--
mask::r-x
other::r--

如果此处的oldboy位置内容为空,则修改文件属主权限。

修改其他ACL,将权限变成-

[root@server tmp]# setfacl -m o::- test.txt 
[root@server tmp]# getfacl test.txt 
# file: test.txt
# owner: root
# group: root
user::rw-
user:oldboy:r-x
group::r--
mask::r-x
other::---

修改其他权限时,chmod效果等同于setfacl。

3.2 输出和输入

使用getfacl的输出,可以作为setfacl的输入。

getfacl file1 | setfacl --set-file=- file2

此处单独的-表示stdin。

3.3 设置ACL掩码

setfacl -m m::r file3

该操作设置的掩码值会作用于所有指定的用户与指定的组,但不影响属主。

一般情况下,每次修改或删除ACL掩码,该数值都会被重新计算。如果想要避免重复计算ACL掩码,使用-n参数;或者使用-m m::perms

3.4 递归修改ACL

以递归方式将ACL应用到目录和目录下的文件中,则使用-R参数。一般如果有x权限时,会写成大写X,具有执行权限的文件会保留权限,并防止管理员意外的向普通文件添加执行权限。

3.5 删除ACL

setfacl -x u:oldboy,g:oldman file4

这个操作会从ACL中删除指定的用户和指定的组。其他ACL活动保持不变。

当其他设置的ACL删除后,最后才可以删除ACL掩码。

setfacl -b file

此时,权限字符串旁边不再有+

3.6 控制默认ACL权限

将某个目录设置默认的ACL,在该目录下创建的新目录和新文件将自动继承默认的ACL。

setfacl -m d:u:oldboy:rx /dir

如果想要删除这个默认ACL,换成-x参数,并取消权限即可。

setfacl -x d:u:oldboy /dir
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值