如何以 root 身份运行 PHP exec() ?

2022-08-30 12:53:09

我正在尝试在PHP中构建防火墙管理器,但是当我执行时,结果数组是空的。<?php exec('iptables -L'); ?>

我已经尝试过,,响应是(Apache正在使用的用户)。我该怎么做才能以root身份执行exec函数?(最好不更改 Apache 用户。<?php echo exec('whoami'); ?>www-data


答案 1

别这样!您将对各种恶意黑客行为敞开大门。

查看“sudo”文档。

您应该能够将所需的所有命令设置为“sudo”脚本。编写具有有限功能的特定脚本比公开底层特权命令要好得多。

如:

exec ('sudo getIpTables.ksh')

答案 2

我知道这是一个老问题

将用户 php 运行添加到 sudo 组(如果尚未分配)

使用 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,并设置了路径

检查 sudo 的手册页


推荐