誕生
傳統的Linux檔案系統的許可權控制是通過user、group、other與r(讀)、w(寫)、x(執行)的不同組合來實現的。隨著套用的發展,這些許可權組合已不能適應現時複雜的檔案系統許可權控制要求。例如,我們可能需把一個檔案的讀許可權和寫許可權分別賦予兩個不同的用戶或一個用戶和一個組這樣的組合。傳統的許可權管理設定起來就力不從心了。
為了解決這些問題,Linux開發出了一套新的檔案系統許可權管理方法,叫檔案訪問控制列表(Access Control Lists,ACL)。
使用
要啟用ACL,需核心提供ACL支持和安裝ACL管理工具。現在的2.6核心都提供ACL支持,在編譯核心時只要在file systems分支下,把Ext2 POSIX Access Control Lists或Ext3 POSIX Access Control Lists選中就可以了。用以下命令掛接硬碟啟用檔案系統ACL。
debian:~# mount -t ext2 -o acl /dev/hda1 /mnt/hda1
我們也可把選項寫到/etc/fstab檔案中,在需啟用acl的分區選項包含acl參數。
ACL有兩種,一種是存取ACL(access ACLs),針對檔案和目錄設定訪問控制列表。一種是默認ACL(default ACLs),只能針對目錄設定。如果目錄中的檔案沒有設定ACL,它就會使用該目錄的默認ACL。要設定ACL,首先要安裝管理工具,它們分別是getfacl和setfacl,在debian中只要安裝acl軟體包即可。
debian:~# apt-get install acl
setfacl工具可為檔案和目錄ACL,命令格式如下:
setfacl -m <rules> <files>
rules的格式如下,多條規則間可用逗號分隔。
u:uid:perms #為用戶設定ACL,perms為r、w、x的組合
g:gid:perms #為組設定ACL
o:perms #為其它組設定ACL
m:perms #設定有效許可權禁止
下面是setfacl的實例:
debian:~# setfacl -m u:jims:rw testfile.txt
#-m選項表示添加或修改檔案或目錄的許可權訪問列表
debian:~# setfacl -x u:jims:rw testfile.txt
#-x選項表示刪除檔案或目錄的訪問列表
要設定默認的ACL,只在rules前加一個d:,以表示指定一個目錄,如:
debian:~# setfacl -m d:o:rx /data
getfacl用以顯示檔案或目錄的ACL,如:
debian:getfacl debian.xml
# file: debian.xml
# owner: jims
# group: jims
user::rwx
group::r--
other::r--
tar和dump工具不能備份ACL檔案,如果我們要備份ACL檔案系統,可以使用star工具。另外,samba可通過--with-acl-support編譯選項支持ACL。