傳統(tǒng)的Linux文件系統(tǒng)的權(quán)限控制是通過user、group、other與r(讀)、w(寫)、x(執(zhí)行)的不同組合來實現(xiàn)的。隨著應(yīng)用的發(fā)展,這些權(quán)限組合已不能適應(yīng)現(xiàn)時復(fù)雜的文件系統(tǒng)權(quán)限控制要求。例如,我們可能需把一個文件的讀權(quán)限和寫權(quán)限分別賦予兩個不同的用戶或一個用戶和一個組這樣的組合。傳統(tǒng)的權(quán)限管理設(shè)置起來就力不從心了。為了解決這些問題,Linux開發(fā)出了一套新的文件系統(tǒng)權(quán)限管理方法,叫文件訪問控制列表(Access Control Lists,ACL)。
要啟用ACL,需內(nèi)核提供ACL支持和安裝ACL管理工具?,F(xiàn)在的2.6內(nèi)核都提供ACL支持,在編譯內(nèi)核時只要在file systems分支下,把Ext2 POSIX Access Control Lists或Ext3 POSIX Access Control Lists選中就可以了。用以下命令掛接硬盤啟用文件系統(tǒng)ACL。
debian:~# mount -t ext2 -o acl /dev/hda1 /mnt/hda1
我們也可把選項寫到/etc/fstab文件中,在需啟用acl的分區(qū)選項包含acl參數(shù)。
ACL有兩種,一種是存取ACL(access ACLs),針對文件和目錄設(shè)置訪問控制列表。一種是默認ACL(default ACLs),只能針對目錄設(shè)置。如果目錄中的文件沒有設(shè)置ACL,它就會使用該目錄的默認ACL。要設(shè)置ACL,首先要安裝管理工具,它們分別是getfacl和setfacl,在debian中只要安裝acl軟件包即可。
debian:~# apt-get install acl
setfacl工具可為文件和目錄ACL,命令格式如下:
setfacl -m
rules的格式如下,多條規(guī)則間可用逗號分隔。
u:uid:perms #為用戶設(shè)置ACL,perms為r、w、x的組合
g:gid:perms #為組設(shè)置ACL
o:perms #為其它組設(shè)置ACL
m:perms #設(shè)置有效權(quán)限屏蔽
下面是setfacl的實例:
debian:~# setfacl -m u:jims:rw testfile.txt
#-m選項表示添加或修改文件或目錄的權(quán)限訪問列表
debian:~# setfacl -x u:jims:rw testfile.txt
#-x選項表示刪除文件或目錄的訪問列表
要設(shè)置默認的ACL,只在rules前加一個d:,以表示指定一個目錄,如:
debian:getfacl debian.xml # file: debian.xml # owner: jims # group: jims user::rwx group::r-- other::r-- |