在眾多的linux訪問控制系統中,Andreas Gruenbacher的Linux ACL工程是比較有影響力的一個,也是最容易使用的一個。它依賴于文件系統的擴展屬性(Extended Attribute)。
簡介
作為一種自由的操作系統,Linux的發展極為迅速,也出現了很多改進傳統UNIX系統缺點的工程。這些工程通過不同的方式幫助系統管理員提高系統的安全性,例如:進程的能力,更細粒度的權限等。在上期我們介紹了Linux的能力特性,本文將介紹Linux的ACL系統。
傳統UNIX系統的訪問控制方法是非常簡單的,它把用戶分成三類:文件的擁有者、組成員和其他用戶。很顯然,這種訪問控制模型過于簡陋了。隨著對Linux系統安全性要求的提高,需要一種更細粒度的訪問控制模型來代替傳統UNIX系統的訪問控制模型。使用ACL(Access Control List,訪問控制列表)系統,系統管理員能夠為每個用戶(包括root用戶在內)對文件和目錄的訪問提供更好的訪問控制。在POSIX中定義了一種訪問控制叫做POSIX ACL,可以實現基于單獨用戶的控制,目前的大多數Linux訪問控制工程都是以此為基礎。
在眾多的工程中,Andreas Gruenbacher的Linux ACL工程是比較有影響力的一個。它依賴于文件系統的擴展屬性(Extended Attribute)。當前,Linux能夠在ext2/ext3和SGI的XFS文件系統中支持POSIX ACL。其它類型的文件系統,例如:ReiserFS文件系統也很快會支持ACL。在網絡文件系統中,Linux能夠通過Samba共享支持ACL,不過目前的NFS還不能支持ACL。需要指出的是,目前使用磁盤限額的ext3文件系統對ACL的支持不是很好。
1.安裝EA/ACL系統
1.1.下載ACL/EA內核補丁以及相關工具
安裝ACL/EA系統,首先需要下載相關的內核補丁、工具以及輔助庫。所有所需的軟件包都可以從http://acl.bestbits.at/download.html下載。
本文將討論如何在RedHat7.3(內核使用編寫本文時的最新版本2.4.19,在本文完成時linux-2.4.20剛剛發布,不過相關的ea/acl的補丁還不太穩定)中安裝ACL系統。需要指出的是,最新版的RedHat 8中已經廣泛使用了ea/acl。為了系統維護的方便,建議除了內核補丁使用源代碼包之外,其余軟件都是用RPM包進行安裝。整個安裝過程需要用到以下的軟件包:
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.安裝內核
在下在了所需的軟件之后,就可以進入實際的安裝了。我們首先需要一個支持ACL的內核,以下是具體的操作步驟:
1)進入內核源代碼所在的目錄,使用EA/ACL補丁升級內核源代碼:
$ 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)執行如下命令進入內核選項配置界面
# make xconfig |
3)選擇File systems進入文件系統的配置界面
4)打開POSIX Access Control List選項,然后根據需要打開ext2/ext3文件系統的支持選項。
5)完成配置之后,執行如下命令編譯支持ACL的內核:
[[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文件,使我們剛才編譯的內核能夠啟動。
1.3.安裝輔助工具
完成內核的安裝之后,我們還需要安裝用戶空間的工具和庫以便對ACL進行日常維護。
1)安裝attr庫
# 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庫
# 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軟件包增加了維護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)安裝支持文件系統的擴展屬性(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是一個類似于tar,支持ACL的快速歸檔工具。
# rpm --rebuild star-1.5a03-2.src.rpm # rpm -Uhv /usr/src/redhat/RPMS/i386/ |


