【问题标题】:Changing ip address of apache server using php使用php更改apache服务器的IP地址
【发布时间】:2012-05-15 05:11:50
【问题描述】:

我正在尝试创建一个设置页面(为客户端),他们可以在其中查看当前的 up 地址、更改 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 用户身份运行。

【问题讨论】:

标签: php linux apache ip


【解决方案1】:

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

【讨论】:

  • 好的,你能给我更多关于如何设置 suid 位的细节吗?有链接吗?谢谢
  • 当然。检查this blog post 是否有帮助。还请务必阅读作者提供的第一个链接 (Why suid shell scripts are a very bad idea)。另一种方法是将 sudo 权限授予运行您的脚本的用户,这甚至是一个更糟糕的想法 - 它可能会造成很大的损害!
【解决方案2】:

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

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

【讨论】:

  • 在服务器上运行的任何代码都可以更改服务器上的 IP 地址,前提是它具有足够的权限。通常 PHP / Apache 服务器没有这些,但可以提供给它们(尽管从安全角度来看并不太明智)。但是,更改 IP 地址很可能会中断与丢弃 IP 的当前 HTTP 连接。
  • 好的,我明白这不是一个明智之举,但我仍然想知道如何获得 apache 运行该特定脚本的权利
  • @apurvnerlekar,你没有明白这一点,如果你能以某种方式更改 IP,你将不会做任何事情,因为活动连接已经断开。
  • @apurvnerlekar,如果您坚持这样做,似乎有先前的问题询问了一个可行的解决方案。检查here
  • 我认为我没有说错什么。为什么投反对票?
【解决方案3】:

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

【讨论】:

    猜你喜欢
    • 2018-11-25
    • 2015-08-09
    • 2015-10-17
    • 2018-10-06
    • 2011-06-09
    • 2011-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多