易郵,讓您公司擁有和網易163,126,G郵箱一樣的郵件系統
依美艾爾交友網:向善為善誠信社會

依美艾爾交友網 (致力於打造人人向善為善的誠信慈善交友平台找愛人就應找善人,數萬會員這裡找對象,讓緣分萬裡挑一)

大型跨平台電子郵局系統

易郵 YMailserver (J2ee開發, 千萬用戶級電子郵件系統) 詳細... 試用 功能介紹 服務協議 我要購買 代理

旅遊行業建站禮包

為旅遊企業提供實用電子商務網站:http://trip.yiii.net 試用 方案及協議下載 我要建站 代理

ea/acl訪問控制系統介紹
標題:ea/acl訪問控制系統介紹

作者:std 發表日期:2002-12-05 00:00:00
摘錄3w3


                                              
                    
                      ea/acl訪問控制系統介紹

發布日期:2002-12-05
文摘內容:摘要





  在眾多的linux訪問控制系統中,Andreas Gruenbacher的Linux ACL工程(http://acl.bestbits.at/)是比較有影響力的一個,也是最容易使用的一個。它依賴於文件系統的擴展屬性(Extended Attribute)。





(2002-12-03 12:53:10)





--------------------------------------------------------------------------------


By nixe0n


http://www.linuxaid.com.cn








簡介





  作為一種自由的操作系統,Linux的發展極為迅速,也出現了很多改進傳統UNIX系統缺點的工程。這些工程通過不同的方式幫助系統管理員提高系統的安全性,例如:進程的能力,更細粒度的權限等。在上期我們介紹了Linux的能力特性,本文將介紹Linux的ACL系統。





  傳統UNIX系統的訪問控制方法是非常簡單的,它把用戶分成三類:文件的擁有者、組成員和其他用戶。很顯然,這種訪問控制模型過於簡陋了。隨著對Linux系統安全性要求的提高,需要一種更細粒度的訪問控制模型來代替傳統UNIX系統的訪問控制模型。使用ACL(Access Control List,訪問控制列表)系統,系統管理員能夠為每個用戶(包括root用戶在內)對文件和目錄的訪問提供更好的訪問控制。在POSIX中定義了一種訪問控制叫做POSIX ACL,可以實現基於單獨用戶的控制,目前的大多數Linux訪問控制工程都是以此為基礎。





  在眾多的工程中,Andreas Gruenbacher的Linux ACL工程(http://acl.bestbits.at/)是比較有影響力的一個。它依賴於文件系統的擴展屬性(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/downloadbig5.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的內核:





#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/





 





1.4.安裝完成之後的設置





  如果使用0.8.50版本的EA/ACL內核補丁,內核重新啟動之後不會自動打開ACL功能,我們需要使用acl或者user_xattr選項mount文件系統才能使ACL生效。例如,筆者系統的/home目錄位於/dev/hda7分區,我可以使用如下命令使/home分區支持訪問控制列表:





# mount -o remount,acl /dev/hda7





 





  為了方便使用(畢竟每次重新啟動系統都是用手工打開ACL是很麻煩的),可以直接修改/etc/fstab文件,還是以筆者的系統為例,下面/etc/fstab文件的節選:





LABEL=/ / ext2 defaults 1 1


LABEL=/boot /boot ext2 defaults 1 2


LABEL=/home /home ext3 defaults 1 2


LABEL=/usr /usr ext3 defaults 1 2





 





  如果需要使這幾個分區支持文件系統的擴展屬性和訪問控制列表,只要在選項欄加入acl選項,然後執行#mount -remount -a命令即可:





LABEL=/ / ext2 defaults,acl 1 1


LABEL=/boot /boot ext2 defaults,acl 1 2


LABEL=/home /home ext3 defaults,acl 1 2





LABEL=/usr /usr ext3 defaults,acl 1 2





 








2.Linux EA/ACL的語法





  安裝了ACL系統之後,系統中的每個對象(文件和目錄)都有一個ACL項目控制對這個目標的訪問。每個目錄之內所有對象的初始訪問控制由目錄的默認ACL項目決定。





  每個ACL項目由一系列ACL規則組成,這些規則設置單獨用戶或者一組用戶對目標的訪問權限,包括:讀、寫和搜索/執行。每個ACL條目被冒號分為三個部分:規則標簽類型(tag type)、規則限制符(qualifier)和訪問權限(access permission)。規則標簽類型包括以下關鍵詞:





user--以user關鍵詞開頭的ACL規則設置對象擁有者或者其他用戶對對象的訪問權限。例如:


user::rw- 表示對象擁有者的訪問權限;


user:nixe0n:r-- 表示用戶nixe0n擁有讀對象的權限。





group--設定某個用戶組對對象的訪問權限。例如:


group::rw- 表示用戶所在用戶組擁有讀寫權限;


group:linuxaid:r-- 表示屬於linuxaid組的用戶擁有讀權限。





mask--以mask關鍵詞開頭的ACL規則用來限制賦予用戶的最大訪問權限,對象擁有者除外。例如:


user::rw-


user:nixe0n:rw- #有效的是user:nixe0n:r--


group::rw- #有效的是group:r--


group:linuxaid::rw- #有效的是group:linuxaid:r--


mask::r--


other::r--





other--指定其他用戶對對象的訪問權限。


 





  每條ACL規則的第二部分是包含用戶或者用戶組識別符。用戶識別符可以是用戶名或者十進制的用戶ID號;用戶組識別符可以是用戶組名或者十進制的用戶組ID號。空白表示對象的擁有者或者擁有者所在的用戶組。





  第三部分是對對象的訪問權限。讀、寫和搜索(目錄)/執行(文件)分別由x、w和x代表,和通常使用的權限表示方法完全相同。對應的權限被-代替表示不具有此權限。





  除了以上的關鍵詞之外,還有一個只用於目錄的關鍵詞default。由default關鍵詞修飾的ACL條目表示目錄下所有子目錄和文件的默認訪問控制列表。





  為了方便,還有一種簡化的ACL規則表示方式。user可以用u代替;g表示group;m表示mask;o表示other。簡化方式的訪問控制列表,條目之間使用逗號分割。這種表示方式為命令行設置訪問控制列表提供了很大的便利。例如:





$setfacl -m u::rw-,u:floatboat:rw-,g::r--,g:nixe0n:rw-,m::r--,o::r-- foo.txt





 








3.訪問控制列表的維護





  ACL生效之後,在使用ls -l命令羅列文件時,你會看到具有訪問控制規則的目錄或者文件的權限域會有一個加號(+)。例如,在打開ACL功能之前的文件如下所示:





[nixe0n@nixe0n nixe0n]$ ls -l


-rw-rw-r-- 1 nixe0n nixe0n 11331 09-12 20:02 exam.txt





 





  使ACL功能生效之後,ls -l命令得到如下結果:





[nixe0n@nixe0n nixe0n]$ ls -l


-rw-rw-r--+ 1 nixe0n nixe0n 11331 09-12 20:02 exam.txt





 





3.1.setfacl





  setfacl工具設置文件和目錄的訪問控制列表,支持對ACL規則的設置(-s/-S)、修改(-m/-M)和刪除(-x/-X)。我們可以使用自己喜歡的編輯器按照ACL語法事先編寫好某個對象的訪問控制列表,然後使用大寫的命令行選項進行設置或者修改操作;我們也可以使用小寫命令行選項直接修改對象的訪問控制規則,例如:





[nixe0n@nixe0n nixe0n]$ setfacl -m -m u::rw-,u:floatboat:rw-,g::r--, - exam.txt





 





3.2.getfacl





  ls命令能夠獲得某個對象的訪問權限,與之類似,getfacl命令可以獲得文件和目錄的訪問控制列表規則,其輸出格式如下所示:





[nixe0n@nixe0n nixe0n]$ getfacl doc


# file: doc/


# owner: nixe0n


# group: linuxaid


user::rwx


user:floatboat:rwx


group::rwx


group:cool:r-x


mask:r-x


other:r-x


default:user::rwx


default:user:flatboat:rwx


default:group::r-x


default:mask:r-x


default:other:---





 








總結





  以上,我們討論了EA/ACL訪問控制系統的安裝和使用。相對於其它類似的系統,如:lids、grsecurity等,EA/ACL非常容易使用,和Linux內核的結合也好的多。而且,ea/acl已經合並到了2.5內核中。合理地利用訪問控制列表對提高系統的安全性很有幫助。






你還沒有登錄進社區不能回復,如果你是會員請登錄進社區 >>
如果你還不是會員請申請 >>


Copyright by 易網 版權所有
電子信箱:master@yiii.net