主機的具體權限規劃:ACL的使用
什麼是ACL
ACL 是Access Control List 的縮寫,主要的目的是在提供傳統的owner,group,others 的
read,write,execute 權限之外的細部權限設定。ACL 可以針對單一使用者,單一檔案或目錄來進行 r,w,x 的權限規範,對與需要特殊權限的使用狀況非常有幫助。
那ACL 主要可以針對哪些方面來控制權限呢?他主要可以針對幾個項目:
· 使用者 (user) :可以針對使用者來設定權限;
· 群組 (group) :針對群組為對象來設定其權限;
· 默訃屬性 (mask) :還可以針對在該目錄下在建立新檔案/ 目錄時,規範新資料的預設權限;
好了,再來看看如何讓你的檔案系統可以支援ACL 吧!
如何啟動ACL
由與ACL 是傳統的 Unix-like 作業系統權限的額外支援項目,是以要使用ACL 必須要有檔案系統的支 持才行。目前绛大部分的檔案系統都有支援ACL 的功能,包括 ReiserFS, EXT2/EXT3, JFS, XFS 等等。 在我們的 CentOS 5.x 當中,預設使用 Ext3 是啟動ACL 支援的!至與察看你的檔案系統是否支援ACL
可以這樣看:
[root@localhost ~]# mount
如果看不到acl再用一下指令
[root@localhost ~]# dumpe2fs -h /dev/sda1
------------------略----------------
Default mount options: user_xattr acl
由mount 單純去查閱不見得可以看到實際的項目,由與目前新的distributions 常常會主動加入某些預設功能,如上表所示,其實CentOS 5.x 在預設的情況下 (Default mount options:) 就幫你加入acl 的 支援了!那如果你的系統預設不會幫你加上acl 癿支援, 你可以這樣做:
[root@localhost /]# vi /etc/fstab 在default後加,acl
<a href="http://blog.51cto.com/attachment/201209/132523592.png" target="_blank"></a>
[root@localhost /]# umount /dev/sda3
[root@localhost /]# mount -a
<a href="http://blog.51cto.com/attachment/201209/132533418.png" target="_blank"></a>
ACL 的設定技巧:getfacl, setfacl
好了,讓你的filesystem 啟動ACL 支援後,接下來該如何設定與觀察ACL 呢?
利用一下兩個就可以了:
· getfacl :取得某個檔案/ 目錄的ACL 設定項目;
· setfacl :設定某個目錄/檔案的ACL 規範。
setfacl 指令用法
[root@www ~]# setfacl [-bkRd] [{-m|-x} acl 參數] 目标檔案名
選項與參數:
-m :設定後續的acl 參數給檔案使用,不可與 -x 合用;
-x :初除後續的acl 參數,不可與 -m 合用;
-b :移除所有的ACL 設定參數;
-k :移除預設的ACL 參數;
-R :遞歸設定acl ,亦即包括次目錄都會被設定起來;
-d :設定『預訓acl 參數』的意思!叧對目路有效,在該目路建立的資料會引用
此預設值
1. 針對特定使用者的方式:
設定規範:『 u:[使用者賬号清單]:[rwx] 』,例如針對wsm的權限規範
rx :
<a href="http://blog.51cto.com/attachment/201209/132546126.png" target="_blank"></a>
[root@localhost ~]# setfacl -m u:wsm:rx acl_test
<a href="http://blog.51cto.com/attachment/201209/132612589.png" target="_blank"></a>
如果一個檔案設定了ACL 參數後,他的權限部分就會多出一個 + 号了!但是此時你看到的權限不 實際權限可能就會有點誤差!那要如何觀察呢?就透過getfacl 吧!
getfacl 指令用法
[root@www ~]# getfacl filename
getfacl 的選項幾乎與setfacl 相同!是以這裡就免去了選項的說明啊!
列出我們設定acl_test的權限内容
[root@localhost ~]# getfacl acl_test
# file: acl_test
# owner: root
# group: root
user::rw-
user:wsm:r-x
group::r--
mask::r-x
other::r--
以上面的結果來看,我們剛剛訓定的wsm 對與這個檔案具有 r 不x 的權限啦!
group類型的 setfacl 設定!
[root@localhost ~]# setfacl -m g:mygroup:rx acl_test
<a href="http://blog.51cto.com/attachment/201209/132635564.png" target="_blank"></a>
3. 針對有效權限 mask 的設定方式:
# 設定規範:『 m:[rwx] 』,例如針對剛剛癿檔案規範為僅有r
[root@localhost ~]# setfacl -m m:r acl_test
<a href="http://blog.51cto.com/attachment/201209/132647185.png" target="_blank"></a>
Wsm群組mygroup僅具有r的權限,,不存在有x權限了
任務 在/srv/acl 這個目錄,讓 wsm 可以進入查閱,但 myuser1 不具有修改的權力。 由與wsm 是獨立的使用者不群組,而/srv 是附屬與/ 之下的,是以/srv 已經具有acl 功能。
若沒有可以用[root@localhost home]# mount -o remount / 指令
透過如下的設定即可搞定
1. 先測試看看,使用 wsm 能否進入該目錄?
<a href="http://blog.51cto.com/attachment/201209/132656623.png" target="_blank"></a>
2. 開始用 root 的身份來設定一下該目錄的權限吧!
[root@localhost ~]# setfacl -m u:wsm:rx /srv/acl
<a href="http://blog.51cto.com/attachment/201209/132708228.png" target="_blank"></a>
3. 再使用wsm去測試看看結果
<a href="http://blog.51cto.com/attachment/201209/132720581.png" target="_blank"></a>
可以檢視,但不能寫入
ACL 的權限設定是否能夠被次目錄所『繼承?』先試看看:
[root@localhost ~]# cd /srv/acl/
<a href="http://blog.51cto.com/attachment/201209/132733548.png" target="_blank"></a>
你可以明顯的發現,權限後面都沒有 + ,代表這個acl 屬性并沒有繼承喔!如果你想要讓acl 在目路底 下的資料都有繼承的功能,那就得如下這樣做了!
讓 wsm 在/s rv/acl 底下一直具有 rx 的預設權限!
[root@localhost acl]# setfacl -m d:u:wsm:rx /srv/acl/
<a href="http://blog.51cto.com/attachment/201209/132747978.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201209/132756564.png" target="_blank"></a>
看吧!确實有繼承喔!然後我們使用getfacl 再次确認看看!
<a href="http://blog.51cto.com/attachment/201209/132816760.png" target="_blank"></a>
那如果想要讓ACL 的屬性全部消失又要如何處理?透過『setfacl -b 檔名 』就可
啦!太簡單了
本文轉自 abc16810 51CTO部落格,原文連結:http://blog.51cto.com/abc16810/1003669