2014-05-12 57 views
0

我正在運行必須在目錄位置創建視頻的python CGI腳本。寫權限甚至在777之後被拒絕

平臺:Ubuntu 14.04 64-bit

Python版本:2.7.6

劇本正在由用戶運行:www-data

我有一個目錄mydir。 對mydir的權限是777(遞歸)。該目錄歸用戶所有:www-data和組www-data。 Python的腳本創建在mydir子目錄一個新的目錄,但提出了一個例外:

IOError: [Errno 13] Permission denied: 'path/to/file.ext' 

我認爲,這是創建新的目錄,竟然有以下狀態:

drwxrwxr-x 3 me me 4096 <Timestamp> newdir 

當我早些時候檢查過程正在運行www-data但現在該文件夾是由我登錄到當前用戶擁有。 (這裏用'me'表示)。 此外,除了檢查其他權限r-x之外,還設置了所有權限。沒有寫權限。這證明了所提出的例外。

我試着做一個os.umask(0000)以及os.chmod('mydir',0777)。第一個沒有任何效果。第二個,我沒有權限。有人可以請幫忙嗎?這個問題是真正令人不快的。我在這裏錯過了什麼?

注意:蟒蛇文件被觸發如下:A cronjob調用PHP文件,其中一些處理之後,然後發送POST請求Python腳本。

編輯:請讓我知道@MattDMo的解決方案是否有效(我不會測試它,因爲我改變了我的方法)。如果有人發現它正常工作,我會將其標記爲已接受。

+0

我已經搜索了四周。但沒有找到解決方案 – activatedgeek

+0

'cron'作業是否由'www-data'運行? – MattDMo

+0

您是否在cron作業中使用了curl或php,可以更改運行整個作業集的用戶。 – thebwt

回答

1

它看起來像所有你需要做的是編輯crontab並添加www-data作爲用戶:

*/5 * * * * www-data php call_python.php 

這也可以通過命令行,用-u選項運行crontab完成的,它指定了crontab要更改的用戶的名稱:

sudo crontab -u www-data -e 
+0

謝謝!我實際上改變了我的方法。我切斷了我的系統中的'CGI'部分。我做了一些重構。現在我直接調用python腳本,將'PHP'操作移植到'Python'本身。 – activatedgeek

+0

我不會將以上答案標記爲已接受,因爲我沒有對其進行測試。如果有人發現這個工作,請讓我知道。 – activatedgeek