Linux权限管理

本文详细介绍了LinuxAccessControlList(ACL)的概念、如何为项目成员和临时用户分配权限,包括设置所有者、所属组、权限和mask的最大权限。同时涵盖了如何添加、修改和删除ACL权限的操作方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

一、什么是ACL

二、操作步骤

1. 添加测试目录、用户、组,并将用户添加到组

2. 修改目录的所有者和所属组

3. 设定权限

 4. 为临时用户分配权限

  5. 验证acl权限

6. 控制组的acl权限

三、mask最大权限

 1. 什么是最大权限

四、删除ACL权限


一、什么是ACL

ACL是Access Control List的缩写,即访问控制列表。

思考如何实现以下权限:

  • 每个项目成员有一个自己的项目目录,对自己的目录有完全权限
  • 项目组中的成员对项目目录也有完全权限
  • 其他人对项目目录没有任何权限
  • 对于被分配进入项目的临时人员,只有读和执行权限,不能修改

二、操作步骤

1. 添加测试目录、用户、组,并将用户添加到组

[root@localhost ~]# mkdir /project
[root@localhost ~]# useradd zs
[root@localhost ~]# useradd ls
[root@localhost ~]# groupadd tgroup
[root@localhost ~]# gpasswd -a zs tgroup
正在将用户“zs”加入到“tgroup”组中
[root@localhost ~]# gpasswd -a ls tgroup
正在将用户“ls”加入到“tgroup”组中

 查看组是否正常建立

cat /etc/group

2. 修改目录的所有者和所属组

[root@localhost ~]# chown root:tgroup /project
[root@localhost ~]# ll -d /project
drwxr-xr-x. 2 root tgroup 6 2月  23 18:35 /project

3. 设定权限

[root@localhost ~]# chmod 770 /project
[root@localhost ~]# ll -d /project
drwxrwx---. 2 root tgroup 6 2月  23 18:35 /project

 4. 为临时用户分配权限

4.1 添加临时用户

[root@localhost ~]# useradd tempuser
[root@localhost ~]# passwd tempuser

4.2 为临时用户分配特定权限

[root@localhost ~]# setfacl -m u:tempuser:rx /project
[root@localhost ~]# getfacl /project
getfacl: Removing leading '/' from absolute path names
# file: project
# owner: root
# group: tgroup
user::rwx
user:tempuser:r-x
group::rwx
mask::rwx
other::---

 4.3 查看目录权限,注意+,表示文件或目录有acl权限

[root@localhost ~]# ll -d /project
drwxrwx---+ 2 root tgroup 6 2月  23 18:35 /project

  5. 验证acl权限

5.1 切换到临时用户tempuser

[root@localhost ~]# su tempuser
[tempuser@localhost root]$

5.2 验证可以进入project目录

[tempuser@localhost root]$ cd /project
[tempuser@localhost project]$

5.3 验证不能在project中创建文件

[tempuser@localhost project]$ touch test.txt
touch: 无法创建"test.txt": 权限不够

6. 控制组的acl权限

6.1 创建一个temp组

[tempuser@localhost project]$ su root
密码:
[root@localhost project]# groupadd temp

6.2 设置组的acl

[root@localhost project]# setfacl -m g:temp:rx /project

 6.3 查看设置后acl

[root@localhost project]# getfacl /project
getfacl: Removing leading '/' from absolute path names
# file: project
# owner: root
# group: tgroup
user::rwx
user:tempuser:r-x
group::rwx
group:temp:r-x
mask::rwx
other::---

6.4 创建一个用户

[root@localhost project]# useradd tempu02
[root@localhost project]# passwd tempu02

6.5 将用户添加到temp组中

[root@localhost project]# gpasswd -a tempu02 temp
正在将用户“tempu02”加入到“temp”组中

6.6 验证

[root@localhost project]# su tempu02
#可以进入目录
[tempu02@localhost project]$ cd /project
#不能创建文件
[tempu02@localhost project]$ touch aa.txt
touch: 无法创建"aa.txt": 权限不够

三、mask最大权限

 1. 什么是最大权限

[root@localhost ~]# getfacl /project
getfacl: Removing leading '/' from absolute path names
# file: project
# owner: root
# group: tgroup
user::rwx
     # 所属用户权限
user:tempuser:r-x
   # 临时用户权限
group::rwx
    # 所属组权限, 文件创建时的所属组
group:temp:r-x
  # 一般组的权限  创建的临时组
mask::rwx
   # 权限掩码,用来控制最大权限  ✨
other::---

最大权限的作用:mask的默认值为rwx,即最大权限,任何其他的权限值和mask相“与”都会得到其自身; 可以通过调整mask的方式来控制分配给用户的最大权限,例如: mask值调整为 r-x ,则不管是否给用户分配”w”权限,用户都没有“w”的权限。mask可以用来避免权限分配不当而给系统带来的风险

注意:mask不会影响文件所有者的权限

最大权限是指:如果给用户赋予了ACL权限,则用户所获取的权限并不是ACL所附的权限,而是赋予的ACL权限 与 mask权限 进行 “与” 操作 之后的权限。例如:user:tempuser:r-x 第一位是r, mask的第一位也是r, 则与操作后,用户有 r 的权限, user:tempuser:r-x 第二位是 - ,mask的第二位是 w,则与操作后用户则没有 w 的权限。

# 设置mask
[root@localhost ~]# setfacl -m m:rx /project
# 查看mask
[root@localhost ~]# getfacl /project
getfacl: Removing leading '/' from absolute path names
# file: project
# owner: root
# group: tgroup
user::rwx
user:tempuser:r-x
group::rwx			#effective:r-x
   # 所属组虽然设置的权限为rwx,但其实际的权限 r-x  ✨
group:temp:r-x
mask::r-x
    # 修改之后的mask

四、删除ACL权限

# 删除指定ACL权限
[root@localhost ~]# setfacl -x u:tempuser /project
[root@localhost ~]# getfacl /project
getfacl: Removing leading '/' from absolute path names
# file: project
# owner: root
# group: tgroup
user::rwx
group::rwx
group:temp:r-x
mask::rwx
other::---
# 删除所有ACL权限
[root@localhost ~]# setfacl -b /project
[root@localhost ~]# getfacl /project
getfacl: Removing leading '/' from absolute path names
# file: project
# owner: root
# group: tgroup
+
user::rwx
group::rwx
other::---
# 注意: 权限没有 + 
[root@localhost ~]# ll -d /project
drwxrwx---. 2 root tgroup 6 8月  23 13:07 /project

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不念那年晚春

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值