虛擬主機使用者ftp和apache使用者檔案互操作許可權解決方法

cnbird發表於2008-11-09
 

近來用linux虛擬主機學習了一下linux下的許可權比較高階一點的許可權管理,當我們使用PHP程式的時候,在安裝好以後,如果你想刪除整個目錄,你會發現apache使用者生成了一些檔案,ftp的使用者不能刪除.

其實這是有辦法解決的。

方法1.使用者組控制方法
先給所有的虛擬主機主機中的虛擬使用者(ftp使用者)加入到apache這個組.然後設定umask為002.這樣使用者和組都有讀寫執行許可權。這個是比較容易的方法.但不安全。不同的使用者可以刪除對方的檔案,因為是同一個組,組有讀寫執行的許可權.

方法2.使用linux高階的許可權管理acl。

對一個目錄設定二重許可權,除了使用者本身的使用者組,在加入apache對他要讀寫執行的許可權.
這樣使用者就能刪除apache生成的檔案.但為別人的組,別的虛擬使用者他沒法刪除.

下面我們就來看看第二種的控制方法

linux系統裡面,並不是只能為所有者,同組使用者和其他使用者這三類人分配一個檔案(目錄)的許可權,你還可以指定其他的使用者或者組,不過有個前提,掛載分割槽的時候加上acl選項,比如:
mount /dev/hda1 /home -o acl。

然後你可以使用
setfacl -m u:ftp:rwx /home/ftp/www
命令來給ftp使用者分配/home/ftp/www目錄的所有許可權

如果你要/home/ftp/www/下面新建的目錄和檔案也有同樣的許可權
setfacl -d -m u:ftp:rwx /home/ftp/www

設定預設的許可權,這個命令還可以實現多個使用者的不同許可權的控制,比如
setfacl -m u:ftp:rwx /home/www;
setfacl -m u:tmp:r-x /home/www;
ftp使用者擁有所有許可權,tmp使用者擁有隻讀許可權。

你還可以設定mask的值:
setfacl -m m::rwx /home/www;

這樣,新建的你就可以讓虛擬主機的使用者和apache使用者都有許可權操作檔案和目錄了,比如apache使用者的使用者名稱是apache,虛擬主機的使用者名稱是vmuser,目錄是/home/vmuser/www,可以使用以下的命令:
setfacl -m u:vmuser:rwx /home/vmuser/www;
setfacl -m u:apache:rwx /home/vmuser/www;
setfacl -d -m u:vmuser:rwx /home/vmuser/www;
setfacl -d -m u:apache:rwx /home/vmuser/www;
setfacl -m m::rwx /home/vmuser/www;
setfacl -d -m m::rwx /home/vmuser/www;

這樣,在安裝PHP程式的時候,就不會提示你apache的使用者沒有許可權寫檔案,而你想刪除一個目錄的時候,也不會因為下面有apache使用者生成的檔案而不能刪除了。當然這個辦法有點侷限就是基本上只有ext2和ext3分割槽格式能用,其他的,比如xfs,jfs等不能直接使用,修改後才能使用。


相關文章