尝试使用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运行包含该行的包装脚本时 - 没有任何反应。我甚至无法识别什么不起作用,因为没有错误被抛出。
非常感谢任何帮助。
答案 0 :(得分:1)
感谢@fejese和@triplee,我终于明白了。我不得不在sudoers文件中使用requiretty
参数,当时它被更改为...
#Defaults requiretty
#Defaults !visiblepw
......一切都进行了!