如需学习视频,请在微信搜索"大众年夜众号“智传网优”直接开始自助视频学习
1. 序言
本文紧张讲解Linux acl访问掌握权限的事理以及日常利用方法。是Linux系统管理中的一个主要安全工具及策略设置,运维职员必须节制好。

2. Linux acl权限掌握的事理
我们知道 Linux 的权限掌握是非常主要的,传统的权限仅有三种身份 (owner, group, others) ,即文件或者目录拥有者权限、拥有者同组成员的权限、其它用户的权限,搭配三种权限 (r,w,x),即可读、可写、可实行而已,这些权限可以通过 chmod、 chown 等命令来修正。然而并没有办法纯挚的针对某一个利用者或某一个群组来设置特定的权限需求。此时就得要利用 ACL 这个工具了。
比如有个名为zcwyou的用户,他想要修正 nginx.conf 这个配置文件,然而这个文件是归root 用户所有,这样若何为单个用户做特定授权呢? 为理解决这种情形,访问掌握列表Access Control List(ACL)出身了。
ACL 是 Access Control List 的缩写,紧张的目的是在供应传统的 owner,group,others 的 read,write,execute 权限之外的细部权限设置。ACL 可以针对单一利用者,单一文件或目录来进行 r,w,x 的权限规范,对付须要分外权限的利用状况非常有帮助。它为文件系统供应了附加的、更具有弹性的权限机制。 它被设计来为补充 UNIX 文件权限机制。 ACL 许可你授予任何某用户/组访问某项资源的权限。 setfacl 与 getfacl 命令会帮助你管理 ACL 而不会有任何麻烦。
那ACL工具紧张支持以下工具设置安全权限:
利用者 (user):可以针对利用者来设置权限;
群组 (group):针对群组为工具来设置其权限;
默认属性 (mask):还可以针对在该目录下在创建新文件/目录时,规范新数据的默认权限;
也便是说,如果你有一个目录,须要给一堆人利用,每个人或每个群组所须要的权限并不相同时,在过去,传统的 Linux 三种身份的三种权限是无法达到的, 由于基本上,传统的 Linux 权限只能针对一个用户、一个群组及非此群组的其他人设置权限而已,无法针对单一用户或个人来设计权限。 而 ACL 便是为了要改变这个问题啊!
好了,轻微理解之后,再来看看如何让你的文件系统可以支持 ACL 吧!
3. Linux acl权限掌握的工具集
查看Linux acl权限工具是否有安装,一样平常情形下,系统都是默认安装的。
[root@zcwyou ~]# rpm -qa |grep acl
查看linux acl工具包
如果没有安装,利用以下命令安装它:
[root@zcwyou ~]# yum -y install aclsetfacl用于设置文件和目录的 ACL。getfacl - 获取文件的 ACL 。对付每个文件, getfacl 都会显示文件名、文件所有者、所属组以及ACL。 如果目录有默认 ACL, getfacl 也会显示这个默认的 ACL。
4. Linux acl权限掌握工具的利用
运行 tune2fs 命令来检讨是否启用了 ACL。
[root@zcwyou ~]# tune2fs -l /dev/sdb1 | grep options
显示如下
Default mount options: (none)
上面的输出很明显第解释 /dev/sdb1 分区没有启用 ACL。
如果结果中没有列出 acl,则你须要在挂载选项中加上 acl。 为了让它永久生效, 修正 /etc/fstab 中 /app 这一行成这样:
[root@zcwyou ~]# vi /etc/fstab
开机默认为分区开启linux acl
修正为以下这行,
/dev/sdb1 /app ext4 defaults,acl 1 1
当然,你也可以利用下面命令将其添加道文件系统的超级块中:
[root@zcwyou ~]# tune2fs -o +acl /dev/sdb1
然后,通过运行以下命令来动态修正选项:
[root@zcwyou ~]# mount -o remount,acl /app
再次运行tune2fs看看是否开启了acl
[root@zcwyou ~]# tune2fs -l /dev/sdb1 | grep options
输出。
Default mount options: acl
CentOS 7默认已经启用acl,可以直策应用。
5. 如何查看默认acl的设置
[root@zcwyou ~]# getfacl /etc/passwd
getfacl: Removing leading '/' from absolute path names
file: etc/passwdowner: rootgroup: rootuser::rw-
group::r--
other::r--
查看默认acl的设置
6. 如何为文件设置acl属性
以下面格式运行 setfacl 命令可以为指定文件设置 ACL。不才面的例子中,我们会给 zcwyou用户对 /etc/samba/smb.conf文件 rwx 的权限。
[root@zcwyou ~]# setfacl -m u:zcwyou:rwx /etc/samba/smb.conf
为文件设置acl属性
setfacl命令部分参数
-m: 修正文件确当前 ACL
u: 指明用户
magi: 用户名
rwx: 要设置的权限
/etc/samba/smb.conf: 指定的文件或者目录
通过ls命令也可以查看这个文件的分外权限,把稳一下图中的+号。
查看文件acl属性
7. 如何为目录设置acl属性
以下面格式运行 setfacl 命令可以递归地为指定目录设置 ACL。不才面的例子中,我们会将 /etc/samba/ 目录中的 rwx 权限授予zcwyou用户。
首先先查看当前情形,如下图
为目录设置acl属性
可以看到上图中,只有smb.conf一个文件有+号。
实行以下命令:
[root@zcwyou ~]# setfacl -Rm u:zcwyou:rwx /etc/samba/
-R: 表示把设置递归到子目录中
再次检讨:
检讨目录acl属性
可以看出,所有文件都被设置了acl权限。
利用getacl查看目录
[root@zcwyou ~]# getfacl /etc/samba/
getfacl: Removing leading '/' from absolute path names
file: etc/samba/owner: rootgroup: rootuser::rwx
user:zcwyou:rwx
group::r-x
mask::rwx
other::r-x
利用getacl命令检讨目录acl属性
8. 为组用户设置acl
以下面格式为指定文件运行 setfacl 命令。不才面的例子中,我们会给 zcwyou组授予 /etc/samba/smb.conf 文件的 rwx 权限。
[root@zcwyou ~]# setfacl -m g:zcwyou:rwx /etc/samba/smb.conf
为组用户设置acl属性
g: 表示为一个组设置acl属性
如果对多个用户和组授权,只须要用 逗号 区分开,就像下面这样。
[root@zcwyou ~]# setfacl -m u:user1:rwx,g:group2:rwx /etc/samba/smb.conf
9. 删除acl
以下面格式运行 setfacl 命令会删除文件对指定用户的 ACL。这只会删除用户权限而保留 mask 的值为只读。
[root@zcwyou ~]# setfacl -x u:magi /etc/samba/smb.conf
选项-x: 表示从文件的 ACL 中删除acl属性
利用 选项-b 来删除文件中所有的 ACL,例如:
[root@zcwyou ~]# setfacl -b /etc/samba/smb.conf
选项-b: 表示删除所有的 ACL 条款所有的属性
再次查看删掉后的 ACl 值就会创造所有的东西都不见了,包括 mask 的值也不见了。
10. acl最大权限mask
10.1 最大有效权限mask
mask是用来指定最大有效权限的(利用命令getfacl 文件名显示的结果中倒数第二排会涌现mask这个词)。如果给用户授予了acl权限,是须要和mask的权限“相与”才能得到用户的真正权限。相与是打算机中的术语,皆真方为真,有假便为假。例如mask权限为rwx,某用户的acl权限为r-x,则实际有效权限为r-x。
最大权限也会影响到组权限(例:某文件所有者为tony,chmod授予的普通权限为7,而acl授予tony的权限为5,则acl权限会高于chmod权限)
修正最大有效权限mask
修正mask的命令
setfacl -m m:权限 文件
11. 对acl的属性进行备份和规复
运行以下命令备份和还原 ACL 的值。要制作备份, 须要进入对应的目录然后这样做(假设我们要备份 sites-available 目录中的 ACL 值)。
[root@zcwyou ~]# cd /etc/apache2/sites-available/[root@zcwyou ~]# getfacl -R > acl_backup_for_folder
运行下面命令进行还原acl属性设置
[root@zcwyou ~]# setfacl --restore=/etc/apache2/sites-available/acl_backup_for_folder
12. 总结
Linux的ACL机制是对传统的用户、组、其他用户权限安全机制的补充,结合传统的权限机制,将极为灵巧地根据特定用户为Linux系统的文件或者目录设置特定权限。它是Linux系统工程师必须节制的系统工具。
本文已同步至博客站,尊重原创,转载时请在正文中附带以下链接:
https://www.linuxrumen.com/rmxx/649.html
点击理解更多,快速查看更多的技能文章列表。