Linux的权限非常重要,我们之前所说的几种权限中,并没有能针对一个用户或是一组用户单独进行设置,而ACL权限可以帮助我们实现这个功能,比如说有一个文件的所有者和所有组都是root,这个文件的权限是644,如何让other用户对这个文件单独进行写执行操作呢。
ACL权限的设置和查看
如果要使用ACL权限,首先要确定文件系统支持acl权限。使用tune2fs -l /dev/sda2(/目录所在块),如果在Default mount options字段出现acl 就意味着文件系统支持acl。Centos7.6默认支持。
[root@localhost131 tmp]# tune2fs -l /dev/sda2 tune2fs 1.42.9 (28-Dec-2013) Filesystem volume name: <none> Last mounted on: / Filesystem UUID: b1ef1368-3350-42c9-9d3b-e3095bb399f4 Filesystem magic number: 0xEF53 Filesystem revision #: 1 (dynamic) Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize Filesystem flags: signed_directory_hash Default mount options: user_xattr acl //支持facl
?配置acl命令
setfacl [选项] u:用户名:权限 文件 (设置acl权限)
u:用户名:权限 ------- u:tom:wx
u::wx代表设置文件所有者的acl
选项:
-m :设置acl
-x :删除指定acl
-b :删除所有acl
getfac 文件名 (查看acl权限)
例子;
root用户新建文件aa查看基本权限
[root@localhost131 tmp]# ll | grep aa -rw-r--r--. 1 root root 0 8月 2 10:22 aa //对other用户只有r权限
使用setfacl -m 为tom用户设置acl权限,并用getfacl查看权限
[root@localhost131 tmp]# setfacl -m u:tom:wx aa //为tom用户增加对aa文件写、执行权限 [root@localhost131 tmp]# getfacl aa //查询aa的acl # file: aa # owner: root # group: root user::rw- user:tom:-wx group::r-- mask::rwx other::r--
[root@localhost131 tmp]# setfacl -m u:xh:wx aa
此时再用ls -l查看文件aa,发现基本权限最后多了1个+号,这是提醒我们此文件被设置了acl权限。
[root@localhost131 tmp]# !1033 ll | grep aa -rw-rwxr--+ 1 root root 0 8月 2 10:22 aa
删除指定的acl
[root@localhost131 tmp]# setfacl -x u:tom aa //删除tom用户的acl [root@localhost131 tmp]# getfacl aa # file: aa # owner: root # group: root user::rw- user:xh:-wx group::r-- mask::rwx other::r--
删除所有acl
[root@localhost131 tmp]# setfacl -b aa //删除所有acl [root@localhost131 tmp]# getfacl aa //查询aa的acl权限 # file: aa # owner: root # group: root user::rw- group::r-- other::r-- [root@localhost131 tmp]# ll | grep aa //ls命令查询,发现+号没有了 -rw-r--r--. 1 root root 0 8月 2 10:22 aa