linux 文件扩展权限ACL(访问控制列表)

  • A+
所属分类:linux技术
摘要

在linux中,文件与目录设置不止基础权限:r,w,x,特殊权限:suid,sgid,sticky,还有文件扩展权限ACL,ACL的全称是 Access

一.关于文件扩展权限ACL

在linux中,文件与目录设置不止基础权限:r,w,x,特殊权限:suid,sgid,sticky,还有文件扩展权限ACL,ACL的全称是 Access

Control List (访问控制列表) ,一个针对文件/目录的访问控制列表。它在UGO权限管理的基础上为文件系统提供一个额外的、更灵活的权

限管理机制。它被设计为UNIX文件权限管理的一个补充。ACL允许你给任何的用户或用户组设置任何文件/目录的访问权限。

二.给文件加扩展权限

1.设置用户stick对文件ceshi.txt拥有的rwx权限 ,stick不属于ceshi.txt的所属主和组,stick是other,怎么做?

[root@node5 ~]# touch /tmp/ceshi.txt [root@node5 ~]# echo "hello world ! " >> /tmp/ceshi.txt    [root@node5 ~]# getfacl /tmp/ceshi.txt  getfacl: Removing leading '/' from absolute path names # file: tmp/ceshi.txt # owner: root # group: root user::rw- group::r-- other::r--  #参数u:设置某个用户拥有的权限  [root@node5 ~]# setfacl -m u:stick:rwx /tmp/ceshi.txt   [root@node5 ~]# getfacl /tmp/ceshi.txt  getfacl: Removing leading '/' from absolute path names # file: tmp/ceshi.txt # owner: root # group: root user::rw- user:stick:rwx group::r-- mask::rwx other::r--  [root@node5 ~]# ll /tmp/ceshi.txt  -rw-rwxr--+ 1 root root 15 Oct 15 16:39 /tmp/ceshi.txt   [root@node5 ~]# su stick [stick@node5 root]$ cat /tmp/ceshi.txt  hello world !  [stick@node5 root]$ echo "可以写入" >> /tmp/ceshi.txt    [stick@node5 root]$ exit exit 

三.给目录加扩展权限

[root@node5 ~]# mkdir /tmp/test [root@node5 ~]# getfacl /tmp/test getfacl: Removing leading '/' from absolute path names # file: tmp/test # owner: root # group: root user::rwx group::r-x other::r-x  #参数-d  default   设置默认acl,对目录有效,此目录下新建的目录或文件都继承此acl权限 [root@node5 ~]# setfacl -m d:u:stick:rwx /tmp/test  [root@node5 ~]# getfacl /tmp/test getfacl: Removing leading '/' from absolute path names # file: tmp/test # owner: root # group: root user::rwx group::r-x other::r-x default:user::rwx default:user:stick:rwx default:group::r-x default:mask::rwx default:other::r-x   [root@node5 ~]# ll /tmp/test -d drwxr-xr-x+ 2 root root 6 Oct 15 17:22 /tmp/test  [root@node5 ~]# touch /tmp/test/test.txt [root@node5 ~]# mkdir /tmp/test/data  #因为-d参数,所以test下所有创建的文件和目录都继承了默认的acl权限 [root@node5 ~]# getfacl /tmp/test/test.txt  getfacl: Removing leading '/' from absolute path names # file: tmp/test/test.txt # owner: root # group: root user::rw- user:stick:rwx			#effective:rw- group::r-x			#effective:r-- mask::rw- other::r--  [root@node5 ~]# getfacl /tmp/test/data getfacl: Removing leading '/' from absolute path names # file: tmp/test/data # owner: root # group: root user::rwx user:stick:rwx group::r-x mask::rwx other::r-x default:user::rwx default:user:stick:rwx default:group::r-x default:mask::rwx default:other::r-x 

四.给目录下所有文件都加扩展权限

[root@node5 ~]# mkdir -p /tmp/a/b/c  [root@node5 ~]# touch /tmp/a/test.txt  [root@node5 ~]# cd /tmp/  #-R一定要在-m前面,表示目录下所有文件 [root@node5 tmp]# setfacl -R -m u:elk:rw- a  [root@node5 tmp]# getfacl a/test.txt  # file: a/test.txt # owner: root # group: root user::rw- user:elk:rw- group::r-- mask::rw- other::r-- 

五.去掉单个acl权限

[root@node5 tmp]# setfacl -x u:elk a/test.txt   [root@node5 tmp]# getfacl a/test.txt  # file: a/test.txt # owner: root # group: root user::rw- group::r-- mask::r-- other::r-- 

六.去掉所有acl权限

[root@node5 tmp]# setfacl -R -b a  [root@node5 tmp]# getfacl a # file: a # owner: root # group: root user::rwx group::r-x other::r-x