1.ACL許可權簡介與開啟 一.ACL許可權是為瞭解決所有者/所屬組/其他人三種身份不足的問題 二.查看分區ACL許可權是否開啟 dumpe2fs命令是查詢指定分區詳細文件系統信息的命令 dumpe2fs h /dev/sda3 Default mount options: user_xattr acl顯 ...
1.ACL許可權簡介與開啟
一.ACL許可權是為瞭解決所有者/所屬組/其他人三種身份不足的問題
二.查看分區ACL許可權是否開啟
dumpe2fs命令是查詢指定分區詳細文件系統信息的命令
dumpe2fs -h /dev/sda3
-h 僅顯示超級塊中信息,而不顯示磁碟塊組的詳細信息
[root@izm5e2q95pbpe1hh0kkwoiz ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 14G 25G 36% /
devtmpfs 911M 0 911M 0% /dev
tmpfs 920M 0 920M 0% /dev/shm
tmpfs 920M 548K 920M 1% /run
tmpfs 920M 0 920M 0% /sys/fs/cgroup
tmpfs 184M 0 184M 0% /run/user/0
tmpfs 184M 0 184M 0% /run/user/1002
[root@izm5e2q95pbpe1hh0kkwoiz ~]# dumpe2fs -h /dev/vda1
dumpe2fs 1.42.9 (28-Dec-2013)
Filesystem volume name: <none>
Last mounted on: /
Filesystem UUID: eb448abb-3012-4d8d-bcde-94434d586a31
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
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 2621440
Block count: 10485248
Reserved block count: 524262
Free blocks: 8958387
Free inodes: 2519237
First block: 0
Block size: 4096
Fragment size: 4096
Reserved GDT blocks: 1021
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
RAID stride: 32639
Flex block group size: 16
Filesystem created: Sun Oct 15 23:18:59 2017
Last mount time: Tue Aug 14 10:15:43 2018
Last write time: Tue Aug 14 18:15:42 2018
Mount count: 6
Maximum mount count: -1
Last checked: Wed Jun 27 22:35:57 2018
Check interval: 0 (<none>)
Lifetime writes: 30 GB
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
First orphan inode: 1050280
Default directory hash: half_md4
Directory Hash Seed: 2579899c-6862-4625-a8e6-425550384200
Journal backup: inode blocks
Journal features: journal_incompat_revoke
Journal size: 128M
Journal length: 32768
Journal sequence: 0x006beeea
Journal start: 22131
Default mount options: user_xattr acl顯示支持acl
三.臨時開啟分區ACL許可權
重新掛載根分區,並掛載加入acl許可權
mount -o remount,acl /
四.永久開啟分區ACL許可權(一定要謹慎)
# 加入acl
vim /etc/fstab
UUID=eb448abb-3012-4d8d-bcde-94434d586a31 / ext4 defaults 1 1
修改為
UUID=eb448abb-3012-4d8d-bcde-94434d586a31 / ext4 defaults,acl 1 1
# 重新掛載文件系統或重新啟動系統,使修改生效
mount -o remount /
2.查看和設定ACL許可權
一.查看ACL命令
查看acl許可權
getfacle 文件名
二.設定ACL許可權的命令
setfacl 選項 文件名
選項 | 作用 |
---|---|
-m | 設定ACL許可權 |
-x | 刪除指定的ACL許可權 |
-b | 刪除所有的ACL全新啊 |
-d | 設定預設ACL許可權 |
-k | 刪除預設ACL許可權 |
-R | 遞歸設定ACL許可權 |
三.給用戶設定ACL許可權和給組設定ACL許可權
# 進入tmp目錄
[root@izm5e2q95pbpe1hh0kkwoiz /]# cd /tmp
# 創建project目錄
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# mkdir project
# 查看是否創建
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# ls
Aegis-<Guid(5A2C30A2-A87D-490A-9281-6765EDAD7CBA)> eternityz hsperfdata_root issue.soft Japan mysql.sock php-cgi.sock project systemd-private-9255c5ee9ec84f5987c1d9ba485e177e-ntpd.service-eKcnmD test.txt
# 添加用戶zhangsan
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# useradd zhangsan
# 添加用戶lisi
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# useradd lisi
# 添加組tgroup
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# groupadd tgroup
# 將zhangsan添加到組tgroup中
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# gpasswd -a zhangsan tgroup
Adding user zhangsan to group tgroup
# 將lisi添加到組tgroup中
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# gpasswd -a lisi tgroup
Adding user lisi to group tgroup
# 查看組內的用戶(最後一行)
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# cat /etc/group
root:x:0:eternity
bin:x:1:
daemon:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
mem:x:8:
kmem:x:9:
wheel:x:10:
cdrom:x:11:
mail:x:12:postfix
man:x:15:
dialout:x:18:
floppy:x:19:
games:x:20:
tape:x:30:
video:x:39:
ftp:x:50:
lock:x:54:
audio:x:63:
nobody:x:99:
users:x:100:
utmp:x:22:
utempter:x:35:
ssh_keys:x:999:
input:x:998:
systemd-journal:x:190:
systemd-network:x:192:
dbus:x:81:
polkitd:x:997:
postdrop:x:90:
postfix:x:89:
chrony:x:996:
sshd:x:74:
ntp:x:38:
tcpdump:x:72:
nscd:x:28:
screen:x:84:
mysql:x:1000:
www:x:1001:
rabbitmq:x:995:
eternity:x:1002:
eternityz:x:1003:
slocate:x:21:
saslauth:x:76:
mailnull:x:47:
smmsp:x:51:
zhangsan:x:1004:
lisi:x:1005:
tgroup:x:1006:zhangsan,lisi
# 將project目錄的所屬組更改為tgroup
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# chown root:tgroup project
# 將project目錄的許可權更改為770
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# chmod 770 project
# 查看更改許可權的project目錄
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# ll -d project
drwxrwx--- 2 root tgroup 4096 Dec 10 17:00 project
# 增加試聽學員st
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# useradd st
# 修改試聽學員st的密碼
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# passwd st
Changing password for user st.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
# 給試聽學員st設定ACL許可權rx
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# setfacl -m u:st:rx project
# 查看ACL許可權
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# getfacl project
# file: project
# owner: root
# group: tgroup
user::rwx
user:st:r-x #st用戶擁有rx許可權
group::rwx
mask::rwx
other::---
# 切換到st用戶
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# su - st
# 進入/tmp/project目錄
[st@izm5e2q95pbpe1hh0kkwoiz ~]$ cd /tmp/project
# 創建文件test.txt,提示沒有許可權
[st@izm5e2q95pbpe1hh0kkwoiz project]$ touch test.txt
touch: cannot touch ‘test.txt’: Permission denied
# 退出st用戶
[st@izm5e2q95pbpe1hh0kkwoiz project]$ exit
logout
# 增加組tgroup2
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# groupadd tgroup2
# 給組tgroup2設定ACL許可權rwx
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# setfacl -m g:tgroup2:rwx project
# 查看ACL許可權
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# getfacl project
# file: project
# owner: root
# group: tgroup
user::rwx
user:st:r-x # 用戶st擁有ACL許可權rx
group::rwx
group:tgroup2:rwx # 組tgroup2擁有ACL許可權rwx
mask::rwx
other::---
有ACL許可權和沒ACL許可權的文件夾
# 沒有ACL許可權的後面沒有+號
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# ll -d project
drwxrwx--- 2 root tgroup 4096 Dec 10 17:00 project
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# setfacl -m u:st:rx project
# 有ACL許可權的後面帶著+號
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# ll -d project
drwxrwx---+ 2 root tgroup 4096 Dec 10 17:00 project
3.最大有效許可權和刪除ACL許可權
一.最大有效許可權mask
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# getfacl project
# file: project
# owner: root
# group: tgroup
user::rwx
user:st:r-x
group::rwx
group:st:rwx
group:tgroup2:rwx
mask::rwx
other::---
mask是用來指定最大有效許可權的.如果我給用戶賦予了ACL許可權,是需要和mask的許可權"相與"才能得到用戶的真正許可權
A | B | and |
---|---|---|
r | r | r |
r | - | - |
- | r | - |
- | - | - |
修改mask的值
setfacl -m m:rx project
# 更改mask的值
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# setfacl -m m:rx project
# 查詢ACL許可權
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# getfacl project
# file: project
# owner: root
# group: tgroup
user::rwx
user:st:r-x
group::rwx #effective:r-x
group:st:rwx #effective:r-x
group:tgroup2:rwx #effective:r-x
mask::r-x
other::---
mask的值隻影響具有ACL許可權的,不影響用戶的許可權
用戶st的許可權為rx
組st的ACL許可權是rwx,但是實際生效的只是rx許可權
組tgroup2的ACL許可權是rwx,但是實際生效的是rx許可權
二.刪除ACL許可權
刪除指定用戶的ACL許可權
setfacl -x u:用戶名 文件/文件夾
刪除指定用戶組的ACL許可權
setfacl -x g:組名 文件/文件夾
# 之前的有組tgroup2的ACL許可權
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# getfacl project
# file: project
# owner: root
# group: tgroup
user::rwx
user:st:r-x
group::rwx #effective:r-x
group:st:rwx #effective:r-x
group:tgroup2:rwx #effective:r-x
mask::r-x
other::---
# 移除組tgroup2的ACL許可權
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# setfacl -x g:tgroup2 project
# 再次查詢,tgroup2的ACL許可權沒有了
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# getfacl project
# file: project
# owner: root
# group: tgroup
user::rwx
user:st:r-x
group::rwx
group:st:rwx
mask::rwx
other::---
刪除文件或文件假的所有的ACL許可權
sefacl -b 文件/文件夾
# 之前project目錄的ACL許可權
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# getfacl project
# file: project
# owner: root
# group: tgroup
user::rwx
user:st:r-x
group::rwx
group:st:rwx
mask::rwx
other::---
# 移除所有的ACL許可權
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# setfacl -b project
# 再次查詢,ACL許可權和mask都沒有了
[root@izm5e2q95pbpe1hh0kkwoiz tmp]# getfacl project
# file: project
# owner: root
# group: tgroup
user::rwx
group::rwx
other::---
4.預設ACL許可權和遞歸ACL許可權
一.遞歸ACL許可權
遞歸是父目錄在設定ACL許可權時,所有的子文件和子目錄也會擁有相同的ACL許可權
setfacl -m u:用戶名:許可權 -R 文件夾
# -R必須在後面,否則報錯
# 給文件夾及下麵的所有文件及文件夾設置ACL許可權,運行此命令後,新建的文件不具備ACL許可權
二.預設ACL許可權
預設ACL許可權的作用是如果給父目錄設定了預設ACL許可權,那麼父目錄中所有新建的子文件都會繼承父目錄的ACL許可權
setfacl -m d:u:用戶名:許可權 文件夾
# 運行上面的命令之後,以後此文件夾下新建文件或文件夾都具備ACL許可權