GNU/Linux >> Linux Esercitazione >  >> Linux

È possibile eseguire "unshare -n [programma]" come utente non privilegiato?

Voglio eseguire un programma senza alcun accesso a Internet, ad es.

unshare -n ping 127.0.0.1 .

In quanto utente non privilegiato, restituisce Operation not permitted , come utente privilegiato, restituisce il Network is unreachable desiderato .

C'è un modo per farlo funzionare anche per l'utente non privilegiato?

Risposta accettata:

Nelle versioni successive di util-linux, unshare ottenuto il --map-root-user opzione. Citando da unshare(1) versione 2.26.2:

-r, –map-root-user

Eseguire il programma solo dopo che l'utente effettivo corrente e gli ID di gruppo sono stati mappati all'UID e al GID del superutente nello spazio dei nomi utente appena creato. Ciò rende possibile acquisire comodamente le capacità necessarie per gestire vari aspetti degli spazi dei nomi appena creati (come la configurazione delle interfacce nello spazio dei nomi di rete o il montaggio di filesystem nello spazio dei nomi di montaggio) anche quando vengono eseguiti senza privilegi. Come semplice funzionalità di praticità, non supporta casi d'uso più sofisticati, come la mappatura di più intervalli di UID e GID. Questa opzione implica –setgroups=deny.

Quindi, sui sistemi più recenti, puoi eseguire:

unshare -n -r ping 127.0.0.1

E questo produrrà il previsto Network is unreachable .

Sui sistemi Debian potresti comunque ricevere un Operation not permitted errore, quindi devi prima abilitare gli spazi dei nomi degli utenti senza privilegi eseguendo:

sudo sysctl -w kernel.unprivileged_userns_clone=1

Nota:per una gamma più ampia di casi d'uso, il più sofisticato bwrap --unshare-net può essere considerato, come brevemente descritto in una risposta diversa.


Linux
  1. Come accedere (se possibile) allo spazio del kernel dallo spazio utente?

  2. Esegui parte di uno script bash come utente diverso

  3. È possibile eseguire Microsoft Excel su Ubuntu?

  4. È possibile eseguire automaticamente il sedano all'avvio?

  5. È possibile eseguire GNU puro?

Eseguire script con argomenti come utente?

Esegui Docker come utente non root

È possibile eseguire LINQPad con Mono (Mac)

È possibile eseguire test automatizzati Appium iOS su Ubuntu?

Upstart:eseguire il servizio come utente senza privilegi e preavviare lo script come root

Eseguire uno script di shell come utente diverso