巧用Linux2.6核心新功能配置檔案ACL(轉)

gugu99發表於2007-08-10
巧用Linux2.6核心新功能配置檔案ACL(轉)[@more@]

  如果使用過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(訪問控制列表)新功能,問題就會迎刃而解。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10748419/viewspace-939965/,如需轉載,請註明出處,否則將追究法律責任。

相關文章