ACL (Access Control List) 访问控制列表
在ugo的权限中,两个人都是other,但是我想要不同对待。
于是出现了ACL权限
ACL主要是针对单一用户、单一文件或者目录对rwx权限进行细分。可以针对用户、群组还有umask进行设置。
注意:要使用acl权限,需要分区激活acl功能。
[root@server150 ~]# dumpe2fs -h /dev/sda2 | grep acl
dumpe2fs 1.41.12 (17-May-2010)
Default mount options: user_xattr acl
对于未激活acl功能的分区,如何操作?
1)分区未被挂载
# mount -o acl /dev/sda6 /mnt/sda6
2)分区已经被挂载
# mount -o acl,remount /dev/sda2
和acl相关的命令
getfacl:查看文件的访问控制列表
setfacl:设置文件的访问控制列表
setfacl u:用户名:权限 指定目录或文件
取消制定用户的acl权限
setfacl -x u:用户名 制定目录或文件
移除指定目录全部的acl权限
setfacl -b test/
一、为用户添加访问控制
[root@server150 ~]# mkdir /acl
[root@server150 ~]# cd /acl/
[root@server150 acl]# echo hello a > test.txt
[root@server150 acl]# useradd tom
[root@server150 acl]# useradd jack
例如:tom对文件能够读写,jack有读和执行的权限
1、查看文件的acl权限
# getfacl /acl/test.txt
getfacl: Removing leading '/' from absolute path names
# file: acl/test.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
2、设置文件的acl权限 -m
setfacl -m u:用户名:权限 文件名
[root@server150 acl]# setfacl -m u:tom:rw /acl/test.txt
[root@server150 acl]# getfacl test.txt
# file: test.txt
# owner: root
# group: root
user::rw-
user:tom:rw-
group::r--
mask::rw-
other::r--
[root@server150 acl]# setfacl -m u:jack:rx test.txt
[jack@server150 ~]# su - jack
[jack@server150 ~]$ cd /acl/
[jack@server150 acl]$ ll
total 4
-rw-rwxr--+ 1 root root 8 Jul 29 11:23 test.txt
[jack@server150 acl]$ cat test.txt
hello a
[jack@server150 acl]$ vim test.txt //不可写
[jack@server150 acl]$ exit
logout
[root@server150 acl]# su - tom
[tom@server150 ~]$ cd /acl
[tom@server150 acl]$ ls
test.txt
[tom@server150 acl]$ cat test.txt
hello a
[tom@server150 acl]$ vim test.txt //可写
二、移除单个用户的访问控制列表 -x
[root@server150 acl]# setfacl -x u:tom test.txt
[root@server150 acl]# getfacl test.txt
# file: test.txt
# owner: root
# group: root
user::rw-
user:jack:r-x
group::r--
mask::r-x
other::r--
三、移除全部用户的访问控制列表 -b
[root@server150 acl]# setfacl -m u:tom:rw test.txt
[root@server150 acl]# getfacl test.txt
# file: test.txt
# owner: root
# group: root
user::rw-
user:tom:rw-
user:jack:r-x
group::r--
mask::rwx
other::r--
[root@server150 acl]# setfacl -b test.txt
[root@server150 acl]# getfacl test.txt
# file: test.txt
# owner: root
# group: root
user::rw-
group::r--
other::r--
四、设置默认权限 d
对目录设置默认ACL权限,在目录内创建的文件会继承目录的ACL权限
# mkdir /acl
# setfacl -m d:u:a:rw- /acl/
# getfacl /acl/
getfacl: Removing leading '/' from absolute path names
# file: acl/
# owner: root
# group: root
user::rwx
group::r-x
other::r-x
default:user::rwx
default:user:a:rw-
default:group::r-x
default:mask::rwx
default:other::r-x
# cd /acl/
# touch ab
# getfacl ab
# file: ab
# owner: root
# group: root
user::rw-
user:a:rw-
group::r-x #effective:r-- //a用户对文件的真实权限
mask::rw-
other::r--
五、设置掩码 m
用户真实的权限是所设置的权限与掩码相与的结果
# setfacl -m m::r-- ab //设置掩码为r--
# getfacl ab
# file: ab
# owner: root
# group: root
user::rw-
user:a:rw- #effective:r-- //a用户对文件的真实权限
group::r-x #effective:r--
mask::r--
other::r--