当前位置:   article > 正文

linux ACL权限,设定,删除_/dev/shm添加acl权限

/dev/shm添加acl权限

ACL权限

简介和开启

如下图所示,假如一个目录已经给所有者,所属组和其他人分配了相应的权限,然后这个时候又有了一个用户st,他需要有读和执行的权限,不能有写权限,所以用户st放在所属组和其他人中都不合适,这个目录的三个身份就不够用了,ACL权限就是专门用来解决身份不足的情况

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uLrWdr7C-1649559525292)(E:\Java笔记\image\picture_linux\image-20220410090238953.png)]

如果要使用ACL权限,前提是需要让文件所在的分区支持ACL权限

# 首先查看分区
[root@VM-8-7-centos ~]# df
Filesystem     1K-blocks     Used Available Use% Mounted on
devtmpfs          929420        0    929420   0% /dev
tmpfs             940996       24    940972   1% /dev/shm
tmpfs             940996      660    940336   1% /run
tmpfs             940996        0    940996   0% /sys/fs/cgroup
/dev/vda1       61795096 15946480  43231952  27% /
tmpfs             188200        0    188200   0% /run/user/0
overlay         61795096 15946480  43231952  27% /var/lib/docker/overlay2/0ca88d9cb9071520ac38390320ff79125b8c9d1bb917a7037a0df7dd0bd10097/merged

# dumpe2fs 命令是查询指定分区详细文件系统信息的命令
# 选项:-h 仅显示超级块中信息,而不显示磁盘块组的详细信息
[root@VM-8-7-centos ~]# dumpe2fs -h /dev/vda1
dumpe2fs 1.42.9 (28-Dec-2013)
Filesystem volume name:   <none>
Last mounted on:          /
Filesystem UUID:          4b499d76-769a-40a0-93dc-4a31a59add28
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr re...
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl   # 默认挂载选项,支持acl,一般的情况下也就是都支持acl,只是大家需要了解一下
Filesystem state:         clean
Errors behavior:          Continue
......
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

一般的情况下,在现在的linux系统中,根目录分区是默认开启acl的,我们只是需要了解一下这个步骤,但如果没有开启,就需要我们自己来开启了

# 临时开启分区ACL权限,通过命令实现,服务器重启就失效了
# 重新挂载根分区,并挂载加入acl权限
[root@VM-8-7-centos ~]# mount -o remount,acl / 


# 永久开启分区ACL权限
# 修改/etc/fstab文件 ---------------------------------------------------就是在这里加入,acl
[root@VM-8-7-centos ~]# vim /etc/fstab
UUID=4b499d76-769a-40a0-93dc-4a31a59add28 /                       ext4    defaults,acl        1 1

# 然后挂载文件系统或重启系统,使修改生效
[root@VM-8-7-centos ~]# mount -o remount / 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12



查看和设定ACL权限

查看ACL权限

命令名称:getfacl

语法:getfacl 文件名/目录

[root@VM-8-7-centos tmp]# getfacl project/
# file: project/
# owner: root
# group: tgroup
user::rwx
user:st:r-x        # 附加用户的ACL权限
group::rwx
mask::rwx
other::---
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

设定ACL权限

命令名称:setfacl

语法:setfacl 选项 文件名

选项:

  • -m 设定ACL权限
  • -x 删除指定的ACL权限
  • -b 删除整个目录所有的ACL权限
  • -d 设定默认的ACL权限
  • -k 删除默认的ACL权限
  • -R 递归设定ACL权限

案例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0b5OOSDB-1649559525294)(E:\Java笔记\image\picture_linux\image-20220410090238953.png)]

现在创建一个目录,满足上图中的情况

[root@VM-8-7-centos tmp]# mkdir project

# 创建一个用户组,并创建两个用户
[root@VM-8-7-centos tmp]# groupadd tgroup
[root@VM-8-7-centos tmp]# useradd -G tgroup stu1
[root@VM-8-7-centos tmp]# useradd -G tgroup stu2

# 改变该目录的所有者所属组,并赋予相应的权限
[root@VM-8-7-centos tmp]# chown root:tgroup project/
[root@VM-8-7-centos tmp]# chmod 770 project/
[root@VM-8-7-centos tmp]# ll
total 4
drwxrwx--- 2 root tgroup 4096 Apr 10 09:48 project
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

基本环境创建好了后,创建st用户,并设定ACL权限

[root@VM-8-7-centos tmp]# useradd st
# 给用户设定读和执行的权限
[root@VM-8-7-centos tmp]# setfacl -m u:st:rx project/

# 可以看到这里 第一个字段后面多了一个+号,就表示有ACL附加权限了
[root@VM-8-7-centos tmp]# ll
total 4
drwxrwx---+ 2 root tgroup 4096 Apr 10 09:48 project

# 查看附加权限
[root@VM-8-7-centos tmp]# getfacl project/
# file: project/
# owner: root
# group: tgroup
user::rwx
user:st:r-x
group::rwx
mask::rwx
other::---
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

u:st:rx,其中第一个字段u代表用户,如果是组的话就用g;第二个字段代表用户名或组名;第三个字段代表相应的读写执行权限

# 给用户组设定ACL权限
[root@VM-8-7-centos tmp]# groupadd tgroup2

# 主要就是将第一个字段u换成g
[root@VM-8-7-centos tmp]# setfacl -m g:tgroup2:rwx project/
[root@VM-8-7-centos tmp]# getfacl project/
# file: project/
# owner: root
# group: tgroup
user::rwx
user:st:r-x
group::rwx
group:tgroup2:rwx
mask::rwx
other::---
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15



最大有效和删除ACL权限

最大有效权限

我们先看上面/tmp/project目录现在的ACL权限

[root@VM-8-7-centos tmp]# getfacl project/
# file: project/
# owner: root
# group: tgroup
user::rwx
user:st:r-x
group::rwx
group:tgroup2:rwx
mask::rwx
other::---
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

其中user、group、other我们的知道,mask其实就是最大有效权限

mask是用来指定最大的有效权限的,如果我给用户赋予了ACL权限,是需要和mask的权限相与才能得到用户真正权限

# 修改最大有效权限 使用m:权限的格式
[root@VM-8-7-centos tmp]# setfacl -m m:rx 文件名
  • 1
  • 2

删除ACL权限

  • 删除指定用户的权限

    setfacl -x u:用户名 文件名或目录

  • 删除指定用户组的ACL权限

    setfacl -x g:组名 文件名或目录

  • 删除文件所有的ACL权限

    setfacl -b 文件名或目录



默认ACL和递归ACL权限

递归ACL权限

递归是父目录在设定ACL权限时,所有的子文件和子目录也会拥有相同的ACL权限

其实就是普通的设定ACL权限的时候加一个-R的选项,注意这里的-R不能放在前面,只能放在这个位置

语法:setfacl -m u:用户名:权限 -R 目录名

默认ACL权限

默认ACL权限的作用是如果给父目录设定了默认ACL权限,那么父目录中所有新建的子文件都会继承父目录的ACL权限

其实就是在u:用户名:权限 的前面加一个d:

语法:setfacl -m d:u:用户名:权限 目录名

也就是说,递归设置ACL权限的时候,只是所有子目录已经存在了的 目录和文件设定ACL权限,但是新创建的文件是没有ACL权限的。而默认ACL权限就是管新建的子文件的

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/172211
推荐阅读
相关标签
  

闽ICP备14008679号