2015-05-10 126 views
0

我正在運行Apache2 + userdirUbuntu服務器14.04。用戶通過AD進行身份驗證,並可以通過SSH成功​​登錄到此服務器。每個用戶$HOME具有700權限以禁止用戶更改和讀取其他用戶文件。

目錄/home/public_html被Apache(www-data:www-data)擁有並有權775所以每個用戶(組www-data的成員)可以在他/她的用戶名在/home/public_html創建自己的子目錄,並在他/她的$HOME創建符號鏈接。下面是用於與用戶名jdoe43的樣品用戶的示例:

  • /home/Domain/jdoe43是$ HOME目錄(它有權限700)
  • /home/public_html/jdoe43是用戶jdoe43一個public_html目錄該符號鏈接到/home/Domain/jdoe43/public_html

UserDir指令設置爲/home/public_html。的userdir.conf其餘默認爲Ubuntu的安裝,以下列出供參考:

<IfModule mod_userdir.c> 
    UserDir /home/public_html 
    UserDir disabled root 
    <Directory /home/public_html/*> 
     AllowOverride FileInfo AuthConfig Limit Indexes 
     Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec 
     <Limit GET POST OPTIONS> 
     Require all granted 
     </Limit> 
     <LimitExcept GET POST OPTIONS> 
     Require all denied 
     </LimitExcept> 
    </Directory> 
</IfModule> 

我期待着找到合適的權限集的允許

  • Apache進程訪問文件/home/public_html/*
  • 用戶有完全控制自己的public_html目錄

,並在同一時間不允許

  • 用戶查看/修改其他用戶的$ HOME目錄
  • 用戶查看/修改位於/home/public_html/
  • 另一個用戶的 public_html目錄的內容的內容

所有我用不同的權限嘗試結束,或者與Apache不能訪問用戶的public_html或與用戶至少讀取其他用戶的訪問$HOMEpublic_html

我發現了幾個帖子建議使用SELinux的和配置文件系統拒絕訪問其他用戶的目錄通過許可的方式(像我$HOME沒有將其設置爲700),並在同一時間授權 Apache進程(通過selinux)訪問/home/public_html及其所有子目錄。我還發現一些資源指出,在最近版本的Ubuntu中,selinux被替換爲apparmor,所以,由於我在這項技術方面的經驗有限,因此我決定推遲對其實施的任何移動。

任何建議/建議,非常感謝。謝謝。

+0

Ubuntu或serverexchange是這個問題的最佳場所。 –

回答

0

有可能是一個selinux布爾值,讓你做這樣的事情相對無痛。

ubuntu wiki將您發送到debian SELinux頁面,確認它們使用與其他發行版相同的refpolicies(當然)。我剛剛檢查了apache的策略,布爾值就在那裏。 如果你已經有一個啓用SELinux的Ubuntu的,你可以很容易地檢查是否布爾與

getsebool httpd_enable_homedirs 

啓用,並檢查布爾真或假的(它默認爲false)。

here所示,使的UserDir後,您需要啓用布爾

setsebool -P httpd_enable_homedirs true 

而重新標記目錄爲每個用戶

chcon -R -t httpd_sys_content_t /home/testuser/public_html 

需要注意的是在public_html目錄UNIX權限仍是755或無論您需要爲您的用戶/組設置。

chown testuser:testuser /home/testuser/public_html 
chmod 755 /home/testuser/public_html 

如果你想要去SELinux的方式,你需要做什麼;我不太瞭解AppArmor和其他替代方法,但正如你所說的,Ubuntu wiki對於selinux的支持並不是很清楚。

如果你有一些空閒時間,我建議在測試虛擬機上試試它,看看它是如何發展的。

希望這會有所幫助!

相關問題