ACL权限

1、什么是ACL权限

ACL是Access Control List的缩写,主要的目的是在提供传统的owner,group,others的read,write,execute权限之外的局部权限设定。ACL可以针对单个用户,单个文件或目录来进行r,w,x的权限设定,特别适用于需要特殊权限的使用情况。

ACL主要针对用户(user)、用户组(group)、以及掩码(mask)方面来控制权限。

简单地来说,ACL就是可以设置特定用户或用户组对于一个文件/目录的操作权限。

例如 :

下图中老王用户要拥有文件夹av的rx权限,如何配置?使用ACL权限配置即可完成老王用户权限的配置。

这里写图片描述

2、查看分区上ACL权限是否开启

dumpe2fs命令是查询指定分区(例如根分区)详细文件系统信息的命令

[root@localhost ~]#dumpe2fs -h  /dev/sda6

选项

-h 仅显示超级块中信息,而不显示磁盘块组的详细信息

查看系统分区情况

[root@localhost ~]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda6        6147204 1181308   4646972  21% /
tmpfs             502068       0    502068   0% /dev/shm
/dev/sda1         194241   54381    129620  30% /boot
/dev/sda2        9948012   22600   9413412   1% /home
/dev/sda5        1983056    3132   1877524   1% /usr/local

查看根分区是否开启ACL权限

[root@localhost ~]# dumpe2fs -h /dev/sda6
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name:   <none>
Last mounted on:          /
Filesystem UUID:          808d6d71-c17c-4859-b308-8fa4089fae7b
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl  #含有acl,说明开启acl权限
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              399056
Block count:              1594624
Reserved block count:     79731
Free blocks:              1241511
Free inodes:              364713
First block:              0
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      389
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8144
Inode blocks per group:   509
Flex block group size:    16
Filesystem created:       Mon Jun 13 22:43:35 2016
Last mount time:          Thu Jun 23 07:45:21 2016
Last write time:          Mon Jun 13 22:51:07 2016
Mount count:              13
Maximum mount count:      -1
Last checked:             Mon Jun 13 22:43:35 2016
Check interval:           0 (<none>)
Lifetime writes:          2816 MB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:           256
Required extra isize:     28
Desired extra isize:      28
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      7b237614-6612-4ac2-bd54-634c99f690fb
Journal backup:           inode blocks
Journal features:         journal_incompat_revoke
日志大小:             128M
Journal length:           32768
Journal sequence:         0x00001ec2
Journal start:            1

3、临时开启分区ACL权限

重新挂载根分区,并挂载加入ACL权限

[root@localhost ~]#mount -o remount,acl /

说明:

-o 特殊挂载
remount 重新挂载
acl 挂载acl权限

4、永久开启分区ACL权限

通过修改配置文件/etc/fstab,一般defaults默认包括acl权限。

[root@localhost ~]# vim /etc/fstab

#
# /etc/fstab
# Created by anaconda on Mon Jun 13 22:43:41 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
###加入acl权限(修改时一定要慎重,否则可能导致无法启动系统)

UUID=808d6d71-c17c-4859-b308-8fa4089fae7b /                       ext4    defaults,acl         1 1
UUID=7c7f9a9a-7818-4515-83e3-a0b5a640d754 /boot                   ext4    defaults        1 2
UUID=14e6a7e0-8887-4a1a-a6d8-3a63facbc1f9 /home                   ext4    defaults        1 2
UUID=8ac04e92-9e7d-4d54-840b-37411417df72 /usr/local              ext4    defaults        1 2
UUID=77b0f506-ffb3-4a8c-af31-5f1ab2a76ba9 swap                    swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0            

修改后,保存退出,并重启系统或者重新挂载文件系统,使修改生效。

5、查看分区ACL权限

[root@localhost ~]# getfacl test
# file: test
# owner: root
# group: root
user::rw-
group::r--
other::r--

6、设置分区ACL权限

[root@localhost ~]# setfacl 文件名

选项:

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

创建av文件夹

[root@localhost ~]# mkdir av

查看文件属性,av文件夹所属用户和用户组是root和root,权限drwxr-xr-x

[root@localhost ~]# ll
总用量 44
-rw-------. 1 root root   983 613 22:47 anaconda-ks.cfg
drwxr-xr-x. 2 root root  4096 6月  23 11:05 av
-rwxr-xr-x. 1 root root   110 614 08:17 hello.sh
-rw-r--r--. 1 root root  8015 613 22:47 install.log
-rw-r--r--. 1 root root  3384 613 22:45 install.log.syslog
-rw-r--r--. 1 root root 12640 320 2013 rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
-rw-r--r--. 1 root root   240 616 07:33 test

添加用户tony,并创建分组stu,将av文件夹所属用户和用户组修改为tony用户和stu用户组

[root@localhost ~]# useradd tony
[root@localhost ~]# groupadd stu
[root@localhost ~]# chown tony:stu av

查看修改后的av文件夹的详细信息

[root@localhost ~]# ll
总用量 44
-rw-------. 1 root root   983 613 22:47 anaconda-ks.cfg
drwxr-xr-x. 2 tony stu   4096 6月  23 11:05 av
-rwxr-xr-x. 1 root root   110 614 08:17 hello.sh
-rw-r--r--. 1 root root  8015 613 22:47 install.log
-rw-r--r--. 1 root root  3384 613 22:45 install.log.syslog
-rw-r--r--. 1 root root 12640 320 2013 rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
-rw-r--r--. 1 root root   240 616 07:33 test

修改av文件夹权限为770

[root@localhost ~]# chmod 770 av

查看av文件夹详细信息

