
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 sudo
para ejecutar el ifconfig
comando, solo asegúrese de que /sbin
esté en su RUTA.
como usuario sin privilegios ejecute:
export PATH=$PATH:/sbin
ifconfig
Respuesta3
Para nuevos usuarios de Linux; el paquete
sudo
le 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.El programa
ifconfig
tiene 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.ifconfig
está protegido por otro programa llamadonetdevice
. Este programa proporciona acceso de bajo nivel a dispositivos de red Linux. Verman netdevice
. El error que se arrojóSIOCSIFFLAGS: Permiso denegadoEsto se debe a que el programaifconfig
está marcado como privilegiado y requiere un ID de usuario efectivo de 0 ('root' <==> 'uid=0') o laCAP_NET_ADMIN
capacidad. Si este no es el caso,EPERM
será devuelto.Para saber qué
CAP_NET_ADMIN
es 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éEPERM
es tenemos que leerman setuid
. ElEPERM
error se produce cuando el usuario no tiene privilegios (Linux: no tiene laCAP_SETUID
capacidad) Y el uid no coincide con el UID real o el conjunto de ID de usuario guardado del proceso de llamada.No es posible simplemente agregar su "nombre de usuario" al grupo "raíz". Ejemplo para distribuciones de Ubuntu:
sudo adduser username root
no le dará el UID necesario de 0 para pasar todos los controles de seguridad quenetdevice
exige. Sivisudo
está disponible en el sistema se puede ver que la entradaDefaults secure_path=""
no incluye una ruta al programanetdevice.h
. Por lo tanto, es poco probable que modificar los permisos sudo (usandovisudo
) para elifconfig
programa resulte en eludir el control de seguridad proporcionado pornetdevice
.
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 sudo
privilegios. El sudo chmod 4755 /sbin/ifconfig
comando es una forma sencilla de modificar su sistema de modo que un script de inicio como el que ifconfig eth0 down
pueda 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.