Linux学习笔记,零碎知识点整理(1) —— 运维

  Linux中setfacl命令的用法介绍

  对自己所自习过的Linux知识点做个学习记录,以便在自己遗忘之时回顾。


  相信有朋友遇到过如下场景的问题,在Linux中怎样限制个别用户对指定文件或目录的使用权限呢? 好,我们接下来就来回答该问题。

  首先,查阅setfacl命令:

	setfacl
	相关命令:chacl,getfacl
	setfacl	-- 设定文件访问控制列表
	用法: setfacl [-bkndRLP] { -m|-M|-x|-X ... } file ...
	  -m, --modify=acl 更改文件的访问控制列表
	  -M, --modify-file=file 从文件读取访问控制列表条目更改
	  -x, --remove=acl 根据文件中访问控制列表移除条目
	  -X, --remove-file=file 从文件读取访问控制列表条目并删除
	  -b, --remove-all 删除所有扩展访问控制列表条目
	  -k, --remove-default 移除默认访问控制列表
	      --set=acl 设定替换当前的文件访问控制列表
	      --set-file=file 从文件中读取访问控制列表条目设定
	      --mask 重新计算有效权限掩码
	  -n, --no-mask 不重新计算有效权限掩码
	  -d, --default 应用到默认访问控制列表的操作
	  -R, --recursive 递归操作子目录
	  -L, --logical 依照系统逻辑,跟随符号链接
	  -P, --physical 依照自然逻辑,不跟随符号链接
	      --restore=file 恢复访问控制列表,和“getfacl -R”作用相反
	      --test 测试模式,并不真正修改访问控制列表属性
	  -v, --version           显示版本并退出
	  -h, --help              显示本帮助信息

  其次,我们需清楚Linux中权限问题:

	读取权限:等于4 用 r 表示

	写入权限:等于2 用 w 表示
	
	执行权限:等于1 用 x 表示

  最后,了解用户和用户组的相关内容。



   接下来,进行讲解和测试,我测试环境是Kali Linux,在Kali上除root外有一普通用户为xyl。


  例如,我在root下任意建立了一sh文件,并授予其执行权限:

Linux学习笔记,零碎知识点整理(1) —— 运维_第1张图片
  并通过查看acl权限获取其文件信息:

	C:\root> getfacl text.sh 
	# file: text.sh
	# owner: root
	# group: root
	user::rwx
	group::r-x
	other::r-x

  由上面的group和other可知,用户xyl是拥有对text.sh脚本的运行权限的,为了测试,我们暂且取掉xyl用户对该脚本文件的 “x” 运行权限:

   setfacl 设定文件访问控制列表前:

Linux学习笔记,零碎知识点整理(1) —— 运维_第2张图片
   我们不难看出,xyl用户是拥有text.sh脚本文件的运行权的。

  修改xyl用户的ACL访问权限:
	setfacl -m u:xyl:r-- /root/test.sh	
	
	# 取消用户xyl对text.sh脚本文件的运行权限

Linux学习笔记,零碎知识点整理(1) —— 运维_第3张图片
  很明显的看到,xyl用户执行text.sh文件时受到了权限限制:
Linux学习笔记,零碎知识点整理(1) —— 运维_第4张图片
  接下来,让我玩个刺激的(嘿嘿,手动滑稽中~):

  注意:由于kali vmware tool sharing文件夹是我Win10和Linux的共享文件夹,所以,Linux对该文件夹中的内容是无法操作的,那么,只好复制一下该音视频文件,放在Linux的其他目录下了。

  我们选个图像和音视频文件做尝试,如上图,用户xyl是可以正常打开“汉服小姐姐.jpg”和“Take me hand.flac”音视频文件的,接下来:

	setfacl -m u:xyl:-wx /root/图片/小姐姐/汉服小姐姐.jpg 
	# 限制用户xyl对汉服小姐姐.jpg文件权限,无法读取该图片。

	setfacl -m u:xyl:--- /home/xyl/Take\ me\ hand.flac
	# 修改Take me hand.flac音视频文件对用户xyl的权限,取掉所有权。

  理之当然,xyl失去了对如上文件的使用权!

  但很快我们就会发现,这样仅能对某一位用户进行权限限制,在实际情况中,对多位用户限制时,会显得较麻烦。那么,有无更简便的方式呢,当然有。我们可以对多位用户设定用户组,然后再对其进行限定:

	setfacl -m g:wheel:--x /root/图片/小姐姐/汉服小姐姐.jpg 
	# 例如,对wheel 用户组限制,无法查阅该图片且无法写入数据。

  最后,我想你已经迫不及待的想知道,如何撤销对用户xyl的限制,别着急,相信你已经阅读完前文中setfacl命令的参数介绍了,没错,有两种方式:

     如果你想取消对指定文件或目录的所有acl设定权限,采用如下命令:
	 setfacl -b /root/图片/小姐姐/汉服小姐姐.jpg 
	 # 取消掉了所有acl权限设定,但这样的话,所有用户均会恢复对该文件的原本权限。
     倘若,仅想恢复指定用户对该文件的acl权限,而又想保持其他组成员的权限设定,那么,我们可采用如下措施:
	setfacl -x u:xyl  /root/图片/小姐姐/汉服小姐姐.jpg 
	# 仅删除了xyl用户对"汉服小姐姐.jpg "文件的acl规则,但xyl用户所在组的其他成员依旧被acl规则限定(xyl在wheel用户组,前面对该组进行过权限设定。)

  如上图,这样用户xyl就恢复了对这些文件的原使用权限。

  附录:
  1. Linux中Wheel用户组的概念:

Linux学习笔记,零碎知识点整理(1) —— 运维_第5张图片

  2. 若有对ACL访问控制权限还不了解的朋友,可以移步: Linux ACL访问控制权限完全攻略( 点击该链接 ) 来进一步学习和了解。

  参考文献:Linux使用手册

你可能感兴趣的:(Linux,Kali,Linux,linux,debian,运维,shell,经验分享)