ACL权限设置
时间:2010-09-18 来源:cup
Acl(access control list):提供传统的owner,group,other的read,write,excute权限之外进行细部权限设置。Acl可以针对单一用户,单一文件或单一目录进行r、w、x的权限设置,对于需要特殊权限设置的用户、文件、目录十分有用。
Acl可以针对用户、群组、默认属性进行权限设置:
用户:可以针对单一用户进行权限设置
群组:可以针对某一群组进行权限设置
默认属性(umask):在目录下建立文件/目录时,可以使用设置的默认权限
在使用ACL之前先要启动ACL。如下所示:
[root@localhost ~]# mount -o remount,acl /dev/sda4
[root@localhost ~]# mount |grep /dev/sda4
/dev/sda4 on /mnt/sda4 type ext3 (rw,acl)
如果想设置为开机自动开启ACL,修改/etc/fstab即可。
[root@localhost ~]# cat /etc/fstab
……………………………………………………………………………………
/dev/sda4 /mnt/sda4 ext3 defaults,acl 0 3
重启之后,自动加载的分区就支持acl设置了。
Setfacl –m:设置一个acl权限
Setfacl –d:取消一个acl权限
Setfacl –b:取消全部的acl权限
Setfacl –d:设置默认的acl权限,仅针对目录有效
接下来举例说明权限的应用
在新建的分区/dev/sda4中创建一个目录a,将其分配给test用户(即目录a的拥有者为test),用户small属于small用户组,用户small需要拥有目录a的r、w权限;用户sky属于sky用户组,用户sky需要拥有目录a的r权限。
分析:按照上述要求,可以看出用户small和sky不属于test用户组,但需要拥有对目录a的不同权限,没有acl之前,需要将其加入到test中,但是针对这两个用户的权限不同又无法设置。
[root@localhost ~]# cd /mnt/sda4
[root@localhost sda4]# mkdir a
[root@localhost sda4]# ls –l
总计 20
drwxr-xr-x 2 root root 4096 09-18 11:54 a
drwx------ 2 root root 16384 09-17 22:39 lost+found
[root@localhost sda4]# chmod 770 a
[root@localhost sda4]# chown test.test a #设置权限,并将目录a分配给用户test
[root@localhost sda4]# ls –l
总计 20
drwxrwx--- 2 test test 4096 09-18 11:54 a
drwx------ 2 root root 16384 09-17 22:39 lost+found
[root@localhost sda4]# setfacl -m u:small:rw a #设置其他组用户small对目录a有读写权限
[root@localhost sda4]# setfacl -m u:sky:r a #设置其他组用户sky对目录a有读权限
[root@localhost sda4]# getfacl a #取得/查看某个文件/目录的权限
# file: a 前三行显示此文件的传统权限
# owner: test
# group: test
user::rwx #此处显示针对"默认用户"的权限设置
user:small:rw- #此处显示针对用户small的权限设置
user:sky:r-- #此处显示针对用户sky的权限设置
group::rwx #此处显示针对"默认用户组"的权限设置
mask::rwx #此处显示此文件的默认权限
other::--- #此处显示针对其他用户的权限设置
[root@localhost sda4]# setfacl -m g:test:rw a
[root@localhost sda4]# getfacl a
# file: a
# owner: test
# group: test
user::rwx
user:small:rw-
user:sky:r--
group::rwx
group:test:rw- #此处显示对用户组的权限位rw
mask::rwx
other::---
[root@localhost sda4]# setfacl -m m:rx a #对整个目录的下的文件进行设置,之后原先设置的ACL权限都要与这个权限相与,得到其有效权限
[root@localhost sda4]# getfacl a
# file: a
# owner: test
# group: test
user::rwx
user:small:rw- #effective:r—
small之前具有rw权限,设置默认权限rx之后取消了w权限,两个权限比较后的权限为r--,所以small的有效权限为r--
user:sky:r--
group::rwx #effective:r-x
mask::r-x #此处显示默认权限修改为r-w
other::---
注意:使用chmod改变文件权限时相应的ACL也会改变,同理改变ACL值,相应的文件权限也会改变
[root@localhost sda4]# ls -l
总计 24
drwxr-x---+ 3 test test 4096 09-18 14:11 a
drwx------ 2 root root 16384 09-17 22:39 lost+found
如果ls –l之后发现权限位后有"+"表示该文件a设置了ACL