2014-10-09 38 views
2

我認爲我誤解了OpenShift PHP應用程序中有關文件權限的基本知識。他們如何實際工作?文件權限在OpenShift上如何工作?

我在OSX上開發並使用SourceTree推送更改。當我通過SFTP程序(Cyber​​duck)登錄應用程序時,index.php文件顯示其權限設置爲600,但訪問者可以在瀏覽器中查看它。

這令我感到驚訝,因爲我認爲該文件需要644的權限才能瀏覽(如Apache網絡服務器)。

在OpenShift上,好像文件權限600,640和644都是等效的。這是正確的,還是我做錯了什麼?

相關聯: 我的OpenShift應用程序有一個cgi-bin文件夾,其中包含一個只應從PHP文件執行(調用)的cgi程序。換句話說,任何PHP腳本都應該能夠調用這個cgi程序,但是試圖直接瀏覽到cgi-bin文件夾的訪問者不應該這樣做。我設置了cgi-bin文件夾和cgi程序文件權限爲700(所以只有'所有者'具有讀/寫/執行設置,並且'組'和'其他'沒有權限)。然而,訪問者仍然可以直接瀏覽程序URL並執行它(例如www.example.com/cgi-bin/program.cgi) - 就好像權限是777.如何解決這個問題?

回答

3

我覺得你已經習慣了一個系統,其中一個用戶擁有正在提供的文件,並且web服務器作爲另一個用戶運行,但是由於文件所有者(你的用戶帳號就是那個很長的散列)也是所有者在OpenShift上運行Web服務器的過程中,它使用的是權限的「6」部分,所以您添加的其他兩位數字沒有什麼不同。如果有一個腳本不需要Web訪問,但希望PHP能夠執行,那麼您應該將它放在包含php文件的Web目錄之外。最簡單的方法是在您的倉庫中創建一個「php」文件夾,並將您的文件放在需要可通過網頁訪問的文件中。這將改變你的documentRoot到那個php目錄,並且你可以把你的腳本放在高於它的一個級別,以便用戶不能用web請求執行它。

+0

完美。這是一個非常明確的解釋和解決方案。謝謝。 – Cascade 2014-10-10 15:57:04