GNU/Linux >> Tutoriales Linux >  >> Linux

¿Es posible ejecutar 'unshare -n [programa]' como un usuario sin privilegios?

Quiero ejecutar un programa sin acceso a Internet, por ejemplo,

unshare -n ping 127.0.0.1 .

Como usuario sin privilegios, devuelve Operation not permitted , como usuario privilegiado, devuelve el Network is unreachable deseado .

¿Hay alguna forma de hacer que funcione también para el usuario sin privilegios?

Respuesta aceptada:

En versiones posteriores de util-linux, unshare obtuvo el --map-root-user opción. Citando de unshare(1) versión 2.26.2:

-r, –mapa-usuario-raíz

Ejecute el programa solo después de que los ID de usuario y grupo efectivos actuales se hayan asignado al UID y GID de superusuario en el espacio de nombres de usuario recién creado. Esto hace posible obtener convenientemente las capacidades necesarias para administrar varios aspectos de los espacios de nombres recién creados (como configurar interfaces en el espacio de nombres de red o montar sistemas de archivos en el espacio de nombres de montaje) incluso cuando se ejecuta sin privilegios. Como característica de mera conveniencia, no admite casos de uso más sofisticados, como el mapeo de múltiples rangos de UID y GID. Esta opción implica –setgroups=deny.

Entonces, en los sistemas más nuevos, puede ejecutar:

unshare -n -r ping 127.0.0.1

Y esto producirá el esperado Network is unreachable .

En los sistemas Debian, aún puede obtener un Operation not permitted error, primero debe habilitar los espacios de nombres de usuario sin privilegios ejecutando:

sudo sysctl -w kernel.unprivileged_userns_clone=1

Nota:para una gama más amplia de casos de uso, el bwrap --unshare-net más sofisticado puede ser considerado, como se describe brevemente en una respuesta diferente.


Linux
  1. ¿Es una buena práctica ejecutar un daemon con una cuenta de usuario no root?

  2. Ejecute Docker como usuario no root

  3. ¿Cómo acceder (si es posible) al espacio del kernel desde el espacio del usuario?

  4. ¿Cómo ejecutar un comando como un usuario específico en un script de inicio?

  5. ¿Cómo agregar usuarios al contenedor Docker?

¿Es posible ejecutar LINQPad con Mono (Mac)?

¿Ejecutar el comando de shell en jenkins como usuario root?

Ejecute parte de un script bash como un usuario diferente

Upstart:ejecute el servicio como usuario sin privilegios y el script de preinicio como root

¿Es posible ejecutar automáticamente el apio al inicio?

ejecute rsync como root pero mantenga la propiedad del usuario