ACL扩展权限

一.文件扩展权限ACL

在linux中,文件与目录设置不止基础权限:r,w,x,特殊权限:suid,sgid,sticky,还有文件扩展权限ACL,ACL的全称是 Access Control List (访问控制列表) ,一个针对文件/目录的访问控制列表。它在UGO权限管理的基础上为文件系统提供一个额外的、更灵活的权限管理机制。它被设计为UNIX文件权限管理的一个补充。ACL允许你给任何的用户或用户组设置任何文件/目录的访问权限。

简而言之,对特定用户和/或特定属组下的用户增加特定权限

二、实操

setfacl -m u:$user:rwx,g:$group:rwx $file
参数:
-m:修改权限
-x:移除权限
-b:移除所有权限
getfacl $file    #查看某文件的ACL权限
setfacl -x $user $file    #取消某用户的ACL扩展权限
setfacl -b $file    #取消该文件的所有ACL扩展权限

测试:

  1. 在/home目录下创建一个hello.sh文件

  1. 将该文件权限设置为000

vim /home/hello.sh
chmod 000 1.txt
ACL扩展权限_第1张图片
  1. 创建用户lih,下命令会默认创建lih属组

useradd lih
  1. 对1.txt文件进行ACL授权,可看到在1.txt文件的other增加了一个+号,且文件变为绿色

setfacl -m u:lih:rwx 1.txt
  1. 切换到lih用户,测试对1.txt文件进行读写执行操作;可以看到lih用户可以对该文件进行rwx操作

su - lih
cd ..
ll
bash hello.sh
cat hello.sh
echo "123" > hello.sh
cat hello.sh
ACL扩展权限_第2张图片
  1. 此时切换到root,创建一个在lih组下的用户tian

useradd -g lih tian
id tian
  1. 切换到tian用户,对hello.sh文件进行rwx测试;可以看到tian用户对该文件没有任何权限

su - tian
cd ..
ll
cat hello.sh
echo "456" > hello.sh
bash hello.sh
ACL扩展权限_第3张图片
  1. 对hello.sh文件重新ACL授权,设置在lih属组下的用户可以执行rwx权限。(因刚刚lih用户把hello.sh文件内容修改为123,可在root下将该文件重新写为hello脚本)

setfacl -m u:lih:rwx,g:lih:rwx hello.sh
ACL扩展权限_第4张图片
  1. 切换到tian用户,测试其权限;可发现,在lih组下的tian用户拥有对hello.sh的rwx权限

su - tian
cd ..
ll
bash hello.sh
cat hello.sh
echo "123" > hello.sh
cat hello.sh
ACL扩展权限_第5张图片
  1. 测试不是lih用户,且不在lih组下的用户能否对该文件进行rwx操作;可发现ken用户不可对该文件进行rwx操作

useradd ken
id ken
su - ken
cd ..
ll
cat hello.sh
echo "456" > hello.sh
bash hello.sh
ACL扩展权限_第6张图片
  1. 切换到root用户,查看hello.sh文件的ACL具体权限,并取消该权限

getfacl hello.sh    #查看hello.sh的ACL扩展权限
setfacl -b hello.sh    #取消hello.sh的所有ACL扩展权限
getfacl hello.sh    
ACL扩展权限_第7张图片
  1. 目录测试可自行验证

三、总结

若A为团队经理,A下有10个成员,A想创建一个目录或文件只想让团队内部人员进行rwx操作且不想让其他B团队或C团队成员看到修改执行该文件。

ACL文件扩展权限可针对特定用户,特定属组下的用户进行授权,当环境中有某文件只想让某用户或某团队下的成员对文件进行操作时可使用ACL权限进行管理。

你可能感兴趣的:(基础命令,服务器,运维)