0

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

4

1 回答 1

1

使用sudoallow www-datato run commands as没有任何意义www-data,但您可以轻松地这样做:

www-data ALL=(www-data) NOPASSWD: /usr/bin/python3 /var/www/html/script.py

您的方法的问题是您尝试将命令添加sudo -u www-data ..到 sudoers,这对应于双 sudosudo sudo -u www-data ..

于 2021-11-19T19:42:17.953 回答