频道栏目
首页 > 系统 > Linux > 正文

文件控制列表命令setfacl和getfacl的使用

2013-08-05 11:38:12         来源:blog.csdn.net/justdb  
收藏   我要投稿

文件控制列表命令setfacl和getfacl的使用

 

一 需求

有以下需求,通过setfacl命令实现

一组用户可写可读可执行,一组用户可写可执行,另一组用户只可读

linux rwx

oracle wx

uplook r

 

二 解决

 

第一步 添加六个用户linux01、linux02、oracle01、oracle02、uplook01、uplook02

[plain] 

[root@serv01 learning]# useradd linux01  

[root@serv01 learning]# useradd linux02  

[root@serv01 learning]# useradd oracle01  

[root@serv01 learning]# useradd oracle02  

[root@serv01 learning]# useradd uplook01  

[root@serv01 learning]# useradd uplook02  

 

第二步 分别设置密码

[plain] 

[root@serv01 learning]# passwd linux01  

[root@serv01 learning]# passwd linux02  

[root@serv01 learning]# passwd oracle01  

[root@serv01 learning]# passwd oracle02  

[root@serv01 learning]# passwd uplook01  

[root@serv01 learning]# passwd uplook02  

 

第三步 添加三个组oracle、linux、uplook

[plain] 

[root@serv01 learning]# groupadd oracle  

[root@serv01 learning]# groupadd linux  

[root@serv01 learning]# groupadd uplook  

 

第四步 查看data目录的权限

[plain] 

[root@serv01 learning]# ll data -d  

drwxr-xr-x. 2 root root 4096 Sep 20 23:31data  

 

第五步 实现功能‘

[plain] 

[root@serv01 learning]# setfacl -m u:linux01:rwx data/  

[root@serv01 learning]# setfacl -m u:linux02:rwx data/  

[root@serv01 learning]# setfacl -m u:oracle01:rwx data/  

[root@serv01 learning]# setfacl -m u:oracle02:rwx data/  

[root@serv01 learning]# setfacl -m u:oracle01:wx data/  

[root@serv01 learning]# setfacl -m u:oracle02:wx data/  

[root@serv01 learning]# setfacl -m u:uplook01:r data/  

[root@serv01 learning]# setfacl -m u:uplook02:r data/  

  

#查看data目录的权限  

[root@serv01 learning]# getfacl data  

# file: data  

# owner: root  

# group: root  

user::rwx  

user:linux01:rwx  

user:linux02:rwx  

user:oracle01:-wx  

user:oracle02:-wx  

user:uplook01:r--  

user:uplook02:r--  

group::r-x  

mask::rwx  

other::r-x  

  

#再次查看data目录的权限  

[root@serv01 learning]# ll data/ -d  

drwxrwxr-x+ 2 root root 4096 Sep 20 23:31 data/  

 

第六步 验证

[plain] 

#以linux01用户登录,发现对data目录可写、可读、可执行  

[root@larrywen /]# ssh linux01@192.168.1.11  

linux01@192.168.1.11's password:  

Welcome to zhink learn  

   

[linux01@serv01 learning]$ cd data  

[linux01@serv01 data]$ ll  

total 0  

[linux01@serv01 data]$ touch file  

[linux01@serv01 data]$ ls  

file  

   

#以oracle01用户登录,发现对data目录可写、可执行,没有读的权限  

[root@larrywen /]# sshoracle01@192.168.1.11  

[oracle01@serv01 ~]$ cd/home/learning/data/  

[oracle01@serv01 data]$ ll  

ls: cannot open directory .: Permissiondenied  

[oracle01@serv01 data]$ touch file2  

[oracle01@serv01 data]$ rm -f file2  

   

#以uplook01用户登录,发现对data目录值具有读的权限  

[root@larrywen /]# sshuplook01@192.168.1.11  

uplook01@192.168.1.11's password:  

Welcome to zhink learn  

[uplook01@serv01 ~]$ cd /home/learning/data  

-bash: cd: /home/learning/data: Permissiondenied  

[uplook01@serv01 ~]$ cat/home/learning/data/test.txt  

cat: /home/learning/data/test.txt:Permission denied  

[uplook01@serv01 ~]$ ls/home/learning/data/  

ls: cannot access /home/learning/data/file:Permission denied  

ls: cannot access /home/learning/data/test.txt:Permission denied  

file test.txt  

 

第七步 以组的形式进行权限分配

[plain] 

#修改创建的六个用户到对应的组,比如linux01、linux02到linux组,以此类推  

[root@serv01 learning]# usermod -g linuxlinux01  

[root@serv01 learning]# usermod -g linuxlinux02  

[root@serv01 learning]# usermod -g oracleoracle01  

[root@serv01 learning]# usermod -g oracleoracle02  

[root@serv01 learning]# usermod -g uplookuplook01  

[root@serv01 learning]# usermod -g uplookuplook02  

   

#以组的形式进行权限分配  

[root@serv01 learning]# setfacl -mg:linux:rwx data/  

[root@serv01 learning]# setfacl -m g:oracle:wxdata/  

[root@serv01 learning]# setfacl -mg:uplook:r data/  

[root@serv01 learning]# getfacl data  

# file: data  

# owner: root  

# group: root  

user::rwx  

user:linux01:rwx  

user:linux02:rwx  

