我在其中的服務器從文件夾移動處理的文件到另一個端部的瑞克,使用FileUtils.mv,像這樣:移動文件拒絕
FileUtils.mv('/path-to-upload-folder/'+filename, '/path-to-imported-folder/'+filename) if File.exist?('/path-to-upload-folder/'+filename)
如果我運行此命令在Rails服務器內(我有一個操作是rake任務的副本,只是爲了簡化控制器內部的調試),一切都很順利(可能是因爲我使用rvmsudo以root權限運行服務器)。 當從Rake任務運行時,我得到一個權限被拒絕的錯誤,這樣
Errno::EACCES: Permission denied @ sys_fail2 -
源文件夾被稱爲上傳和目標文件夾是文件夾導入。以下權限以及文件夾的用戶和組
drwxr-xr-x 2 malatini malatini 4096 lug 14 14:26 imported/
drwxr-xr-x 2 www-data www-data 135168 lug 14 14:26 uploads/
其中malatini是我當前的用戶。 我知道爲了從兩個文件夾中運行原始mv,我需要成爲sudo用戶,但爲什麼我可以在Rails服務器中運行相同的命令而沒有任何問題?
我也嘗試更改目標文件夾的權限和所有者/組,但沒有運氣。
閱讀here我想問題是用戶正在運行rake任務。如果我手動運行rake任務,或者如果它作爲cron作業運行,則會發生同樣的問題。
我下
Debian 3.16.7-ckt11-1 (2015-05-24) x86_64 GNU/Linux
任何建議運行?
編輯:
作爲@Nic Nilov建議我試圖改變源和目的地foleders的所有者和組,並且實際上我設法執行MV,並因此耙任務,改變兩者的所有者和組文件夾malatini
drwxr-xr-x 2 malatini malatini 4096 lug 14 14:26 imported/
drwxr-xr-x 2 malatini malatini 135168 lug 14 14:26 uploads/
,但以這種方式,阿帕奇(這是負責文件移動到文件夾上傳的)是不能夠寫入上傳的文件夾。沒有其他配置正在工作(不僅僅是上傳文件夾組,也不是777導入文件夾)。
感謝您的回覆。作爲特權用戶運行rake的解決方案不會是推薦的解決方案,因爲它是作爲cronjob運行的,所以我將被迫將我的sudo密碼以明文形式存儲在cron文件中。 我試過你建議的第二種解決方案,也將導入的文件夾的權限更改爲775,但仍然得到相同的權限拒絕錯誤...我將編輯我的問題,添加我正在使用的操作系統。 – sissy
查看我的答案更新。 –