簡介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可以用setfacl加上相關屬性,例如加上allen使用者可寫到剛才我們看到的# file: passwd
# owner: cvsadmin
# group: cvsadmin
user::rw-
group::r--
other::r--
passwd檔案,
# setfacl -m u:allen:rw- passwd這個命令可以這樣解釋:增加使用者(u)使用者名稱(allen)可讀寫許可權(rw-)到
檔案passwd。這樣之後再執行getfacl,看看結果,
# getfacl passwd可以看到多出了行user:allen:rw-,表示allen使用者有rw-許可權。# file: passwd
# owner: cvsadmin
# group: cvsadmin
user::rw-
user:allen:rw-
group::r--
mask::rw-
other::r--
mask許可權,就是用乙個固定的許可權設定遮住其他的許可權設定,這樣可以獲得比較
好的保護,因為使用者最終對檔案的許可權將是由設定的許可權和mask運算出來的
有效許可權,例如執行下面的設定,
# setfacl -m mask::r-- passwd我們可以看到allen使用者對於passwd檔案的有效(effective)許可權經計算# getfacl passwd
# file: passwd
# owner: cvsadmin
# group: cvsadmin
user::rw-
user:allen:rw- #effective:r--
group::r--
mask::r--
other::r--
為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命令。為了實現一些比較複雜的許可權管理...