如果使用過Unix,就不會對ACL(Access Control List,訪問控制列表)感到陌生。在Linux 2.4內核中。ACL作為補丁存在,而在2.6新內核中,它已經是標准內核的一部分了。 傳統Unix的ACL,只能對文件設定用戶、組和其他人的權限,也就是我們常用的755、644之類的權限。如果想為一個文件交叉定義若干個不同組的用戶訪問權限,比如說tom、mary、tony、tod分別屬於不同的組,某一文件想讓mary和tony只讀,tom和tod可寫,其他用戶不可訪問。這種要求用傳統的Unix ACL是無法實現的。 Linux 2.6內核中的ACL正是為應付類似的需求所設計的。它可以方便地為文件配置任意用戶和組的訪問權限。 要想使用ACL功能,首先需要正確編譯2.6內核,並確保有下列選項: CONFIG_EXT2_FS_POSIX_ACL=y CONFIG_EXT3_FS_POSIX_ACL=y CONFIG_FS_POSIX_ACL=y 用新內核啟動後,還要求在掛載分區的時候添加必要的參數“acl”。 mount -t ext3 -o rw,acl /dev/hda8 /your_mount_point 或在 /etc/fstab 中加入下列行,實現自動mount分區並且帶有“acl”參數。 /dev/hda8 ext3 /your_mount_point defaults,acl 1 1 正確掛載文件系統後,就可以使用ACL的命令來修改文件的ACL屬性了。修改ACL屬性的命令有setfacl、getfacl 和chacl,其中chacl是一個SGI IRIX兼容命令,主要適用於那些對SGI IRIX以及XFS文件系統比較熟悉的用戶。本文只介紹setfacl和getfacl命令,具體用法如下面的例子: 1.使文件1.txt可以被用戶test讀寫 setfacl -m u:test:rw 1.txt 2.使文件1.txt可以被qmail組的組員讀,但不能寫 setfacl -m g:qmail:r 1.txt 3.把某一文件的ACL屬性copy給另一文件 比如把文件1.txt的ACL屬性copy給2.txt: getfacl 1.txt setfacl -set-file=- 2.txt 4.同時為文件設置不同用戶或組的權限 比如對文件2.txt設定testmail用戶可讀寫,qmail組組員可讀可執行,nofiles 組組員可執行: setfacl -m u:testmail:rw,g:qmail:rx,g:nofiles:x 2.txt 查看man page可獲得setfact和getfacl命令更詳細的用法。 在系統管理員的工作中,遇到的最大的困難往往不是高難度的內核問題,也不是配置Apache服務器之類的問題,而是控制文件訪問權限的問題。主管領導常常會提出非常特別的要求,權限配置經常具體到人,這在配置文件服務器Samba時非常難於實現,使用2.6內核中的ACL(訪問控制列表)新功能,問題就會迎刃而解。