我需要我的 PHP 代码以不同的用户身份使用 exec() 运行脚本,因此在我添加的 sudoers 文件中:www-data ALL=(csgo) NOPASSWD: WWW_COMMANDS
WWW_COMMANDS 是我需要运行的脚本的别名列表。虽然当我使用su -s /bin/bash www-data
php 登录并测试它是否通过 ssh 工作时这工作正常,但当我尝试在我的站点上实际发送命令并exec("sudo -u csgo sh /path/to/script.sh")
打印它告诉我的输出时sudo: no tty present and no askpass program specified
,脚本将不会运行。我也添加Defaults:www-data !requiretty
到我的 sudoers 文件中但没有效果。在我的页面上运行 exec() 时,我可以让它工作的唯一方法是设置www-data ALL=(csgo) NOPASSWD: ALL
,这显然不是一个很好的解决方案。任何人都知道为什么会这样/如何解决它。
月关宝盒