如何在Nginx上以PHP的不同用户身份运行shell脚本?

时间:2014-10-21 08:11:00

标签: php bash shell nginx

尝试使用POST请求触发shell脚本(由nginx处理)。到目前为止没有成功。

我有什么:

exec('whoami'); // nginx

nginx:x:220:498:Nginx web server:/var/lib/nginx:/sbin/nologin

正如我们所看到的,nginx用户没有shell。这可能是个问题吗?接着,

nginx ALL=(user) NOPASSWD: /path/to/script.sh

如果我将nginx更改为真实用户,我可以在没有密码提示的情况下运行sudo -u user /path/to/script.sh,但出于某种原因,如果我运行su -s /bin/bash -c /path/to/script.sh user,我仍然会要求输入密码。也许,后来的invokation更适合nginx用户,因为他有nologin shell。

因此,每当我运行exec('sudo -u user /path/to/script.sh');或通过PHP运行包含该行的包装脚本时 - 没有任何反应。我甚至无法识别什么不起作用,因为没有错误被抛出。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

感谢@fejese和@triplee,我终于明白了。我不得不在sudoers文件中使用requiretty参数,当时它被更改为...

#Defaults   requiretty
#Defaults   !visiblepw

......一切都进行了!