0
点赞
收藏
分享

微信扫一扫

架构师之路-学渣到学霸历程-12

访问控制列表

今天想要分享的就是访问控制列表; 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,亲爱的朋友们:

  • 感谢你们耐心完这个笔记,如果笔记中出现的一些软件包、资源找不到的可以直接留言&私聊,我看见了就回复;
  • 资源免费共享;有需要滴滴,(仅仅是我有的)

我的坚持初衷:💕立志要成为一名架构师

  • 不断地去坚持学,其中的各种各样的难度,不言而喻~!
  • 坚持不是一件容易的事情,但它却是成功的关键。做起来吧~!

如果你也想要坚持:那么组团吧,咋们一块互相监督;一天一点分享也是进步;最怕就是孤军奋战!加油吧,追梦人~!

举报

相关推荐

0 条评论