【发布时间】:2016-12-04 11:26:02
【问题描述】:
我有一个脚本 script.py,我可以通过导航到 mydomain.com/runscript 来通过 CGI 执行它。
然而,该脚本对 echo "mysqldump ..." | 进行子进程调用。 sudo -i 和 sudo python 使用 os.system(COMMAND)。当我尝试通过网络链接运行脚本时,我在 /var/log/apache2/error.log 中收到此错误:
[2016 年 7 月 29 日星期五 16:52:42.515223] [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 访问权限,我怎样才能将其提供给他们并且只提供给他们?谢谢!
【问题讨论】:
标签: python apache cgi root sudoers