0

我正在尝试创建一个设置页面(为客户端),他们可以在其中查看当前的上行地址、更改 IP 地址等。我有一个 php 文件来查看 IP 地址

 <?php
  $res=shell_exec("ifconfig");
  echo $res;
 ?>

这段代码工作得很好,并显示了预期的结果。但是,更改服务器 IP 地址的代码无法正常工作。

 <?php
 shell_exec("ifconfig eth0 192.168.163.136");
 ?>

运行此代码后,当我使用 ipaddr 检查终端上的 ipaddress 时,我看不到 ipaddress 有任何变化。请指出我哪里出错了。我认为这是 apache 不是超级/root 用户的问题。如果是这种情况,我不知道如何让 apache 以 root 用户身份运行。

4

3 回答 3

2

您的 PHP 脚本没有足够的权限来更改接口地址。您可能想要编写一个 Shellscript,赋予它正确的权限(例如,将其所有者更改为 root,并设置 suid 位),然后从您的 PHP 脚本运行它。然而,我建议不要做这样的事情

于 2012-05-06T09:29:33.323 回答
1

IP 地址是在网络协议的网络层中配置的,而不是在PHP 运行的应用层中配置的。简单地说,PHP 无权访问它,也无法更改它们。

想象一下,如果可能的话,它可能会造成哪些漏洞。

于 2012-05-06T09:25:10.437 回答
0

/srv/http在 ifconfig 工作之前添加。它所需要的只是根拥有的位置。

于 2012-06-07T20:54:02.793 回答