Linux权限管理-ACL访问控制列表
ACL 全称是 Access Control List 翻译为 访问控制列表。
在 Linux 中 ugo 有经典的 rwx 三种权限,但是在有些场合依旧满足不了对权限的需要,ACL 作为一种更细力度的控制满足了对访问者权限的设置。
ACL 针对既可以对用户来设置,也能对用户组、子文件、目录继承父目录。对于ACL来说需要 Linux内核 和 文件系统 的配合。
在红帽的新发型版中使用的是 xfs 文件系统,这种文件系统默认就是支持acl的,就不需要其他额外的设置了。
对于 acl 来讲,需要使用 setfacl 命令。
红帽的版本
Redhat 7.x 之后文件系统默认开启了ACL
这里使用的系统是 release 9.4 也就是 红帽 9.4 的发行版。
[root@server ~]# cat /etc/redhat-release
Rocky Linux release 9.4 (Blue Onyx)
[root@server ~]# df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
--snip--
/dev/mapper/rl_192-root xfs 17756160 1379828 16376332 8% /
/dev/nvme0n1p1 xfs 983040 230652 752388 24% /boot
--snip--
在 df -T 的 Type 列表,可以看到新版本的红帽系统9中使用的文件系统是 xfs 。
[root@server ~]# dmesg | grep -i acl
[ 1.738016] systemd[1]: systemd 252-32.el9_4 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP +GCRYPT +GNUTLS +OPENSSL +ACL +BLKID +CURL
[ 3.845909] SGI XFS with ACLs, security attributes, scrub, quota, no debug enabled
[ 4.239428] systemd[1]: systemd 252-32.el9_4 running in system mode (+PAM +AUDIT +SELINUX -APPARMOR +IMA +SMACK +SECCOMP +GCRYPT +GNUTLS +OPENSSL +ACL +BLKID +CURL
通过使用上面的 dmesg | grep -i acl 可以看到该文件系统是启动了 acl 的。
不确切的说对于 Redhat 7.X 之后的系统,系统使用的文件系统是 默认开启 了 ACL 的。
Redhat 7.x 之前查看文件系统是否开启了ACL
在 Redhat 7.X 之前的版本系统 有可能 是 没有 开启 ACL。
之前的红帽使用的文件系统使用的是 ext4 文件系统,可以使用 dumpe2fs 来查看该 ext4 文件系统是否开启了 ACL。
这里我启用了 CentOS 6.5 的版本。
[root@localhost ~]# cat /etc/redhat-release
CentOS release 6.5 (Final)
使用 df -T该系统使用了 ext4 作为系统的文件系统。
[root@localhost ~]# df -T
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root ext4 18069936 771240 16380784 5% /
tmpfs tmpfs 961184 0 961184 0% /dev/shm
/dev/sda1 ext4 495844 32659 437585 7% /boot
查看现在的 ext4 文件系统是否支持 acl 可以使用 dumpe2fs 该命令。
[root@localhost ~]# dumpe2fs -h /dev/mapper/VolGroup-lv_root
--snip--
Default mount options: user_xattr acl
--snip--
在 Default mount options 这一行可以看到最后的一个就是 acl 表名是开启了 acl 的。
如果此时发现没有开启ACL
暂时挂载
可以使用 mount 来暂时让文件系统有 acl ,如下:
[root@localhost ~]# mount -o remount,acl /
对于 xfs 文件系统来说就没有这个顾虑,因为本来 xfs 就有 acl 。
永久在 /etc/fstab
[root@localhost ~]# vi /etc/fstab
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1
改为
/dev/mapper/VolGroup-lv_root / ext4 defaults,acl 1 1
也就是在 default 后面添加 acl 中间使用 , 来分隔。

浙公网安备 33010602011771号