AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 5187
Accepted
LassePoulsen
LassePoulsen
Asked: 2010-10-05 11:55:49 +0800 CST2010-10-05 11:55:49 +0800 CST 2010-10-05 11:55:49 +0800 CST

为什么 dhclient 说:“SIOCSIFADDR:权限被拒绝”?

  • 772

我在 ubuntu-server (8.04) 上遇到了一个非常奇怪的错误,我不知道为什么 dhclient 不允许设置网络设置!我不是首先安装服务器的人,所以我对设置了解不多。该服务器仅用作防火墙/网关(自定义 iptables 脚本),它有三个网卡,一个用于 Internet,一个用于 LAN,一个用于 DMZ。现在 ISP 已将设置从静态 ip 更改为通过 dhcp 分配的“静态”ip,我无法真正使用它。

遗憾的是,我不能只静态设置 IP,因为 ISP 会在 dhcp 租约结束时关闭我的连接:o

这是我得到的错误:(然后它就挂在那里..)

root@fw:~# dhclient eth2
Internet Systems Consortium DHCP Client V3.0.6
Copyright 2004-2007 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/

SIOCSIFADDR: Permission denied
SIOCSIFFLAGS: Permission denied
SIOCSIFFLAGS: Permission denied
Listening on LPF/eth2/00:50:52:c1:a1:32
Sending on   LPF/eth2/00:50:52:c1:a1:32
Sending on   Socket/fallback
DHCPDISCOVER on eth2 to 255.255.255.255 port 67 interval 8
DHCPOFFER of 2.10.56.19 from 93.87.36.42
DHCPREQUEST of 2.10.56.19 on eth2 to 255.255.255.255 port 67
DHCPACK of 2.10.56.19 from 93.87.36.42
SIOCSIFADDR: Permission denied
SIOCSIFFLAGS: Permission denied
SIOCSIFNETMASK: Permission denied
SIOCSIFBRDADDR: Permission denied
SIOCSIFFLAGS: Permission denied
SIOCADDRT: Operation not permitted

现在我已经通过killall dhclient; dhclient eth2每小时运行一次然后为接口设置静态 IP 设置来修复它,这足以保持连接正常!但在我看来,这是一个非常丑陋的黑客攻击..

networking server 8.04 dhclient dhcp
  • 5 5 个回答
  • 29513 Views

5 个回答

  • Voted
  1. Best Answer
    Riccardo Murri
    2010-10-12T13:10:33+08:002010-10-12T13:10:33+08:00

    根据http://silenzio.dk/pi/dhc.strace的堆栈跟踪,第一个 SIOCSIFADDR: Permission denied错误发生在第 735 行,在执行过程 26092: 期间ifconfig eth2 inet 0 up。现在只能 root做ifconfig一些事情了,所以让我们跟踪 fork()/的链exec()并寻找 UID 的变化。事实证明:

    1. 进程 26092 是 26090 的子进程(第 689 行)
    2. 进程 26090 以 UID 101 和 GID 102 运行(第 355--358 行)
    3. 进程 26090 尝试将其 UID/GID 设置回 0,但失败(第 310 行)
    4. 进程 26090 是 26089 的子进程(第 286 行)
    5. 进程 26089 将其 UID:GID 切换为 101:102(第 282--283 行)

    因此,发生错误是因为正在执行的子进程没有必要的 root 权限。为什么会这样?来源中的 debian/changelog文件dhcp3-3.0.6.dfsg说:

    dhcp3 (3.0.1-2ubuntu4) breezy; urgency=low
    
      Derooted the DHCP client:
      * Added debian/patches/deroot-client.patch:
        - client/dhclient.c: After initialization, dro privileges to dhcp:dhcp and
          only keep CAP_NET_RAW and CAP_NET_BIND_SERVICE.
        - Add a setuid wrapper call-dhclient-script to call
          /etc/dhcp3/dhclient-script as root.
        - Install call-dhclient-script into /lib/dhcp3-client/.
    

    我的猜测是它call-dhclient-script已经丢失了它的 set-UID 位,因此没有按照它应该的 root 权限执行。(根据debian/dhcp3-client.postinst来源中的文件,它应该归root:dhcp和模式所有4754)

    • 5
  2. Kees Cook
    2010-10-12T09:44:47+08:002010-10-12T09:44:47+08:00

    当您运行 dhclient 时,您的“dmesg”输出会显示什么?

    如果您正在运行 Hardy,则 AppArmor 是默认安装的一部分。dhclient 配置文件可能已经失控了。检查“sudo aa-status”以查看那里发生了什么。

    此外,您的 /etc/network/interfaces 文件如何读取?也许您有 dhclient 不想使用的冲突地址、路由等?

    • 2
  3. txwikinger
    2010-10-09T08:40:34+08:002010-10-09T08:40:34+08:00

    如果该软件包丢失,我会尝试安装 nscd,如果它不适用于此,请安装 libnss-db。

    不确定这是否会解决您的问题,但是,这些是您的跟踪试图找到的东西并且它失败了。

    • 1
  4. jneves
    2010-10-10T19:16:14+08:002010-10-10T19:16:14+08:00

    请运行sudo dpkg --configure -a以确保它不会重复https://bugs.launchpad.net/ubuntu/+source/dhcp3/+bug/19740/comments/67中的情况

    • 1
  5. mniess
    2010-10-12T11:08:02+08:002010-10-12T11:08:02+08:00

    这实际上是 Ubuntu 8.04 中的一个错误。对于一些需要安装 nscd 的用例(例如,使用 openvpn 时),否则 dhclient 将无法工作。这在较新的 Ubuntu 版本中不会发生。

    • 1

相关问题

  • 如何从命令行刻录双层 dvd iso

  • 从 8.04 LTS 升级到 10.04 LTS 的体验?

  • 如果在服务器机器上运行 Ubuntu 桌面版,性能损失是多少?

  • 将桌面版剥离为服务器版的最简单方法是什么?

  • 如何与无头服务器进行图形交互?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何安装 .run 文件?

    • 7 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    如何获得 CPU 温度?

    • 21 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Marko Smith

    你如何重新启动Apache?

    • 13 个回答
  • Marko Smith

    如何卸载软件?

    • 11 个回答
  • Marko Smith

    如何删除 PPA?

    • 26 个回答
  • Martin Hope
    NES 如何启用或禁用服务? 2010-12-30 13:03:32 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    Olivier Lalonde 如何在结束 ssh 会话后保持进程运行? 2010-10-22 04:09:13 +0800 CST
  • Martin Hope
    David B 如何使用命令行将用户添加为新的 sudoer? 2010-10-16 04:02:45 +0800 CST
  • Martin Hope
    Hans 如何删除旧内核版本以清理启动菜单? 2010-08-21 19:37:01 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve