ACL权限简介
ACL:access control list
允许给任何用户或者用户组设置任何文件或者目录的访问权限
查看Linux是否开启ACL dumpe2fs
Linux一般都开启了ACL权限,可以使用下面的命令查看分区的ACL权限是否打开
首先可以使用df -h或者lsblk来查看Linux系统的分区情况
[root@centos01 ljs]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 2G 0 part [SWAP]
└─sda3 8:3 0 17G 0 part /
sdb 8:16 0 1G 0 disk
└─sdb1 8:17 0 1023M 0 part /home/newdisk
sr0 11:0 1 4.3G 0 rom /run/media/ljs/CentOS 7 x86_64
[root@centos01 ljs]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda3 17G 12G 4.3G 74% /
devtmpfs 976M 0 976M 0% /dev
tmpfs 991M 0 991M 0% /dev/shm
tmpfs 991M 11M 980M 2% /run
tmpfs 991M 0 991M 0% /sys/fs/cgroup
/dev/sdb1 991M 2.6M 922M 1% /home/newdisk
/dev/sda1 976M 134M 776M 15% /boot
tmpfs 199M 4.0K 199M 1% /run/user/42
tmpfs 199M 28K 199M 1% /run/user/1000
/dev/sr0 4.3G 4.3G 0 100% /run/media/ljs/CentOS 7 x86_64
比如,我要查看分区/dev/sda3的情况
dumpe2fs -h /dev/sda3
设定ACL权限
setfacl 选项 文件名
-m:设定ACL权限
-x:删除指定的ACL权限
-b:删除所有的ACL权限
-d:设定默认的ACL权限
-k:删除默认的ACL权限
-R:递归设定ACL权限
给用户设定acl权限
setfacl -m u:st:rx /project1
给用户组设定ACL权限
setfacl -m g:tgroup:rwx /project1
练习
创建两个用户zhangsan,lisi,并将它们加入到tgroup中,创建一个文件夹project,修改这个文件夹的所属组为tgroup
这个文件夹的权限设置为770,再创建一个用户st,st属于其他,但是st用户对project有rx权限,其他人的权限不能改变
#创建两个用户
useradd zhangsan
useradd lisi
#创建组tgroup
groupadd tgroup
#将zhangsan和lisi添加到tgroup中
usermod -g tgroup zhangsan
usermod -g tgroup lisi
#创建一个project1文件夹
mkdir project1
#修改project1的权限
chmod 770 project1/
#将文件夹的所属组修改为tgroup
chgrp tgroup project1/
#创建st用户并设置密码
useradd st
passwd st
#使用st这个用户远程登录,访问project1
[st@centos01 root]$ cd project1
-bash: cd: project1: 权限不够
#使用acl给st用户赋予rx的权限
setfacl -m u:st:rx project1/
#使用st用户再次访问project1
[st@centos01 root]$ cd project1
[st@centos01 project1]$ ls -la
总用量 12
drwxrwx---+ 2 root tgroup 4096 11月 28 22:19 .
dr-xr-x--x. 18 root root 4096 11月 28 22:19 ..
查看ACL权限
getfacl 文件名
先使用ls -la查看设定了ACL权限的文件,多了一个+
drwxrwx---+ 2 root tgroup 4096 11月 28 22:19 project1
[root@centos01 ~]# getfacl project1/
# file: project1/
# owner: root
# group: tgroup
user::rwx
user:st:r-x
group::rwx
mask::rwx
other::---
如果运行某个service时,提示对某个文件没有权限,可以使用acl给特定的用户设置一个权限