[root@localhost ~]# ll
总用量 44
-rw-------. 1 root root   983 613 22:47 anaconda-ks.cfg
drwxrwx---. 2 tony stu   4096 6月  23 11:05 av
-rwxr-xr-x. 1 root root   110 614 08:17 hello.sh
-rw-r--r--. 1 root root  8015 613 22:47 install.log
-rw-r--r--. 1 root root  3384 613 22:45 install.log.syslog
-rw-r--r--. 1 root root 12640 320 2013 rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
-rw-r--r--. 1 root root   240 616 07:33 test

添加老王用户,并设置密码123

[root@localhost ~]# useradd lw
[root@localhost ~]# passwd lw
更改用户 lw 的密码 。
新的 密码:
无效的密码: WAY 过短
无效的密码: 过于简单
重新输入新的 密码:
passwd: 所有的身份验证令牌已经成功更新。
[root@localhost ~]# 

查看av文件夹路径,在/root/下,普通用户无法操作。因此mv到/home文件夹下

[root@localhost ~]# mv av /home/

查看av文件夹的详细信息,并且使用lw用户尝试查看和进入av文件夹,无法查看和进入,因为lw不属于无权限,因此需要尝试使用acl权限进行设置lw用户的权限。

[lw@localhost root]$ cd /home/
[lw@localhost home]$ ls
av  jzmb  lost+found  lw  sdf  tony  user1  xxx
[lw@localhost home]$ ll
总用量 44
drwxrwx---. 2 tony  stu    4096 623 11:05 av
drwx------. 3   501 sexy   4096 616 09:25 jzmb
drwx------. 2 root  root  16384 613 22:43 lost+found
drwx------. 3 lw    lw     4096 623 11:06 lw
drwx------. 3 cls   sexy   4096 616 09:25 sdf
drwx------. 3 tony  tony   4096 623 11:05 tony
drwx------. 3 user1 user1  4096 623 09:56 user1
drwx------. 3 imooc imooc  4096 616 09:26 xxx
[lw@localhost home]$ cd av
bash: cd: av: 权限不够
[lw@localhost home]$ ls
av  jzmb  lost+found  lw  sdf  tony  user1  xxx
[lw@localhost home]$ ls av
ls: 无法打开目录av: 权限不够
[lw@localhost home]$ 

设置用户lw拥有rw权限

[root@localhost home]# setfacl -m u:lw:rx /home/av

查看acl权限,ll命令显示多了一个“+”

[root@localhost home]# ll
总用量 48
drwxrwx---+ 2 tony  stu    4096 623 11:05 av
drwx------. 3   501 sexy   4096 616 09:25 jzmb
drwx------. 2 root  root  16384 613 22:43 lost+found
drwx------. 3 lw    lw     4096 623 11:06 lw
drwx------. 3 cls   sexy   4096 616 09:25 sdf
drwx------. 3 tony  tony   4096 623 11:05 tony
drwx------. 3 user1 user1  4096 623 09:56 user1
drwx------. 3 imooc imooc  4096 616 09:26 xxx
[root@localhost home]# 

[root@localhost home]# getfacl /home/av
getfacl: Removing leading '/' from absolute path names
# file: home/av
# owner: tony
# group: stu
user::rwx
user:lw:r-x
group::rwx
mask::rwx
other::---

切换到lw用户,使用ls和cd测试可以正常进入和查看。

[lw@localhost home]$ ll av
总用量 0
[lw@localhost home]$ cd av
[lw@localhost av]$ 

给用户组设定ACL权限

为组tgroup2分配acl权限。使用“g:组名:权限”格式

[root@localhost home]# groupadd tgroup2
[root@localhost home]# setfacl -m g:tgroup2:rwx /home/av

7、最大有效权限mask

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

[root@localhost home]# getfacl /home/av
getfacl: Removing leading '/' from absolute path names
# file: home/av
# owner: tony
# group: stu
user::rwx
user:lw:r-x
group::rwx
group:tgroup2:rwx
mask::rwx
other::---

lw用户权限与mask相与之后的权限才是lw用户真正的权限

例如上述lw用户拥有rx权限

修改最大有效权限

[root@localhost home]# setfacl -m m:rx /home/av

修改最大有效权限后,lw用户拥有av文件夹的真正权限是rx(说明mask:rx和lw相与之后的结果)

测试:
首先设定lw用户拥有rwx权限,再修改mask权限为rx权限,实际用户lw仅仅拥有rx权限。操作如下:

[root@localhost home]# setfacl -m u:lw:rwx av
[root@localhost home]# getfacl /home/av
getfacl: Removing leading '/' from absolute path names
# file: home/av
# owner: tony
# group: stu
user::rwx
user:lw:rwx
group::rwx
group:tgroup2:rwx
mask::rwx
other::---

[root@localhost home]# setfacl -m m:rx /home/av
[root@localhost home]# getfacl /home/av
getfacl: Removing leading '/' from absolute path names
# file: home/av
# owner: tony
# group: stu
user::rwx
user:lw:rwx         #effective:r-x
group::rwx          #effective:r-x
group:tgroup2:rwx       #effective:r-x
mask::r-x
other::---

8、删除用户ACL权限

[root@localhost home]# setfacl -x u:lw /home/av

[root@localhost home]# getfacl /home/av
getfacl: Removing leading '/' from absolute path names
# file: home/av
# owner: tony
# group: stu
user::rwx
group::rwx
group:tgroup2:rwx
mask::rwx
other::---

9、删除文件所有的ACL权限

[root@localhost home]# setfacl -b /home/av
[root@localhost home]# getfacl /home/av
getfacl: Removing leading '/' from absolute path names
# file: home/av
# owner: tony
# group: stu
user::rwx
group::rwx
other::---
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值