如何:sudo -u <username> 在 sudoer 中?

多米尼克

我需要從 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我該如何解決這個問題?

那個傢伙

使用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 ..

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章