歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux管理 >> Linux維護 >> 巧用Linux2.6內核新功能配置文件ACL

巧用Linux2.6內核新功能配置文件ACL

日期:2017/3/2 10:43:31   编辑:Linux維護

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

Copyright © Linux教程網 All Rights Reserved