Ejecute ifconfig sin sudo

Ejecute ifconfig sin sudo

Tengo un Linux integrado que se ejecuta en una plataforma imx6. Este es un Linux integrado de escala libre. El problema es que no hay sudo disponible para este linux, pero necesito que un usuario active y desactive el dispositivo wlan0. Intenté agregar al usuario a la raíz del grupo sin éxito. También intenté agregar el comando completo al archivo /etc/busybox.conf, pero esto tampoco tuvo ningún efecto.

¿Cómo puedo ejecutar este comando como usuario sin tener sudo?

user@touch:~$ /sbin/ifconfig eth0 down
SIOCSIFFLAGS: Permission denied

Respuesta1

Si se confiara en cualquier usuario no root para hacerlo, simplemente puede agregar un indicador setuid en ifconfig exec:

chmod 4755 /sbin/ifconfig

Otorgará privilegios de root para la ejecución de este ejecutable a cualquier persona. Por supuesto, necesitas tener acceso de root para ejecutar chmod.

Respuesta2

No es necesario utilizarlo sudopara ejecutar el ifconfigcomando, solo asegúrese de que /sbinesté en su RUTA.

como usuario sin privilegios ejecute:

export PATH=$PATH:/sbin
ifconfig

Respuesta3

  1. Para nuevos usuarios de Linux; el paquete sudole da a un usuario sin privilegios una cantidad preestablecida de minutos para hacer cosas en el sistema que solo el administrador del sistema ('root' == 'uid=0') puede hacer.

  2. El programa ifconfigtiene muchos problemas de seguridad asociados para los sistemas operativos Linux que se encuentran en servidores públicos. Para servidores domésticos y de escritorio que tienen conexiones KVM, no requieren acceso SSH y no desean conectividad a Internet las 24 horas, los 7 días de la semana, este programa tiene requisitos de seguridad más bajos.

  3. ifconfigestá protegido por otro programa llamado netdevice. Este programa proporciona acceso de bajo nivel a dispositivos de red Linux. Ver man netdevice. El error que se arrojóSIOCSIFFLAGS: Permiso denegadoEsto se debe a que el programa ifconfigestá marcado como privilegiado y requiere un ID de usuario efectivo de 0 ('root' <==> 'uid=0') o la CAP_NET_ADMINcapacidad. Si este no es el caso, EPERMserá devuelto.

  4. Para saber qué CAP_NET_ADMINes tenemos que leer.capacidades(7) — página del manual de Linux. La información importante aquí es "CAP_NET_ADMIN: realizar varias operaciones relacionadas con la red, como la configuración de la interfaz". Para saber qué EPERMes tenemos que leer man setuid. El EPERMerror se produce cuando el usuario no tiene privilegios (Linux: no tiene la CAP_SETUIDcapacidad) Y el uid no coincide con el UID real o el conjunto de ID de usuario guardado del proceso de llamada.

  5. No es posible simplemente agregar su "nombre de usuario" al grupo "raíz". Ejemplo para distribuciones de Ubuntu: sudo adduser username rootno le dará el UID necesario de 0 para pasar todos los controles de seguridad que netdeviceexige. Si visudoestá disponible en el sistema se puede ver que la entrada Defaults secure_path=""no incluye una ruta al programa netdevice.h. Por lo tanto, es poco probable que modificar los permisos sudo (usando visudo) para el ifconfigprograma resulte en eludir el control de seguridad proporcionado por netdevice.

Suponiendo que no esté ejecutando un servidor público, la respuesta proporcionada por @tonioc es la forma más fácil de activar y desactivar las interfaces de una distribución de Linux (como Ubuntu, que habilita automáticamente todas las interfaces Ethernet después de reiniciar) sin utilizar sudoprivilegios. El sudo chmod 4755 /sbin/ifconfigcomando es una forma sencilla de modificar su sistema de modo que un script de inicio como el que ifconfig eth0 downpueda desactivar una interfaz (sin ingresar una contraseña). Para computadoras de escritorio/servidores que tienen redes de intranet e Internet conectadas (NIC múltiples), es fundamental para la seguridad que las redes de Internet permanezcan apagadas cuando no sean necesarias.

información relacionada