linux下acl應用詳解

2022-07-03 23:54:09 字數 3063 閱讀 9352

簡介acl是訪問控制列表(access control lists)的縮寫,對於unix系統

acl是標準unix檔案屬性(r,w)的附加擴充套件。acl給予使用者和管理員更好控制檔案讀寫和許可權賦予的能力,商業unix和ntfs以及freebsd都支援檔案系統的 acl,linux從2.6核心開始支援對ext2,ext3和xfs,jfs等檔案系統的acl支援。

注意,fedora core從2開始支援acl操作,雖然好像並不支援jfs和reiserfs。配置開啟檔案系統的acl支援,修改/etc/fstab的mount屬性,例如針對這樣的

/home檔案系統,label=/home /home ext3 rw,acl 1 2

該行第四列原文為defaults,現改為rw,acl以開啟檔案系統的acl支援。

# mount -v -o remount /home
當然umount掉檔案系統,再mount也是可以的,只要確信沒有使用者和程式

在使用這個檔案系統,可以通過mount命令來檢視修改是否生效,

# mount -l
之後,輸出中有這樣的行就正確了,

/dev/hda5 on /home type ext3 (rw,acl) [/home]acl操作命令getfacl - 取得檔案的acl資訊

setfacl - 設定檔案的acl資訊

基本命令就是這麼兩條。

getfacl很簡單,可以返回檔案當前的acl資訊,例如在乙個cvsroot下的passwd

有這樣的屬性,

# getfacl passwd

# file: passwd

# owner: cvsadmin

# group: cvsadmin

user::rw-

group::r--

other::r--

可以用setfacl加上相關屬性,例如加上allen使用者可寫到剛才我們看到的

passwd檔案,

# setfacl -m u:allen:rw- passwd
這個命令可以這樣解釋:增加使用者(u)使用者名稱(allen)可讀寫許可權(rw-)到

檔案passwd。這樣之後再執行getfacl,看看結果,

# getfacl passwd

# file: passwd

# owner: cvsadmin

# group: cvsadmin

user::rw-

user:allen:rw-

group::r--

mask::rw-

other::r--

可以看到多出了行user:allen:rw-,表示allen使用者有rw-許可權。

mask許可權,就是用乙個固定的許可權設定遮住其他的許可權設定,這樣可以獲得比較

好的保護,因為使用者最終對檔案的許可權將是由設定的許可權和mask運算出來的

有效許可權,例如執行下面的設定,

# setfacl -m mask::r-- passwd

# getfacl passwd

# file: passwd

# owner: cvsadmin

# group: cvsadmin

user::rw-

user:allen:rw- #effective:r--

group::r--

mask::r--

other::r--

我們可以看到allen使用者對於passwd檔案的有效(effective)許可權經計算

為r--。

如果setfacl命令不指定操作使用者,那麼就是對缺省屬主使用者許可權的操作,這時候

的setfacl命令功能上和傳統的chmod相同。例如setfacl u::rwx,g::rwx,o::rwx

filename 等價於chmod 777 filenmae。更多的setfacl操作-x 刪除特定使用者的許可權設定,例如setfacl -x u:allen

filename,刪除filenmae上allen使用者的許可權設定。

刪除所有的acl設定,

setfacl -b filename

setfacl --remove-all filename

遞迴選項 -r

此外,acl的屬性設定也可以寫在乙個檔案中,使用setfacl的-m引數從檔案中取得設定資訊,這個對成批設定和備份acl設定恢復特別有效。

預設acl設定,setfacl -d可以設定,只供目錄以及目錄繼承使用。

cp和mv命令對於acl的支援,mv命令保持acl設定資訊,cp命令在

使用-p,-a引數時保留acl設定資訊。但是如果從乙個支援acl的檔案系統向

乙個不支援acl的檔案系統移動或帶acl屬性的拷貝,則會得到類似下面這樣的錯誤提示,

cp: preserving permissions for `filename': operation not supported

設定了acl的檔案在ls -l時可以看到這樣的情況,

-rw-rw----+ 1 allen chen 0 jun 2 09:52 filename

有個加號在第乙個列的末尾。

可以這樣備份acl資訊和恢復,

getfacl -r dir/ > acl.bak.txt

setfacl --restore acl.bak.txt

打包備份acls目錄和檔案

請使用star命令打包,引數-acl用於指定備份相關的acl資訊。

備份:star -hexustar -acl -c f=tree.star tree

恢復:star -acl -x f=tree.star

acl的應用,主要可以用在共享檔案時需要細分使用者許可權的地方,如cvs倉庫的許可權控制應用等方面,acl都有很好的用途。

******

acl 在許可權繼承問題:

setfacl -m u:tset:rwx /test

意為增加test使用者 對/test目錄擁有完全許可權

setfacl -m -d u:tset:rwx /test

意為增加test使用者 對/test目錄擁有完全許可權並且預設繼承。

**:

linux中acl管理詳解

1 acl簡介 2 centos7 與之前版本的區別 3 管理acl工具的介紹 4 注意事項訪問控制表 access control list,acl 又稱訪問控制串列,是使用以訪問控制矩陣為基礎的訪問控制方法,每乙個物件對應乙個串列主體 1 訪問控制表描述每乙個物件各自的訪問控制,並記錄可對此物件...

ACL命令詳解

conf t access list 錶號 permit deny 條件 錶號 1 99 條件 源ip 反子網掩碼 反子網掩碼 如0.0.0.255 其中0代表嚴格匹配,255代表不需要匹配。例如 access list 1 deny 192.168.1.0 0.0.0.255 拒絕源ip為192....

Linux學習之ACL許可權詳解 十

目錄 acl許可權簡介與開啟 檢視與設定acl許可權 最大有效許可權與刪除acl許可權 預設acl許可權和遞迴acl許可權 使用者許可權管理始終是linux系統管理中最重要的環節。大家對linux unix的ugo許可權管理方式一定不陌生,還有最常用的chmod命令。為了實現一些比較複雜的許可權管理...