我需要从php文件(user:www data(中启动一个具有sudo权限的命令,显式地作为用户www-data
:
<?php
$command = 'sudo -u www-data /usr/bin/python3 /var/www/html/script.py';
shell_exec($command);
?>
为了能够对www-data
使用sudo,我想把命令放在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.
似乎需要CCD_ 4。我该如何解决这个问题?
使用sudo
来允许www-data
作为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 ..