我构建了一个PHP应用程序,我在其中为Linux debian Jessie创建命令行功能。所有工作都有效,但我需要能够使用像root用户这样的命令。
有没有办法使用shell_exec()或类似命令通过PHP访问root用户?
此命令行的想法是有权访问该服务器的人可以通过互联网从任何地方或设备处理它。
这是控制台的图像:
答案 0 :(得分:3)
通过PHP以root身份执行命令会让你对各种恶意hackery持开放态度。
查看“sudo”文档。
您应该能够将所需的所有命令设置为“sudo”脚本。编写具有有限功能的特定脚本比公开底层特权命令要好得多。
如:
exec ('sudo getCurrentUser.sh')
首先,您需要将用于运行的用户(大部分时间为www-data
)添加到sudo组(如果尚未分配)。
然后,在你的php文件中:
使用sudo -S,因此您可以通过echo
传递密码$exec = "echo your_passwd | /usr/bin/sudo -S your command";
exec($exec,$out,$rcode);
如果您遇到路径问题 - 请使用
"bash -lc 'echo your_passwd | /usr/bin/sudo -S your command'"
所以你得到一个新的bash,就像登录shell一样,路径设置
答案 1 :(得分:0)
编辑您的sudoers文件
sudo vi /etc/sudoers
放入此行
www-data ALL=(ALL) NOPASSWD: ALL
www-data是linux中php的默认用户(如有必要,请替换)
使用
$output = shell_exec('sudo XXXX');