PHP Sudo 权限仅适用于使用 exec() 时的“ALL”命令

我需要我的 PHP 代码以不同的用户身份使用 exec() 运行脚本,因此在我添加的 sudoers 文件中:www-data ALL=(csgo) NOPASSWD: WWW_COMMANDSWWW_COMMANDS 是我需要运行的脚本的别名列表。虽然当我使用su -s /bin/bash www-dataphp 登录并测试它是否通过 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,这显然不是一个很好的解决方案。任何人都知道为什么会这样/如何解决它。



眼眸繁星
浏览 80回答 1
1回答

月关宝盒

或许,在命令修复问题之前删除了 sh 。
打开App,查看更多内容
随时随地看视频慕课网APP