GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ist es möglich, „unshare -n [Programm]“ als nicht privilegierter Benutzer auszuführen?

Ich möchte ein Programm ohne Internetzugang ausführen, z. B.

unshare -n ping 127.0.0.1 .

Als nicht privilegierter Benutzer wird Operation not permitted zurückgegeben , als privilegierter Benutzer gibt es den gewünschten Network is unreachable zurück .

Gibt es eine Möglichkeit, es auch für den nicht privilegierten Benutzer zum Laufen zu bringen?

Akzeptierte Antwort:

In späteren Versionen von util-linux, unshare hat den --map-root-user erhalten Möglichkeit. Zitat von unshare(1) Version 2.26.2:

-r, –map-root-user

Führen Sie das Programm erst aus, nachdem die aktuellen effektiven Benutzer- und Gruppen-IDs der Superuser-UID und -GID im neu erstellten Benutzernamensraum zugeordnet wurden. Dadurch ist es möglich, auf bequeme Weise Funktionen zu erlangen, die zum Verwalten verschiedener Aspekte der neu erstellten Namensräume erforderlich sind (z. B. das Konfigurieren von Schnittstellen im Netzwerk-Namensraum oder das Mounten von Dateisystemen im Mount-Namensraum), selbst wenn sie unprivilegiert ausgeführt werden. Als reine Komfortfunktion unterstützt es keine anspruchsvolleren Anwendungsfälle, wie z. B. das Zuordnen mehrerer Bereiche von UIDs und GIDs. Diese Option impliziert –setgroups=deny.

Auf neueren Systemen können Sie also Folgendes ausführen:

unshare -n -r ping 127.0.0.1

Und dies ergibt das erwartete Network is unreachable .

Auf Debian-Systemen erhalten Sie möglicherweise immer noch eine Operation not permitted Fehler, dann müssen Sie zuerst unprivilegierte Benutzernamensräume aktivieren, indem Sie Folgendes ausführen:

sudo sysctl -w kernel.unprivileged_userns_clone=1

Hinweis:Für eine breitere Palette von Anwendungsfällen ist das anspruchsvollere bwrap --unshare-net berücksichtigt werden, wie in einer anderen Antwort kurz beschrieben.


Linux
  1. Wie greife ich (wenn möglich) auf den Kernel-Space aus dem User-Space zu?

  2. Wie führe ich einen Befehl als bestimmter Benutzer in einem Init-Skript aus?

  3. Wie füge ich Benutzer zum Docker-Container hinzu?

  4. Ist es möglich, Appium iOS automatisierte Tests auf Ubuntu auszuführen?

  5. Ist es möglich, Microsoft Excel unter Ubuntu auszuführen?

Führen Sie Container unter Linux ohne sudo in Podman aus

Skript mit Argumenten als Benutzer ausführen?

Ist es möglich, Ubuntu auf einem Nexus 7 auszuführen?

Ist es möglich, LINQPad mit Mono (Mac) auszuführen?

Ist es möglich, Sellerie automatisch beim Start auszuführen?

Führen Sie ein Shell-Skript als ein anderer Benutzer aus