Linux setfacl 命令幫助:
選項(xiàng)
-b,--remove-all:刪除所有擴(kuò)展的acl規(guī)則商乎,基本的acl規(guī)則(所有者娶桦,群組暮胧,其他)將被保留好唯。
-k,--remove-default:刪除缺省的acl規(guī)則。如果沒有缺省規(guī)則穴店,將不提示。
-n拿穴,--no-mask:不要重新計(jì)算有效權(quán)限泣洞。setfacl默認(rèn)會(huì)重新計(jì)算ACL mask,除非mask被明確的制定默色。
--mask:重新計(jì)算有效權(quán)限球凰,即使ACL mask被明確指定。
-d腿宰,--default:設(shè)定默認(rèn)的acl規(guī)則呕诉。
--restore=file:從文件恢復(fù)備份的acl規(guī)則(這些文件可由getfacl -R產(chǎn)生)。通過這種機(jī)制可以恢復(fù)整個(gè)目錄樹的acl規(guī)則吃度。此參數(shù)不能和除--test以外的任何參數(shù)一同執(zhí)行甩挫。
--test:測試模式,不會(huì)改變?nèi)魏挝募腶cl規(guī)則椿每,操作后的acl規(guī)格將被列出伊者。
-R英遭,--recursive:遞歸的對(duì)所有文件及目錄進(jìn)行操作。
-L亦渗,--logical:跟蹤符號(hào)鏈接挖诸,默認(rèn)情況下只跟蹤符號(hào)鏈接文件,跳過符號(hào)鏈接目錄法精。
-P多律,--physical:跳過所有符號(hào)鏈接,包括符號(hào)鏈接文件搂蜓。
--version:輸出setfacl的版本號(hào)并退出菱涤。
--help:輸出幫助信息。
--:標(biāo)識(shí)命令行參數(shù)結(jié)束洛勉,其后的所有參數(shù)都將被認(rèn)為是文件名
-:如果文件名是-粘秆,則setfacl將從標(biāo)準(zhǔn)輸入讀取文件名。
選項(xiàng)-m和-x后邊跟以acl規(guī)則收毫。多條acl規(guī)則以逗號(hào)(,)隔開攻走。
選項(xiàng)-M和-X用來從文件或標(biāo)準(zhǔn)輸入讀取acl規(guī)則。
選項(xiàng)--set和--set-file用來設(shè)置文件或目錄的acl規(guī)則此再,先前的設(shè)定將被覆蓋昔搂。 選項(xiàng)-m(--modify)和-M(--modify-file)選項(xiàng)修改文件或目錄的acl規(guī)則。
選項(xiàng)-x(--remove)和-X(--remove-file)選項(xiàng)刪除acl規(guī)則输拇。
當(dāng)使用-M摘符,-X選項(xiàng)從文件中讀取規(guī)則時(shí),setfacl接受getfacl命令輸出的格式策吠。
Linux權(quán)限管理--ACL權(quán)限
ACL權(quán)限不是針對(duì)某個(gè)文件或某個(gè)目錄的逛裤,它是針對(duì)分區(qū)而言的。
使用df -h 查看系統(tǒng)分區(qū)
[linuxidc@linuxidc ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 16G 2.9G 12G 20% /
tmpfs 947M 0 947M 0% /dev/shm
/dev/sda1 291M 35M 242M 13% /boot
/dev/sr0 3.0G 3.0G 0 100% /media/cdrom
可以看到/的分區(qū)號(hào)是/dev/sda3,查看/dev/sda3是否支持acl權(quán)限
使用命令dumpe2fs查看是否支持acl
[root@linuxidc ~]# dumpe2fs -h /dev/sda3
dumpe2fs 1.41.12 (17-May-2010)
Filesystem volume name: <none>
Last mounted on: /
Filesystem UUID: 4e32f639-ccc9-4942-ac35-b281fdfbb79e
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
可以看到Default mount options項(xiàng)是支持acl的
一般操作系統(tǒng)默認(rèn)是支持acl權(quán)限的.如果不支持可開啟分區(qū)的alc權(quán)限
使用mount命令重新掛載/分區(qū),并支持acl權(quán)限
[root@linuxidc ~]# mount -o remount,acl /
使用mount命令重新掛載并支持acl權(quán)限只是臨時(shí)生效,系統(tǒng)重啟后失效
[root@linuxidc ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun May 1 09:19:06 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
#
UUID=4e32f639-ccc9-4942-ac35-b281fdfbb79e / ext4 defaults 1 1
UUID=7e2ce555-c044-41f8-9cd5-18c7d5293cf1 /boot ext4 defaults 1 2
UUID=fa77a5dd-1f7f-4428-bcc4-79f7742ed320 swap swap defaults 0 0
系統(tǒng)默認(rèn)是支持acl權(quán)限的,如果默認(rèn)不支持,我們可以在對(duì)應(yīng)的分區(qū)后面加上acl選項(xiàng),如下所示,以/分區(qū)為例
9 UUID=4e32f639-ccc9-4942-ac35-b281fdfbb79e / ext4 defaults,acl 1 1
有時(shí)候一個(gè)文件的擁有者,所屬組,其他人三種角色對(duì)文件的權(quán)限并不能完全滿足猴抹、適合某一個(gè)用戶所需要對(duì)文件的操作權(quán)限,這時(shí)就需要對(duì)特殊的用戶單獨(dú)設(shè)置權(quán)限,下面舉例說明
查看home目錄中l(wèi)inuxidc目錄的訪問權(quán)限
[root@linuxidc home]# getfacl linuxidc
# file: linuxidc
# owner: linuxidc
# group: linuxidc
user::rwx
group::---
other::---
可以看到只有用戶linuxidc(root除外)才對(duì)自己家目錄有rwx權(quán)限.所屬組和其他人沒有任何權(quán)限.
現(xiàn)在有這樣一個(gè)用戶,只能讓他進(jìn)入linuxidc目錄,查看里面有哪些文件和文件內(nèi)容,但是不能讓他創(chuàng)建文件
可以先找一個(gè)存在的用戶試試,看看能不能對(duì)/home/linuxidc目錄做任何操作
[linuxidc@linuxidc home]$ tail -3 /etc/passwd
named:x:25:25:Named:/var/named:/sbin/nologin
linuxidc:x:501:501::/home/linuxidc:/bin/bash
iaknehc:x:502:502::/home/iaknehc:/bin/bash
[iaknehc@linuxidc home]$ cd linuxidc
-bash: cd: linuxidc: Permission denied
可以看到當(dāng)切換到iaknehc時(shí),用戶對(duì)linuxidc目錄沒有任何權(quán)限,這里只是測試了一下其他人對(duì)linuxidc的權(quán)限,其實(shí)所屬組的用戶也一樣,可以自己試試.所以我們需要一種更靈活的權(quán)限設(shè)置方法.這就是acl.
[linuxidc@linuxidc home]$ setfacl -m u:iaknehc:rx linuxidc //將目錄linuxidc的rx權(quán)限分配給用戶iaknehc
[linuxidc@linuxidc home]$ getfacl linuxidc
# file: linuxidc
# owner: linuxidc
# group: linuxidc
user::rwx
user:iaknehc:r-x
group::---
mask::r-x
other::---
下面切換到iaknehc用戶試試權(quán)限是否生效
[linuxidc@linuxidc home]$ su - iaknehc
Password:
[iaknehc@linuxidc ~]$ cd ..
[iaknehc@linuxidc home]$ cd linuxidc
[iaknehc@linuxidc linuxidc]$ ll //iaknehc可以進(jìn)入linuxidc目錄,并瀏覽目錄中的文件
total 4
-rw-rw-r-- 1 linuxidc vampire 12 May 16 23:21 linuxidc
[iaknehc@linuxidc linuxidc]$ cat vampire //iaknehc可以查看文件類容
just a test
[iaknehc@linuxidc linuxidc]$ touch test //iaknehc不能在linuxidc目錄中創(chuàng)建文件
touch: cannot touch `test': Permission denied
可以看到針對(duì)目錄linuxidc設(shè)置的acl權(quán)限已經(jīng)生效.
先查看目錄linuxidc的acl權(quán)限
[root@linuxidc home]# getfacl linuxidc
# file: linuxidc/
# owner: linuxidc
# group: linuxidc
user::rwx
user:iaknehc:r-x
group::---
mask::r-x
other::---
mask是用來指定最大有效權(quán)限的,如果給用戶賦予了ACL權(quán)限,是需要和mask的
權(quán)限"相與"才能得到用戶的真正權(quán)限.
將用戶iaknehc的權(quán)限設(shè)置為rwx在查看acl權(quán)限
[linuxidc@linuxidc home]$ setfacl -m u:iaknehc:rwx linuxidc
[vampire@linuxidc home]$ getfacl linuxidc
# file: linuxidc
# owner: linuxidc
# group: linuxidc
user::rwx
user:iaknehc:rwx
group::---
mask::rwx
other::---
設(shè)置acl最大權(quán)限后再查看iaknehc的acl權(quán)限
[linuxidc@linuxidc home]$ setfacl -m m:rx linuxidc //修改最大有效權(quán)限,即mask的值
[linuxidc@linuxidc home]$ getfacl linuxidc
# file: linuxidc
# owner: linuxidc
# group: linuxidc
user::rwx
user:iaknehc:rwx #effective:r-x //雖然之前設(shè)置了rwx權(quán)限,但是后來通過mask限制了最大權(quán)限,現(xiàn)在用戶實(shí)際權(quán)限為rx
group::---
mask::r-x
other::---
setfacl -m m:rx linuxidc
通過執(zhí)行該命令后,文件所屬組,其他人和通過acl設(shè)置的用戶對(duì)該文件最大權(quán)限只有rx,可以防止
設(shè)置權(quán)限不能準(zhǔn)確把握時(shí),導(dǎo)致設(shè)置權(quán)限過大,但該命令不影響文件擁有者的權(quán)限.
acl相關(guān)命令選項(xiàng)
setfacl -m 給用戶或組設(shè)置acl權(quán)限
setfacl -m u:iaknehc:rx linuxidc //給用戶iaknehc設(shè)置acl權(quán)限
setfacl -m g:iaknehc:rx linuxidc //給組iaknehc設(shè)置acl權(quán)限
修改最大有效權(quán)限
setfacl -m m:rx linuxidc //修改文件vampire的最大有效權(quán)限為rx,一般只有文件所屬者或root才能修改文件最大有效權(quán)限
setfacl -x 刪除指定用戶的acl權(quán)限
setfacl -x u:iaknehc linuxidc //刪除用戶iaknehc對(duì)文件linuxidc的acl權(quán)限
setfacl -x g:iaknehc linuxidc //刪除組iaknehc對(duì)文件linuxidc的acl權(quán)限
setfacl -b 刪除文件所有acl權(quán)限
setfacl -b linuxidc //刪除文件vampire的所有acl權(quán)限,所有用戶的acl權(quán)限都被刪除
setfacl -d 設(shè)置文件默認(rèn)acl權(quán)限
setfacl -k 刪除默認(rèn)的acl權(quán)限
setfacl -R 遞歸設(shè)置acl權(quán)限