在眾多的linux訪問(wèn)控制系統(tǒng)中,Andreas Gruenbacher的Linux ACL工程是比較有影響力的一個(gè),也是最容易使用的一個(gè)。它依賴于文件系統(tǒng)的擴(kuò)展屬性(Extended Attribute)。
簡(jiǎn)介
作為一種自由的操作系統(tǒng),Linux的發(fā)展極為迅速,也出現(xiàn)了很多改進(jìn)傳統(tǒng)UNIX系統(tǒng)缺點(diǎn)的工程。這些工程通過(guò)不同的方式幫助系統(tǒng)管理員提高系統(tǒng)的安全性,例如:進(jìn)程的能力,更細(xì)粒度的權(quán)限等。在上期我們介紹了Linux的能力特性,本文將介紹Linux的ACL系統(tǒng)。
傳統(tǒng)UNIX系統(tǒng)的訪問(wèn)控制方法是非常簡(jiǎn)單的,它把用戶分成三類:文件的擁有者、組成員和其他用戶。很顯然,這種訪問(wèn)控制模型過(guò)于簡(jiǎn)陋了。隨著對(duì)Linux系統(tǒng)安全性要求的提高,需要一種更細(xì)粒度的訪問(wèn)控制模型來(lái)代替?zhèn)鹘y(tǒng)UNIX系統(tǒng)的訪問(wèn)控制模型。使用ACL(Access Control List,訪問(wèn)控制列表)系統(tǒng),系統(tǒng)管理員能夠?yàn)槊總€(gè)用戶(包括root用戶在內(nèi))對(duì)文件和目錄的訪問(wèn)提供更好的訪問(wèn)控制。在POSIX中定義了一種訪問(wèn)控制叫做POSIX ACL,可以實(shí)現(xiàn)基于單獨(dú)用戶的控制,目前的大多數(shù)Linux訪問(wèn)控制工程都是以此為基礎(chǔ)。
在眾多的工程中,Andreas Gruenbacher的Linux ACL工程是比較有影響力的一個(gè)。它依賴于文件系統(tǒng)的擴(kuò)展屬性(Extended Attribute)。當(dāng)前,Linux能夠在ext2/ext3和SGI的XFS文件系統(tǒng)中支持POSIX ACL。其它類型的文件系統(tǒng),例如:ReiserFS文件系統(tǒng)也很快會(huì)支持ACL。在網(wǎng)絡(luò)文件系統(tǒng)中,Linux能夠通過(guò)Samba共享支持ACL,不過(guò)目前的NFS還不能支持ACL。需要指出的是,目前使用磁盤(pán)限額的ext3文件系統(tǒng)對(duì)ACL的支持不是很好。
1.安裝EA/ACL系統(tǒng)
1.1.下載ACL/EA內(nèi)核補(bǔ)丁以及相關(guān)工具
安裝ACL/EA系統(tǒng),首先需要下載相關(guān)的內(nèi)核補(bǔ)丁、工具以及輔助庫(kù)。所有所需的軟件包都可以從http://acl.bestbits.at/download.html下載。
本文將討論如何在RedHat7.3(內(nèi)核使用編寫(xiě)本文時(shí)的最新版本2.4.19,在本文完成時(shí)linux-2.4.20剛剛發(fā)布,不過(guò)相關(guān)的ea/acl的補(bǔ)丁還不太穩(wěn)定)中安裝ACL系統(tǒng)。需要指出的是,最新版的RedHat 8中已經(jīng)廣泛使用了ea/acl。為了系統(tǒng)維護(hù)的方便,建議除了內(nèi)核補(bǔ)丁使用源代碼包之外,其余軟件都是用RPM包進(jìn)行安裝。整個(gè)安裝過(guò)程需要用到以下的軟件包:
acl-2.0.18-0.src.rpm attr-2.0.10-0.src.rpm e2fsprogs-1.27ea-26.4.src.rpm star-1.5a03-2.src.rpm fileutils-4.1.18acl65.5.src.rpm linux-2.4.19-xattr-0.8.50.diff.gz linux-2.4.19-acl-0.8.50.diff.gz |
1.2.安裝內(nèi)核
在下在了所需的軟件之后,就可以進(jìn)入實(shí)際的安裝了。我們首先需要一個(gè)支持ACL的內(nèi)核,以下是具體的操作步驟:
1)進(jìn)入內(nèi)核源代碼所在的目錄,使用EA/ACL補(bǔ)丁升級(jí)內(nèi)核源代碼:
$ cd linux-2.4.19 $ zcat ../linux-2.4.19-xttr-0.8.50.diff.gz | patch -p1 $ zcat ../linux-2.4.19-acl-0.8.50.diff.gz | patch -p1 |
2)執(zhí)行如下命令進(jìn)入內(nèi)核選項(xiàng)配置界面
# make xconfig |
3)選擇File systems進(jìn)入文件系統(tǒng)的配置界面
4)打開(kāi)POSIX Access Control List選項(xiàng),然后根據(jù)需要打開(kāi)ext2/ext3文件系統(tǒng)的支持選項(xiàng)。
5)完成配置之后,執(zhí)行如下命令編譯支持ACL的內(nèi)核:
[[The No.4 Picture.]] #make dep #make bzImage #make modules #make modules_install #cp arch/i386/boot/bzImage /boot/ACLKernel |
6)最后使用自己喜歡的編輯器編輯/boot/grub/menu.lst文件,使我們剛才編譯的內(nèi)核能夠啟動(dòng)。
1.3.安裝輔助工具
完成內(nèi)核的安裝之后,我們還需要安裝用戶空間的工具和庫(kù)以便對(duì)ACL進(jìn)行日常維護(hù)。
1)安裝attr庫(kù)
# rpm --rebuild attr-2.0.10-0.src.rpm # rpm -ihv /usr/src/redhat/RPMS/i386/attr-2.0.10-0.i386.rpm # rpm -ihv /usr/src/redhat/RPMS/i386/attr-devel-2.0.10-0.i386.rpm # rpm -ihv /usr/src/redhat/RPMS/i386/libattr-2.0.10-0.i386.rpm |
2)安裝acl庫(kù)
# rpm --rebuild acl-2.0.18-0.src.rpm # rpm -ihv /usr/src/redhat/RPMS/i386/acl-2.0.18-0.i386.rpm # rpm -ihv /usr/src/redhat/RPMS/i386/acl-devel-2.0.18-0.i386.rpm # rpm -ihv /usr/src/redhat/RPMS/i386/libacl-2.0.18-0.i386.rpm |
3)安裝支持ACL的fileutils軟件包。它比原始的fileutils軟件包增加了維護(hù)ACL的工具。
# rpm --rebuild fileutils-4.1.18acl65.5.src.rpm # rpm -Uhv /usr/src/redhat/RPMS/i386/fileutils-4.1.8acl-65.5.i386.rpm |
4)安裝支持文件系統(tǒng)的擴(kuò)展屬性(Extended Attribute)的e2fsprogs軟件包。
# rpm --rebuild e2fsprogs-1.27ea-26.4.src.rpm # rpm -Uhv /usr/src/redhat/RPMS/i386/e2fsprogs-1.27ea-26.4.i386.rpm |
5)安裝star。Star是一個(gè)類似于tar,支持ACL的快速歸檔工具。
# rpm --rebuild star-1.5a03-2.src.rpm # rpm -Uhv /usr/src/redhat/RPMS/i386/ |