那 ACL 主要能够针对哪些方面来控制权限呢?他主要能够针对几个项目:
使用者 (user):能够针对使用者来配置权限。
群组 (group):针对群组为对象来配置其权限;
默认属性 (mask):还能够针对在该文件夹下在创建新文件/文件夹时。规范新数据的默认权限。
ACL 的配置技巧: getfacl, setfacl
getfacl, setfaclgetfacl:取得某个文件/文件夹的 ACL 配置项目。
setfacl:配置某个文件夹/文件的 ACL 规范。
setfacl 命令使用方法
[root@www ~]# setfacl [-bkRd] [{-m|-x} acl參数] 目标文件名称 选项与參数: -m :配置兴许的 acl 參数给文件使用,不可与 -x 合用。 -x :删除兴许的 acl 參数,不可与 -m 合用; -b :移除全部的 ACL 配置參数; -k :移除默认的 ACL 參数,关于所谓的『默认』參数于兴许范例中介绍; -R :递归配置 acl 。亦即包含次文件夹都会被配置起来; -d :配置『默认 acl 參数』的意思! |
# 1. 针对特定使用者的方式: # 配置规范:『 u:[使用者账号列表]:[rwx] 』,比如针对 vbird1 的权限规范 rx : [root@www ~]# touch acl_test1 [root@www ~]# ll acl_test1 -rw-r--r-- 1 root root 0 Feb 27 13:28 acl_test1 [root@www ~]# setfacl -m u:vbird1:rx acl_test1 [root@www ~]# ll acl_test1 -rw-r-xr--+ 1 root root 0 Feb 27 13:28 acl_test1 # 权限部分多了个 + ,且与原本的权限 (644) 看起来差异非常大!但要怎样查阅呢? [root@www ~]# setfacl -m u::rwx acl_test1 [root@www ~]# ll acl_test1 -rwxr-xr--+ 1 root root 0 Feb 27 13:28 acl_test1 # 无使用者列表,代表配置该文件拥有者,所以上面显示 root 的权限成为 rwx 了! |
配置前请加上 -m 这个选项。 假设一个文件配置了 ACL 參数后。他的权限部分就会多出一个 + 号了!
可是此时你看到的权限与实际权限可能就会有点误差! 那要怎样观察呢?就透过 getfacl 吧!
getfacl 命令使用方法
[root@www ~]# getfacl filename 选项与參数: getfacl 的选项差点儿与 setfacl 同样。所以鸟哥这里就免去了选项的说明啊! |
以上面的结果来看。我们刚刚配置的 vbird1 对于这个文件具有 r 与 x 的权限啦。
# 2. 针对特定群组的方式: # 配置规范:『 g:[群组列表]:[rwx] 』,比如针对 mygroup1 的权限规范 rx : [root@www ~]# setfacl -m g:mygroup1:rx acl_test1 [root@www ~]# getfacl acl_test1 # file: acl_test1 # owner: root # group: root user::rwx user:vbird1:r-x group::r-- group:mygroup1:r-x <==这里就是新增的部分! |
只是,你应该会认为奇怪的是, 那个 mask 是什么东西啊?事实上他有点像是『有效权限』的意思!
他的意义是: 使用者或群组所配置的权限必需要存在于 mask 的权限配置范围内才会生效。此即『有效权限 (effective permission)』
# 3. 针对有效权限 mask 的配置方式: # 配置规范:『 m:[rwx] 』,比如针对刚刚的文件规范为仅有 r : [root@www ~]# setfacl -m m:r acl_test1 [root@www ~]# getfacl acl_test1 # file: acl_test1 # owner: root # group: root user::rwx user:vbird1:r-x #effective:r-- <==vbird1+mask均存在者。仅有 r 而已! group::r-- group:mygroup1:r-x #effective:r-- mask::r-- other::r-- |
# 1. 先測试看看。使用 myuser1 是否能进入该文件夹? [myuser1@www ~]$ cd /srv/projecta -bash: cd: /srv/projecta: Permission denied <==确实不可进入! # 2. 開始用 root 的身份来配置一下该文件夹的权限吧! [root@www ~]# setfacl -m u:myuser1:rx /srv/projecta [root@www ~]# getfacl /srv/projecta # file: srv/projecta # owner: root # group: projecta user::rwx user:myuser1:r-x <==还是要看看有没有配置成功喔。 group::rwx mask::rwx other::--- # 3. 还是得要使用 myuser1 去測试看看结果! |
# 1. 先測试看看。使用 myuser1 是否能进入该文件夹? [myuser1@www ~]$ cd /srv/projecta -bash: cd: /srv/projecta: Permission denied <==确实不可进入! # 2. 開始用 root 的身份来配置一下该文件夹的权限吧。 [root@www ~]# setfacl -m u:myuser1:rx /srv/projecta [root@www ~]# getfacl /srv/projecta # file: srv/projecta # owner: root # group: projecta user::rwx user:myuser1:r-x <==还是要看看有没有配置成功喔! group::rwx mask::rwx other::--- # 3. 还是得要使用 myuser1 去測试看看结果! [myuser1@www ~]$ cd /srv/projecta [myuser1@www projecta]$ ll -a drwxrws---+ 2 root projecta 4096 Feb 27 11:29 . <==确实能够查询档名 drwxr-xr-x 4 root root 4096 Feb 27 11:29 .. [myuser1@www projecta]$ touch testing touch: cannot touch `testing': Permission denied <==确实不能够写入! |
# 4. 针对默认权限的配置方式: # 配置规范:『 d:[ug]:使用者列表:[rwx] 』 # 让 myuser1 在 /srv/projecta 底下一直具有 rx 的默认权限! |