访问控制列表
今天想要分享的就是访问控制列表; Linux的访问控制列表,也需要着重理解; 它可以实现权限的限制;
设置文件访问控制列表:
- 通常用命令setfacl来实现
- 可以修改acl规则
setfacl命令:
- 作用:设置文件访问控制列表
- 语法:setfacl+ 选项 + u:rwx: 文件
- 选项:
- -m:修改acl规则
- -M:从文件中读取相应的权限进行设置,用用于批量管理用户权限
- -x:表示取消某个用户得到的acl权限
- -b:撤销所有的acl权限
- --set-file:复制一个文件acl权限到另外一个文件。
- 修改acl规则:
- 通过-m选项,可以修改文件的acl规则;
#设置liangjiawei权限,可以让liangjiawei对a.txt文件有写的权限;
[root@Linux0 test]# ll a.txt
-rw-r--r-- 1 root root 4 9月 28 22:17 a.txt
#设置这个a.txt的文件设置acl权限
[root@Linux0 test]# setfacl -m u:liangjiawei:rw- a.txt
#切换liangjiawei用户可以直接使用修改
[liangjiawei@Linux0 test]$ echo aaa >> a.txt
[liangjiawei@Linux0 test]$ cat a.txt
123
aaa
#查看文件的acl权限
[liangjiawei@Linux0 test]$ getfacl a.txt
# file: a.txt
# owner: root
# group: root
user::rw- #第一个user没有写用户名,代表是默认属主root的权限
user:liangjiawei:rw- #第二个user代表得是liangjiawei用户得权限
group::r--
mask::rw-
other::r--
#setfacl可以设置user以及用户组;权限;
#设置组权限;也可以设置其他人的权限;
#g:代表用户组,o:代表其他人权限;
[root@Linux0 test]# setfacl -m g:liangjiawei:rwx a.txt
#取消权限:
[root@Linux0 test]# setfacl -m u:liangjiawei:- a.txt
- 设置acl权限的注意要点
#用户必须存在,否则就会报错
[root@Linux0 test]# setfacl -m u:zhangsan:rwx a.txt
setfacl: Option -m: 无效的参数 near character 3
#然后检查才发现原来是没有这个用户
[root@Linux0 test]# id zhangsan
id: zhangsan: no such user
#解决的办法就是:创建这个张三的用户即可
[root@Linux0 test]# useradd zhangsan
[root@Linux0 test]# id zhangsan
uid=1001(zhangsan) gid=1001(zhangsan) 组=1001(zhangsan)
#现在就可以设置zhangsan的acl权限了
[root@Linux0 test]# setfacl -m u:zhangsan:rwx a.txt
#然后zhangsan就能够修改文件内容
[root@Linux0 test]# su - zhangsan
[zhangsan@Linux0 ~]$ cd /test/
[zhangsan@Linux0 test]$ echo zhangsan >> a.txt
- -M 选项。批量修改acl规则
#创建一个acl文件
[root@Linux0 test]# vim acl.txt
u:liangjiawei:r--
u:zhangsan:rwx
g:zhangsan:rwx
#直接从文件导入权限;
[root@Linux0 test]# setfacl -M acl.txt a.txt
- 取消acl权限
#【-x】撤销某个用户得acl权限,恢复到普通ugo权限:
#不能单独撤销某一个权限,比如只撤销可写权限
[root@Linux0 test]# setfacl -x u:liangjiawei a.txt
#撤销所有的acl权限:
[root@Linux0 test]# setfacl -b a.txt
[root@Linux0 test]# getfacl a.txt
- 如果复制acl权限;可以使用另外一个选项
#随便创建两个文件
[root@Linux0 test]# touch bb >> b.txt
[root@Linux0 test]# touch cc >> c.txt
#这里就是设置一个acl权限
[root@Linux0 test]# setfacl -m u:liangjiawei:rwx a.txt
#然后把a.txtacl权限复制给b.txt
[root@Linux0 test]# getfacl a.txt | setfacl --set-file=- b.txt
[root@Linux0 test]# getfacl b.txt
# file: b.txt
# owner: root
# group: root
user::rw-
user:liangjiawei:rwx
group::r--
mask::rwx
other::r--
# - 代表输出流
[root@Linux0 test]# echo liangjiawei | cat -
liangjiawei
- 临时减低权限:
- mask:会临时降低acl用户或者组的权限,只能降低用户权限,不能提升
#设置acl用户的权限为rw:
[root@Linux0 test]# setfacl -m u:liangjiawei:rw c.txt
#然后切换liangjiawei,这个用户是可以写入的
[liangjiawei@Linux0 test]$ echo liangjiawei > c.txt
[liangjiawei@Linux0 test]$ cat c.txt
liangjiawei
#如果我现在是设置umask权限
[root@Linux0 test]# setfacl -m mask::r c.txt
#这时候。liangjiawei用户就只能读,不能写
[liangjiawei@Linux0 test]$ echo ll >> c.txt
-bash: c.txt: 权限不够
#注意:如果lutixia用户本身r权限(只读权限),即使mask设置为rw,也是不能写的。
#而且设置了mask之后,如果再次使用setfacl进行权限的设置,那么mask的作用就失效了。
分享环节:
hi,亲爱的朋友们:
- 感谢你们耐心完这个笔记,如果笔记中出现的一些软件包、资源找不到的可以直接留言&私聊,我看见了就回复;
- 资源免费共享;有需要滴滴,(仅仅是我有的)
我的坚持初衷:
标签:Linux0,12,学霸,权限,学渣,test,liangjiawei,txt,root From: https://blog.51cto.com/u_14146585/12249455