用ownCloud掛載NFS時避開資料夾權限檢查的問題 / Disable ownCloud permission check when mounting NFS
用ownCloud掛載NFS時避開資料夾權限檢查的問題 / Disable ownCloud permission check when mounting NFS
當ownCloud掛載NFS時,資料夾權限會被設定為777,違反ownCloud所限制的770權限,而導致ownCloud無法順利運作。本篇文章修改了ownCloud的util.php來避免權限檢查問題。
When mounting NFS for ownCloud, the mounted folder’s permission will be changed to 777. Due to security reason, 777 permission is not allowed by ownCloud and it will not work while this permission. This article try to modify util.php to disable the permission check and let ownCloud work properly.
我使用的ownCloud / My ownCloud Version
ownCloud是一種類似Dropbox的開放原始碼網站系統,我們最近也嘗試在自己單位中架設ownCloud來提供雲端硬碟的服務。
以Turnkey Linux架設OpenVZ虛擬機器的ownCloud / Establish ownCloud from Turnkey Linux OpenVZ Container
ownCloud的系統基礎是由PHP與MySQL組成,但是對於已經具備雲端平台的我們來說,當然不會從頭開始架設,而是直接選擇Turnkey Linux的ownCloud OpenVZ虛擬機器來架設,ownCloud版本是4.90.8。
啟用ownCloud / Enable ownCloud
用Turnkey Linux架設虛擬機器很快,首先先把樣板上傳到Proxmox VE,開啟Console或用SSH登入到虛擬機器上,做一些密碼設定及取消Turnkey Linux自動更新的設定之後,就能夠用網頁直接連接了。
以下是啟用ownCloud之後遇到的問題與解法。
ownCloud掛載NFS / Mounting NFS for ownCloud
由於ownCloud運作於虛擬機器上,我不想讓單一虛擬機器擁有過大的檔案,造成備份及還原時的困擾。因此我決定將ownCloud儲存使用者資料的資料夾掛載到另外的NFS伺服器上。整個架構圖如上圖所示,但是細節部分需要注意的事情很多,以下一一敘述。
啟用OpenVZ虛擬機器掛載NFS的功能 / Enable OpenVZ Container Mount NFS Feature
Proxmox VE這種OpenVZ虛擬機器(container)要掛載NFS,必須在主機端(host)為虛擬機器開啟nfs:on的設定。細節請看我之前寫的介紹。
至於ownCloud擺放使用者資料的資料夾,Turnkey Linux預設的位置是在「/var/www/owncloud/data」。因此只要掛載這個資料夾即可。
掛載後無法啟用ownCloud的問題 / ownCloud Would Not Work After Mounting
接著開啟ownCloud的時候就會遇到上圖的錯誤,錯誤訊息如下:
Data directory (/var/www/owncloud/data) is readable for other users
Please change the permissions to 0770 so that the directory cannot be listed by other users.
安全性限制 / Security Limit
這是因為掛載NFS之後,data資料夾的權限會被改成777,而非預設的700。基於安全性限制,在data資料夾為777的權限之下,ownCloud將無法正常運作。
我們試著找了些方法,可是並沒辦法順利迴避資料夾權限檢查的問題。最後索性直接修改ownCloud的程式碼來略過權限檢查的問題。
修改util.php關閉資料夾權限檢查 / Modify util.php to Disable Permission Check
最後我們找到了ownCloud權限檢查的位置,這是在/var/www/owncloud/lib/util.php當中的一段敘述。我們將util.php關於資料夾權限檢查的部份註解掉之後,ownCloud就能夠順利運作了。
util.php已經上傳到GitHub,註解的行數介於241行~283行,請自行下載,替換原本ownCloud的/var/www/owncloud/lib/util.php吧。
小結:ownCloud的網頁與桌面免費,行動版要收費 / Conclusion: ownCloud Free for Web and Desktop, but Paid for Mobile
安裝ownCloud的過程中,除了這個NFS的問題之外,我們還遇到另一個伺服器位址需要加上連接埠才能正常使用的問題。但那個問題似乎是因為我們使用了反向代理伺服器(reverse proxy),導致同步用戶端不是正常連線到ownCloud,而只是連到反向代理伺服器,因此無法運行。
另外還有一個問題是在於同步工具上。ownCloud的桌面版同步工具提供了Windows (Windows XP, Vista, 7 and 8, 32/64 bit)、Mac (Mac OS X 10.6 or better, Intel 64 bit)、Linux (CentOS/RHEL, Fedora, openSUSE, Ubuntu, Debian,圖示比較華麗)。但是ownCloud行動版本的卻要付費,iOS的費用是最低的$0.99美金,Android的費用則是NT$30。
雖然也可以在手機上開啟網頁版本,但是似乎沒有做行動裝置的最佳化,所以看起來非常像桌面版本,不太容易使用。這個問題不知道有沒有替代方案呢?
(more...)
Comments