Linux的ACL规则设置——setfacl及getfacl命令的使用详解
发布时间:2020-12-14 00:42:41 所属栏目:Linux 来源:网络整理
导读:Linux系统中可以针对组、用户、其他人设置不同的读写执行权限,但是还不够精准,若想给某个特定的用户设置一个独特的权限呢?而这个用户又不是该文件或目录的属组或属组,怎么破? 针对特定的某个用户设置权限的方法如下: [[email?protected] ~]# dmesg | g
Linux系统中可以针对组、用户、其他人设置不同的读写执行权限,但是还不够精准,若想给某个特定的用户设置一个独特的权限呢?而这个用户又不是该文件或目录的属组或属组,怎么破?
针对特定的某个用户设置权限的方法如下: [[email?protected] ~]# dmesg | grep -i acl #查看系统是否可以设置ACL,若可以查到下面标红的字样,则代表没问题。 [ 1.173259] systemd[1]: systemd 219 running in system mode. (+PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +‘ACL‘ +XZ +LZ4 -SECCOMP +BLKID +ELFUTILS +KMOD +IDN) [ 2.487295] SGI XFS with ‘ACL‘s,security attributes,no debug enabled 1、setfacl——设置ACL规则(针对单一用户设置)
设置举例: [[email?protected] ~]# touch acl_test1 #创建一个测试文件 [[email?protected] ~]# setfacl -m u:lv:rw acl_test1 #单独赋予用户“lv”读写权限 [[email?protected] ~]# ll acl_test1 #查看文件属性,在权限栏最后多了一个“+”,这就是刚设置的ACL -rw-rw-r--+ 1 root root 0 9月 3 08:45 acl_test1 [[email?protected] ~]# setfacl -m u::rwx acl_test1 #若u后面不写用户,则表示设置该文件的属主权限 [[email?protected] ~]# ll acl_test1 #会发现属主的权限变成了rwx。 -rwxrw-r--+ 1 root root 0 9月 3 08:45 acl_test1 2、getfacl——查看设置的ACL规则选项和setfacl基本相同,可以通过man手册来查看具体的使用选项,最主要还是用来查看我们使用setfacl设置的ACL规则; 使用举例: [[email?protected] ~]# getfacl acl_test1 #使用getfacl查看设置的ACL权限 # file: acl_test1 #文件名 # owner: root #文件属主 # group: root #文件属组 user::rwx #属主的权限 user:lv:rw- #用户“lv”的权限 group::r-- #文件属组的权限 mask::rw- #此文件默认的有效权限 #用户或群组所设置的权限必须要存在于mask的权限设置范围内才会生效 other::r-- #其他任何人的权限 [[email?protected] ~]# ll acl_test1 #使用“ll”命令查看后,进行比较 -rwxrw-r--+ 1 root root 0 9月 3 08:45 acl_test1 3、setfacl和getfacl综合使用举例:#1、针对有效权限mask的设置方式 [[email?protected] ~]# setfacl -m m:r acl_test1 #设置该文件的权限仅有读权限(r)。 [[email?protected] ~]# getfacl acl_test1 #查看 # file: acl_test1 # owner: root # group: root user::rwx user:lv:rw- #effective:r-- #注释为有效权限只有r(读权限),哪怕用户后面有w(写权限),也不生效 group::r-- mask::r-- #是因为这里,这里有并且用户也具有的权限,才是有效权限,如这里的“r”权限。 other::r-- #2、针对特定群组的方式设置权限(删除了原本的文件,又新建了一个acl_test1): [[email?protected] ~]# setfacl -m g:mygroup:rx acl_test1 #设置mygroup组有rx权限 [[email?protected] ~]# getfacl acl_test1 #查看 # file: acl_test1 # owner: root # group: root user::rw- group::r-- group:mygroup:r-x #这里就是新设置的权限 mask::r-x other::r-- #3、让myuser1在/usr/local下面一直具有rx的默认权限 [[email?protected] ~]# setfacl -m d:u:myuser1:rx /usr/local/ #设置权限 [[email?protected] ~]# getfacl /usr/local/ #查看 getfacl: Removing leading ‘/‘ from absolute path names # file: usr/local/ # owner: root # group: root user::rwx group::r-x other::r-x default:user::rwx default:user:myuser1:r-x #就是这行咯 default:group::r-x default:mask::r-x default:other::r-x #创建一个目录,并查看是否继承了默认权限 [[email?protected] ~]# cd /usr/local/ [[email?protected] local]# mkdir test [[email?protected] local]# ls -ld test/ #有“+”的权限,说明继承默认权限了 drwxr-xr-x+ 2 root root 6 9月 3 09:51 test/ [[email?protected] local]# getfacl test #使用getfacl查看 # file: test # owner: root # group: root user::rwx user:myuser1:r-x group::r-x mask::r-x other::r-x default:user::rwx default:user:myuser1:r-x #就是这行咯 default:group::r-x default:mask::r-x default:other::r-x #以下为取消用户的某些ACL规则 [[email?protected] local]# setfacl -x u:myuser1 /usr/local/ #取消myuser1用户对该目录的ACL规则 [[email?protected] local]# setfacl -x d:u:myuser1 /usr/local/ #取消递归的ACL规则 [[email?protected] local]# setfacl -m u:myuser1:- /usr/local #使myuser1用户无法使用该目录,在权限字段使用“-”表示即可。 ———————— 本文至此结束,感谢阅读 ———————— (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |