2015-08-20 52 views
2

我無法從Exec的腓Exec的外部python腳本 - 被拒絕的權限

$exec = exec($command, $output, $return); 

運行命令行腳本我試圖中繼,了shell_exec,系統,但顯然這不是問題。

sudo chown -R www-data:www-data /root/path/nonce.py 
sudo chmo 775 /path/nonce.py 
sudo chmo 777 /path/nonce.py 
sudo chmo 755 /path/nonce.py 

沒有幫助

exec("python -V 2>&1"); 

工作

/usr/bin/python /root/path/nonce.py 

Array ([0] => /usr/bin/python: can't open file '/root/path/nonce.py': [Errno 13] Permission denied) 

dosent

上nginx的和PHP5-FPM

運行

回答

1

您需要考慮Python腳本路徑上每個目錄的權限。這意味着:

/root 
/root/path 
/root/path/nonce.py 

根帳戶的權限自然受到限制。如果你看到一個root用戶的主目錄:

$ ls -ld /root 
dr-xr-x---. 9 root root 4096 Aug 20 23:50 root 

你會看到只有root用戶和組root內的用戶,可以讀取或列出/root內容。

把你的腳本放在root的家中是一個壞主意。假定您的腳本是CGI腳本,則有更合適的位置,例如/var/www/cgi-bin。在我的系統上:

$ ls -ld /var/www 
drwxr-xr-x. 4 root root 4096 Jul 17 17:22 /var/www 
$ ls -ld /var/www/cgi-bin 
drwxr-xr-x. 2 root root 4096 Jul 17 17:22 /var/www/cgi-bin/ 

它可以被任何用戶讀取和列出。您應該將腳本安裝在適合nginx的目錄中。

0

路徑上的一個目錄中可能缺少r permisison爲相關用戶 - 最有可能/root

你能移動python腳本到DIR是世界可讀?