我需要從 php 檔案(用戶:www-data)中啟動一個具有 sudo 權限的命令,明確作為用戶www-data
:
<?php
$command = 'sudo -u www-data /usr/bin/python3 /var/www/html/script.py';
shell_exec($command);
?>
能夠使用 sudo 因為www-data
我想將命令放在 sudoers ( sudo visudo
) 中,例如:
www-data ALL=NOPASSWD: sudo -u www-data /usr/bin/python3 /var/www/html/script.py
或者
www-data ALL=NOPASSWD: -u www-data /usr/bin/python3 /var/www/html/script.py
但語法錯誤(來自 visudo 的錯誤訊息)。以下是使用 sudoers(正確的語法)
www-data ALL=NOPASSWD: /usr/bin/python3 /var/www/html/script.py
但不適用于我的腳本(日志檔案中的 apache 錯誤):
Sorry, user www-data is not allowed to execute '/usr/bin/python3 /var/www/html/script.py' as www-data on raspberrypi.
看來它需要sudo -u www-data
。我該如何解決這個問題?
uj5u.com熱心網友回復:
使用sudo
允許www-data
將命令作為 運行是沒有意義的www-data
,但您可以輕松地這樣做:
www-data ALL=(www-data) NOPASSWD: /usr/bin/python3 /var/www/html/script.py
您的方法的問題在于您嘗試將命令添加sudo -u www-data ..
到 sudoers,這對應于 double-sudosudo sudo -u www-data ..
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/361064.html
上一篇:是否可以通過管道實作命令替換?