我需要从 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
。我该如何解决这个问题?