2021-08-27 [linux 权限] - 权限系统总结

需求分析

最近有个大系统,要针对不同的项目,项目下不同的用户,以及有个super项目设计一个权限管控系统。因为用户是直接用绝对路径去执行命令的,所以无法加一个中间层进行全新管控,必须要用linux原生的系统,但是linux原生权限系统无法满足全部需求,遂额外再引入ACL。
细析需求如下:

  • 不同项目有自己的文件夹,不同用户有自己文件夹,默认是彼此隔离。
  • 不同项目之间默认是隔离权限的,不同项目之间可以设置共享,或者取消共享。
  • 文件夹不断在新写入文件,希望继承父文件夹权限。

现状调查

  1. linux的user, group是靠id作为唯一区分,不是靠名字,所以设计的时候必须要按照一定规则管理好UID和GID。参考 Linux的uid 和 gid
  2. linux默认有一套自己的权限系统,eg: drwxr-x-rx- ; 以及作为补充的ACL 权限系统,都参考 Linux系统默认权限和ACL权限系统
  3. 默认创建文件的权限一般是用777减去在/etc/proflie中定义的umask。。比如umask=022, 则对应的文件夹权限是 777-022=755=drwxr-xr-x,然后文件没有x权限,则文件为-rw-r--r--. 所以文件的最大权限是是666,文件夹的最大权限是777.
  4. 如果要想跟着父folder的权限走,必须要用setfacl -d 选项,更改默认权限

使用总结

# 查看
umask
cat /etc/passwd
cat /etc/group
whoami
groups
ll 
getfacl file/dir
# 增
groupadd group1  -g 2000 
useradd user1 -u 110001 -g group1 -d "/home/user1" 
# 改
chown -R user1 /dir  # 递归改Owner
chgrp -R group1 /dir  # 递归改Group
chmod  -R u+rwx /dir # 递归改Owner权限
chmod  -R g-rw /dir # 递归改Gourp权限
chmod  -R o=r-x /dir # 递归改Other权限
setfacl -Rm u:user2:rwx /dir   # 给特定用户权限
setfacl -d g:group1:rwx /dir # 给特定组权限,并且设置成默认,/dir下面新建文件的时候会继承此ACL权限
setfacl -k g:group1:rwx /dir #删除默认的ACL权限
set -b /dir # 删除dir的的所有ACL权限
set -x u:user2:rwx /dir 删除指定的ACL权限

你可能感兴趣的:(2021-08-27 [linux 权限] - 权限系统总结)