通过CGI执行需要root访问权限的脚本

时间:2016-07-29 17:00:26

标签: python apache cgi root sudoers

我有一个脚本 script.py ,我可以通过导航到 mydomain.com/runscript 来通过CGI执行。

然而,该脚本对 echo" mysqldump ..."进行子进程调用。 | sudo -i sudo python 使用 os.system(COMMAND)。当我尝试通过weblink运行脚本时,我在 /var/log/apache2/error.log 中收到此错误:

  

[Fri Jul 29 16:52:42.515223 2016] [cgi:error] [pid 3013] [client ##。###。##。##:#####] AH01215:sudo:no tty目前并没有指定askpass程序

这是因为CGI以用户 www-data 运行,该用户没有sudo权限。

我已尝试将此添加到 sudoers 文件中:

%www-data    ALL = (root) NOPASSWD: /var/www/html/scripts/script.py

然而错误仍然存​​在。为什么子进程调用没有接收root访问权限,我怎样才能将它们提供给它们而只是它们呢?谢谢!

1 个答案:

答案 0 :(得分:0)

您可以通过管道将密码传递给sudo命令:

echo <your password> | sudo -S <your command>