top Jailuser

Columbo0815

Kaffeemann
Teammitglied
Moin,

für mein "Problem" wird es vermutlich (noch?) keine Lösung geben. Mich "nervt" es allerdings:

Wenn ich top laufen lasse, wird mir in einer Spalte der "USERNAME" angezeigt. top zeigt hierbei nicht nur Prozesse des Hosts an sondern natürlich auch Prozesse der Jails. In der Spalte "USERNAME" zeigt top aber nicht den Usernamen, den ich in der Jail vergeben habe an, sondern den Usernamen des Hosts (/vermutlich wird /etc/passwd ausgelesen). Wenn eine User-ID auf dem Host gar nicht vergeben ist sondern nur in der Jail, zeigt top die User-ID in der Spalte "USERNAME" an.

Bin ich der einzige, den das stört? Es müsste doch "ein leichtes" sein, top so umzuprogrammieren, dass er die Usernamen aus der Jail holt (mit "j" kann ich schließlich auch die Jail-ID anzeigen lassen)?! "ein leichtes" für Leute die das können... Könnte es ich, würde ich natürlich einen Patch einreichen... ;)
 
Du kannst die Jail-User auch auf dem Host anlegen. :)
Wenn es in mehreren Jails zB die User-ID 1005 gibt, diese aber unterschiedliche Namen haben, funktioniert das schonmal nicht mehr. Ich finde das auch eher einen "hässlichen" Workaround für ein Problem, dass sich eigentlich "richtig" lösen lassen sollte (ich hoffe du liest das nicht als Kritik an deinem Vorschlag). Ich finde es unschön User anzulegen, die ich nicht benötige (zB www oder squid). :)
 
Hi,

vorab: mir ist das auch schon aufgefallen und finde es ebenso "unschön".

Es müsste doch "ein leichtes" sein, top so umzuprogrammieren, dass er die Usernamen aus der Jail holt (mit "j" kann ich schließlich auch die Jail-ID anzeigen lassen)

Das ist eben nicht so einfach. Die JID gehört ja zum Prozess und kann entsprechend einfach abgefragt werden. Das Umsetzen von UID zu Name kann nicht einfach aus der /etc/passwd abgeleitet werden, es gibt ja noch andere potentielle Benutzerdatenbanken. Daher müsste auf dem Host jeweils der getpwuid(3)-Systemaufruf innerhalb des Jails ausgeführt werden. Das binden an ein Jail geht mittels jail_attach(2) - nur als root und unumkehrbar.

Rob
 
In 12-CURRENT gibt es ein sysctl, was Jail-Prozesse für den Host unsichtbar macht. Ich weiß nur leider nicht aus dem Kopf wie es heißt und kann gerade nicht nachschauen. Das löst das Problem nicht wirklich, aber man sieht es nicht mehr. ;)
 
Das ist eben nicht so einfach. Die JID gehört ja zum Prozess und kann entsprechend einfach abgefragt werden. Das Umsetzen von UID zu Name kann nicht einfach aus der /etc/passwd abgeleitet werden, es gibt ja noch andere potentielle Benutzerdatenbanken. Daher müsste auf dem Host jeweils der getpwuid(3)-Systemaufruf innerhalb des Jails ausgeführt werden. Das binden an ein Jail geht mittels jail_attach(2) - nur als root und unumkehrbar.

Rob
Ok, vermutlich habe ich mir das viel zu einfach vorgestellt. top zeigt ja die JID an. In meiner (einfachen) Welt prüft top einfach ob die JID > 0 ist und wertet dann die /etc/passwd der entsprechenden Jail aus. Aber es scheint nicht ganz so einfach zu sein.

In 12-CURRENT gibt es ein sysctl, was Jail-Prozesse für den Host unsichtbar macht. Ich weiß nur leider nicht aus dem Kopf wie es heißt und kann gerade nicht nachschauen. Das löst das Problem nicht wirklich, aber man sieht es nicht mehr. ;)
:-P
 
Das Problem ist in Solaris (10, was anderes habe ich hier gerade nicht) übrigens auch nicht gelöst. prstat zeigt hier ebenfalls nur die UID an, wenn der Prozess in eine nonglobalen Zone läuft.
 
In 12-CURRENT gibt es ein sysctl, was Jail-Prozesse für den Host unsichtbar macht. Ich weiß nur leider nicht aus dem Kopf wie es heißt und kann gerade nicht nachschauen. Das löst das Problem nicht wirklich, aber man sieht es nicht mehr. ;)

Es ist: security.bsd.see_jail_proc
 
Betrifft das auch UID 0 des Hosts?
Nein, selbst mit security.bsd.see_jail_proc=0 kann root immer noch alle Jail-Prozesse sehen.

Ich denke das komplementiert eher security.bsd.see_other_gids, security.bsd.see_other_uids, so dass unprivilegierte User nicht Jail-Prozesse sehen können die zufällig dieselbe UID haben.
 
Zurück
Oben