Wie lege ich Linux-Netzwerknamespaces als Nicht-Root-Benutzer fest?

1

Ich habe einen Netzwerk-Namespace für ein VPN eingerichtet, damit nicht der gesamte Datenverkehr über das VPN geleitet wird.
Es funktioniert gut, wenn ich tippe:

sudo ip netns exec vpn firefox

Der gesamte Firefox-Datenverkehr wird nun wie erwartet über das VPN geleitet. Das Problem ist, dass jedes Programm, das so gestartet wird, über Root-Berechtigungen verfügt.
Ich habe versucht zu tun:

sudo ip netns exec vpn sudo -u user firefox

Während die Anwendung einwandfrei startet, verlässt sie den Namespace und verwendet den VPN nicht mehr.

Kann jemand helfen?

Leonlag
quelle
Sind Sie sicher, dass es den Namespace verlässt und nicht nur eine vorhandene Instanz kontaktiert (die sich bereits außerhalb befindet), um ein neues Fenster zu öffnen?
Grawity
1
Nach stundenlangem Suchen ist die Antwort dieses einfache Haha. Daran habe ich wirklich nicht gedacht. Vielen Dank
Leonlag

Antworten:

0

Prozesse können keinen Namespace "verlassen" - für die Funktion setns (2) sind Root-Berechtigungen erforderlich.

Höchstwahrscheinlich ist jedoch bereits eine Firefox-Instanz vorhanden, die außerhalb des Namespace ausgeführt wird. Wenn Sie Firefox ein zweites Mal ausführen, wird die vorhandene Instanz lediglich aufgefordert, ein neues Fenster zu öffnen.

Sie können dies vermeiden, indem Sie separate Firefox-Profile verwenden, z firefox -profile /tmp/testfox.

Grawity
quelle