运行 PHP shell_exec() 喜欢root用户
Run PHP shell_exec() like root user
我构建了一个 PHP 应用程序,我在其中为 Linux debian Jessie 创建了命令行功能。一切正常,但我需要能够使用一些命令,如 root 用户。
有没有办法使用 shell_exec() 或类似命令通过 PHP 像 root 用户一样访问?
这个命令行的想法是让有权访问该服务器的人可以通过互联网从任何地方或设备处理它。
这是控制台的图像:
通过 PHP 以 root 身份执行命令将使您自己容易受到各种恶意攻击。
查看 "sudo" 文档。
您应该能够将您需要的所有命令设置为 "sudo"可用脚本。编写功能有限的特定脚本比暴露底层特权命令要好得多。
如:
exec ('sudo getCurrentUser.sh')
首先,您需要将 PHP 正在使用的用户添加到 运行(大多数情况下是 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 并且设置了路径
编辑您的 sudoers 文件
sudo vi /etc/sudoers
放这条线
www-data ALL=(ALL) NOPASSWD: ALL
www-data 是 linux 中的 php 默认用户(必要时替换)
使用
$output = shell_exec('sudo XXXX');
我构建了一个 PHP 应用程序,我在其中为 Linux debian Jessie 创建了命令行功能。一切正常,但我需要能够使用一些命令,如 root 用户。
有没有办法使用 shell_exec() 或类似命令通过 PHP 像 root 用户一样访问?
这个命令行的想法是让有权访问该服务器的人可以通过互联网从任何地方或设备处理它。
这是控制台的图像:
通过 PHP 以 root 身份执行命令将使您自己容易受到各种恶意攻击。
查看 "sudo" 文档。
您应该能够将您需要的所有命令设置为 "sudo"可用脚本。编写功能有限的特定脚本比暴露底层特权命令要好得多。
如:
exec ('sudo getCurrentUser.sh')
首先,您需要将 PHP 正在使用的用户添加到 运行(大多数情况下是 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 并且设置了路径
编辑您的 sudoers 文件
sudo vi /etc/sudoers
放这条线
www-data ALL=(ALL) NOPASSWD: ALL
www-data 是 linux 中的 php 默认用户(必要时替换)
使用
$output = shell_exec('sudo XXXX');