如題,使用php與sqlite3建一個小型應用,使用nginx作為反向 Proxy伺服器,spawn-fcgi作為FCGI服務,資料庫和php及靜態檔案不在同一個目錄下。
現在Nginx和spawn-fcgi都使用Nobody使用者工作,如果資料庫目錄不能讀/寫的話php會提示can not open the database……(大概是這樣的錯誤),所以必須把資料庫目錄的許可權設為777,問題是這樣做真的沒問題嗎?
網上查到的方法都是把許可權改成777,但是我看我的rails應用裡面的db目錄的許可權是775,資料庫檔案的許可權就更嚴苛了,好像是664……網上查了一下rails的passenger(我使用passenger部署的)是以應用路徑的所有者為使用者工作的,那是不是我也應該使用php應用檔案的建立者來執行fcgi服務?
假如這樣不安全的話能提出不安全的原因就更好了。
回複內容:
如題,使用php與sqlite3建一個小型應用,使用nginx作為反向 Proxy伺服器,spawn-fcgi作為FCGI服務,資料庫和php及靜態檔案不在同一個目錄下。
現在Nginx和spawn-fcgi都使用Nobody使用者工作,如果資料庫目錄不能讀/寫的話php會提示can not open the database……(大概是這樣的錯誤),所以必須把資料庫目錄的許可權設為777,問題是這樣做真的沒問題嗎?
網上查到的方法都是把許可權改成777,但是我看我的rails應用裡面的db目錄的許可權是775,資料庫檔案的許可權就更嚴苛了,好像是664……網上查了一下rails的passenger(我使用passenger部署的)是以應用路徑的所有者為使用者工作的,那是不是我也應該使用php應用檔案的建立者來執行fcgi服務?
假如這樣不安全的話能提出不安全的原因就更好了。
把 sqlite 的資料庫檔案設定成 Nobody 所有即可。許可權為 644 甚至 600 就行。
# chown Nobody:Nobody xxx.sqlite# chmod 600 xxx.sqlite