2015-05-12 229 views
0

我想知道如何爲我的文件/log/production.log設置正確的權限?每個人都在說只使用chmodchown,但沒有人解釋我應該在這些命令後應該怎麼做。我是初學者,如果你能解釋我會很感激。如何設置Linux文件的權限?

在我的特殊示例中,我在生產服務器上有Rails應用程序,我需要在/var/www/my_app/log/目錄中設置對production.log文件的許可權。

以下是文件是從我問:

默認情況下,乘客的Phusion運行Rails應用作爲 config.ru的所有者。因此,只有該用戶具有對日誌文件的寫入權限 才能寫入日誌文件。請相應地chmod或chown你的日誌文件 。

希望你能幫助。謝謝。

+0

你如何部署你的應用程序?你的'config.ru'文件的所有者是什麼? 'ls -l/var/www/my_app/config.ru'。 ? – Doon

+0

我在DigitalCloud液滴上使用Passenger + Nginx。 '-rw -r - r-- 1 root root 153' – DanielsV

+0

好的我會考慮改變這個,因爲以root身份運行可能是危險的。 (如果妥協,他們已經運行了服務器..) – Doon

回答

1

嘗試chmod 0660 production.log並看看this chmod的說明/圖表。

+0

這實際上是一個非常糟糕的主意,尤其是在共享服務器上,因爲當時世界已經可以通過RW訪問您的日誌。 – Doon

+0

0660怎麼樣? – WeNDoR

+0

取決於很多因素,應用程序用戶擁有的目錄日誌,共享服務器上的模式700。所以其他用戶不能寫入它。只有當應用程序用戶與文件所有者相同時,0660纔會起作用。 – Doon

0

我會爲你的應用程序創建一個部署用戶,比如myapp(這個名字並不特別重要)。使用此用戶來部署/管理您的應用程序。假設用戶名爲myapp

chown -R myapp:myapp /var/www/my_app 

然後重新啓動nginx/passenger。這將導致乘客以myapp用戶身份運行,並允許其將日誌寫入日誌目錄下。 (也請確保你沒有/ var/www作爲docroot,可以在乘客以外訪問,因爲它可能會導致信息泄漏)

如果服務器不共享,另一個選項是可以運行www用戶。所以

chown -R www:www /var/www/my_app 

應該允許進程寫入您的日誌。

+0

第一:如何知道/ var/www是否爲docroot?如果它是如何解決它? Secound:我如何註冊新用戶(我運行你的命令,但現在我有權限拒絕錯誤。 – DanielsV

+0

adduser myapp,通常是你如何添加一個用戶,但我不太瞭解數字海洋的飛沫,或者他們運行的是什麼等等。對不起 – Doon

0

chmod允許更改文件或目錄的權限。存在三個基本權限(讀取,寫入,執行),用於三個不同的組(所有者,組,其他)。

chown允許更改誰是文件或目錄的所有者。我建議你使用chmod 640。在這裏查看chmod的語法,在此定義production.log的所有者(通常是root)可以讀取和寫入此文件。如果你願意,你可以給所有者的同一組的所有用戶提供讀訪問權限。但是,您不應該爲其他人提供權限,即使在生產環境中也是如此。