星期三, 5月 13, 2009

ACL 神奇的好物

什麼是ACL - 自己去GOOGLE吧! (欠打!)

其實是這樣的,今天因為某些原因需要再VSFTP上面做一些小設定。

需求如下,A、B帳號:

A帳號只可上傳無法下載及刪除,B帳號則可以上傳下載刪除。
(共用同個目錄,也有點像是老師跟學生的關係!)

感覺起來好像蠻簡單的,就開始爬爬爬.....(爬文、GOOGLE、鳥哥....!)
關鍵字:VSFTP 限定使用者只能上傳、VSFTP 個別設定使用者權限...

就這樣不斷的嘗試.........,天阿!!怎麼都沒有...
(一定是我太弱了.....真想砍了VSFTP換PROFTP....!)

就在快放棄的時候,突然想到另外一種作法...如果從權限去著手呢!
可是問題來拉,A帳號上傳....權限是他,要怎麼不讓他下載呢?

突然間有個聲音從旁邊出來,不會用ACL喔....

那是瞎密?(大驚~!)

趕快去鳥哥那邊拜讀一下....

哇~原來有這種好物,以前怎麼都不知道---- (可見有多混~!)

簡單提一下ACL 的設定方法。

getfacl - 取得檔案/目錄 ACL 設定項目
setfacl - 針對檔案/目錄設定ACL 設定項目


#先來取得一下看看
getfacl /home/A
getfacl: Removing leading '/' from absolute path names
# file: home/A/
# owner: A
# group: users
user::rwx
group::r-x
other::r-x



接下來讓A只能寫入不能讀(哈哈哈~離成功只有一小步了!)

setfacl -m u:A:wx /home/A

正爽快的按下ENTER時,瞎密發生錯誤........

我沒有打錯吧!!不信邪~再來,還是失敗(錯誤訊息忘記了!!就是失敗就是了!)

趕快上網爬一下,有人說是OS太老舊。

我承認這個時候還跑FedoraCore 5(等等~這邊不是openSUSE嗎?)

但畢竟不是我的機器,問題還是要先解決!

試了很久,放棄....(謎之音:換CENTOS吧!)

我也想說好吧可能真的是系統太老舊了...繼續爬一下鳥哥的文章,拜讀ACL

突然間喵到這段

引用鳥哥文章的內容:
由於目前新的 distributions 常常會主動加入某些預設功能, 如上表所示,其實 CentOS 5.x 在預設的情況下 (Default mount options:) 就幫你加入 acl 的支援了! 那如果你的系統預設不會幫你加上 acl 的支援呢?那你可以這樣做:

心中暗自竊喜,一定是這個原因拉!


mount -o remount,acl /

測試一下,果然成功了!(太好了,問題解決了!)

趕快去fstab編輯一下(#vi /etc/fstab),把需要此功能的分割區加上,acl
大概如下

/dev/sda2 / ext3 acl,default


回到家拿一下openSUSE測試,果然預設就支援了拉。果然是好系統。
(硬要拉回這,也太會扯了...!)

看來不能老是只玩桌面(openSUSE已經變我主要系統了,WINDOWS 掰掰嚕!)
伺服器應用也該好好研讀才是了!
=========
正當我以為一切都設定好後
沒想到使用者反應無法刪除檔案
仔細查了一下 是權限的問題A上傳的檔案B無法刪除。
後來仔細回想一下原來是沒有繼承到
這時

setfacl -m d:u:A:wx /home/A

終於搞定,收工!!

如果說我們想把設定的某一筆規則刪除該怎麼做呢(一樣很簡單,使用x這個參數)
setfacl -x d:u:A /home/A

最後更新日期:2012/12/11

====
延伸閱讀
第十四章、Linux 帳號管理與 ACL 權限設定

沒有留言: