Linux学习笔记,零碎知识点整理 —— 运维
Posted ~晨曦静竹~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux学习笔记,零碎知识点整理 —— 运维相关的知识,希望对你有一定的参考价值。
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文件,并授予其执行权限:
并通过查看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 设定文件访问控制列表前:
我们不难看出,xyl用户是拥有text.sh脚本文件的运行权的。
修改xyl用户的ACL访问权限:
setfacl -m u:xyl:r-- /root/test.sh
# 取消用户xyl对text.sh脚本文件的运行权限
很明显的看到,xyl用户执行text.sh文件时受到了权限限制:
接下来,让我玩个刺激的(嘿嘿,手动滑稽中~):
注意:由于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用户组的概念:
2. 若有对ACL访问控制权限还不了解的朋友,可以移步: Linux ACL访问控制权限完全攻略( 点击该链接 ) 来进一步学习和了解。
参考文献:Linux使用手册
以上是关于Linux学习笔记,零碎知识点整理 —— 运维的主要内容,如果未能解决你的问题,请参考以下文章