user:oracle01:-wx  

user:oracle02:-wx  

user:uplook01:r--  

user:uplook02:r--  

group::r-x  

group:oracle:-wx  

group:linux:rwx  

group:uplook:r--  

mask::rwx  

other::r-x  

 

三 setfacl的其他使用方法

[plain] 

#获得文件权限控制  

[root@serv01 learning]# getfacl data  

# file: data  

# owner: root  

# group: root  

user::rwx  

user:linux01:rwx  

user:linux02:rwx  

user:oracle01:-wx  

user:oracle02:-wx  

user:uplook01:r--  

user:uplook02:r--  

group::r-x  

group:oracle:-wx  

group:linux:rwx  

group:uplook:r--  

mask::rwx  

other::r-x  

   

#修改mask m参数  

[root@serv01 learning]# setfacl -m m:rdata/  

[root@serv01 learning]# getfacl data  

# file: data  

# owner: root  

# group: root  

user::rwx  

user:linux01:rwx        #effective:r--  

user:linux02:rwx        #effective:r--  

user:oracle01:-wx             #effective:---  

user:oracle02:-wx             #effective:---  

user:uplook01:r--  

user:uplook02:r--  

group::r-x                   #effective:r--  

group:oracle:-wx        #effective:---  

group:linux:rwx                 #effective:r--  

group:uplook:r--  

mask::r--  

other::r-x  

   

#设置mask的值 m参数  

[root@serv01 learning]# setfacl -m m:rwxdata/  

[root@serv01 learning]# getfacl data/  

# file: data/  

# owner: root  

# group: root  

user::rwx  

user:linux01:rwx  

user:linux02:rwx  

user:oracle01:-wx  

user:oracle02:-wx  

user:uplook01:r--  

user:uplook02:r--  

group::r-x  

group:oracle:-wx  

group:linux:rwx  

group:uplook:r--  

mask::rwx  

other::r-x  

   

#取消权限 -x  

[root@serv01 learning]# setfacl -x g:linuxdata/  

[root@serv01 learning]# getfacl data/  

# file: data/  

# owner: root  

# group: root  

user::rwx  

user:linux01:rwx  

user:linux02:rwx  

user:oracle01:-wx  

user:oracle02:-wx  

user:uplook01:r--  

user:uplook02:r--  

group::r-x  

group:oracle:-wx  

group:uplook:r--  

mask::rwx  

other::r-x  

   

#移除所有的文件权限控制 -b  

[root@serv01 learning]# setfacl -b data/  

[root@serv01 learning]# getfacl data/  

# file: data/  

# owner: root  

# group: root  

user::rwx  

group::r-x  

other::r-x  

   

setfacl -m ug:user group:rwx data/  

setfacl -m m:rwx data/  

setfacl -x ug:user group data/  

setfacl -b data/  

getfacl data/  

   

#文件权限可以复制,通过getfacl和setfacl控制  

[root@larrywen soft]# setfacl --help  

setfacl 2.2.49 -- set file access controllists  

Usage: setfacl [-bkndRLP] { -m|-M|-x|-X ...} file ...  

  -m,--modify=acl        modify the currentACL(s) of file(s)  

  -M,--modify-file=file  read ACL entries tomodify from file  

  -x,--remove=acl        remove entries fromthe ACL(s) of file(s)  

  -X,--remove-file=file  read ACL entries toremove from file  

  -b,--remove-all        remove all extendedACL entries  

  -k,--remove-default    remove the defaultACL  

     --set=acl           set the ACL offile(s), replacing the current ACL  

     --set-file=file     read ACLentries to set from file  

     --mask              do recalculatethe effective rights mask  

  -n,--no-mask           don't recalculate theeffective rights mask  

  -d,--default           operations apply tothe default ACL  

  -R,--recursive         recurse intosubdirectories  

  -L,--logical           logical walk, followsymbolic links  

  -P,--physical          physical walk, do notfollow symbolic links  

     --restore=file      restore ACLs(inverse of `getfacl -R')  

     --test              test mode(ACLs are not modified)  

  -v,--version           print version andexit  

  -h,--help              this help text  

   

[root@serv01 test]# touch aa01.txt  

[root@serv01 test]# getfacl aa01.txt  

# file: aa01.txt  

# owner: root  

# group: root  

user::rw-  

group::r--  

other::r--  

[root@serv01 test]# setfacl -m g:linux:rwxaa01.txt  

[root@serv01 test]# getfacl aa01.txt  

# file: aa01.txt  

# owner: root  

# group: root  

user::rw-  

group::r--  

group:linux:rwx  

mask::rwx  

other::r--  

   

[root@serv01 test]# touch bb01.txt  

[root@serv01 test]# getfacl bb01.txt  

# file: bb01.txt  

# owner: root  

# group: root  

user::rw-  

group::r--  

other::r--  

   

[root@serv01 test]# getfacl aa01.txt|setfacl --set-file=- bb01.txt  

[root@serv01 test]# getfacl bb01.txt  

# file: bb01.txt  

# owner: root  

# group: root  

user::rw-  

group::r--  

group:linux:rwx  

mask::rwx  

other::r--  

 

相关TAG标签 命令 文件
上一篇:RHEL 6.4安装svn和apache
下一篇:passwd命令读取的shadow文件没有任何权限,为什么普通用户可以正常登录
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站