我正在运行CentOS 6,因为httpd是以用户'apache'执行的。出于安全原因,我想使用sudo作为用户'aq':
通过exec执行<?php exec("/usr/bin/sudo -u aq somescript.sh",$output,$return_val);?>
使用visudo,我添加了以下行:
apache ALL = (aq) NOPASSWD: ALL
此外我暂时将apache作为登录shell(/ bin / bash),以便能够测试
/usr/bin/sudo -u aq somescript.sh
直接起作用。
php exec失败,因为如果调用sudo,$ return_val会传递'1'。
答案 0 :(得分:2)
从/ etc / sudoers注释掉这一行
默认值requiretty
我以很少的方式测试了你的案例,这个让我成功。