ubuntu server – ¿Por qué dhclient dice: "SIOCSIFADDR: Permiso denegado"?

Pregunta:

Me he encontrado con un error muy extraño en ubuntu-server (8.04), ¡no tengo idea de por qué dhclient no puede establecer la configuración de red! No soy yo quien instaló el servidor en primer lugar, así que no sé mucho sobre la configuración. El servidor solo se usa como firewall / puerta de enlace (script iptables personalizado) tiene tres NIC, uno para Internet, uno para LAN y otro para DMZ. Ahora el ISP ha cambiado la configuración de IP estática a IP "estática" asignada a través de DHCP, y realmente no puedo usarla.

Lamentablemente, no puedo configurar la IP de forma estática ya que el ISP cierra mi conexión cuando finaliza el contrato de arrendamiento de dhcp: o

Este es el error que obtengo: (y luego simplemente se cuelga allí ..)

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

por ahora lo he solucionado ejecutando killall dhclient; dhclient eth2 cada hora y luego establecer la configuración de IP estática para la interfaz, ¡esto es suficiente para mantener la conexión activa! pero es un truco bastante feo en mi opinión ..

Respuesta:

Según el seguimiento de la pila en http://silenzio.dk/pi/dhc.strace, se SIOCSIFADDR: Permission denied el primer SIOCSIFADDR: Permission denied en la línea 735, durante la ejecución del proceso 26092: ifconfig eth2 inet 0 up . Ahora sólo root puede ifconfig algo, así que vamos a dejar rastro de la cadena de fork() / exec() y buscar cambios UID. Resulta que:

  1. el proceso 26092 es hijo de 26090 (línea 689)
  2. el proceso 26090 se ejecuta con UID 101 y GID 102 (líneas 355–358)
  3. El proceso 26090 intenta volver a establecer su UID / GID en 0, pero falla (línea 310)
  4. el proceso 26090 es hijo de 26089 (línea 286)
  5. el proceso 26089 cambió su UID: GID a 101: 102 (líneas 282-283)

Entonces, los errores ocurren porque el proceso hijo en ejecución no tiene los privilegios de root necesarios. ¿Por qué pasó esto? El archivo debian/changelog en las fuentes dhcp3-3.0.6.dfsg dice:

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/.

Supongo que call-dhclient-script ha perdido su bit set-UID y, por lo tanto, no se está ejecutando con privilegios de root como debería. (De acuerdo con el archivo debian/dhcp3-client.postinst en las fuentes, debería ser propiedad de root:dhcp y modo 4754 )

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım