PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie werden UID's und GID's vergeben ?



pixel
29.05.15, 18:32
Hallo zusammen,

wenn ich einen Systemdienst z.B. OpenLDAP oder PostgreSQL nachinstalliere werden ja hierfür Einträge in /etc/passwd und /etc/group hinzugefügt. Dabei werden ja UID's und GID's vergeben. Wie werden dies festgelegt und kann man dies beieinflussen?

Viele Grüße
pixek

DrunkenFreak
29.05.15, 18:41
Bei "normalen" Benutzern wird einfach aufsteigend von der letzten gefundenen oder 500 bzw. 1000, je nach Distri, vergeben. Bei Dienstbenutzern kann ich mir vorstellen, dass diese im Paket mit drin stehen.

Du könntest versuchen, die Benutzer vorher anzulegen mit einer von dir festgelegten UID/GID.

pixel
29.05.15, 19:01
Hallo,

es geht ausschließlich um die System-User und -Gruppen, also die <500 .... Im Paket scheint es nicht zu stehen da sie manchmal unterschiedlich sind wenn ich ein und das selbe Paket auf zwei Maschinen (gleiches OS) installiere. Zumindest habe ich dass mal mit den OpenLDAP-Paket getestet.
Weiter habe ich mal ein wenig herum probiert auf Test-Systemen. Wenn ich die Reihenfolge wie ich die Pakete (Dienste) installiere variiere, variieren nachher auch die UID's/GID's.

Es scheint also bei der Installation nachgeschaut zu werden welche bereits vorhanden sind. Für mich wäre die spannende Frage: Wird hierzu die /etc/passwd und /etc/group geparst oder ein Systemcall ala getent passwd / getent group durchgeführt?

Viele Grüße
pixel

BetterWorld
29.05.15, 20:32
In /etc/login.defs wird festgelegt, welche Bereiche für Systembenutzer und welche für User verwendet werden.
Dort kann man ein wenig dran drehen.

Das Anlegen von Systemusers steht ganz sicher nicht im zu installierenden Paket . Kein Mensch kann schließlich wissen, wie viele und welche Systemuser schon existieren.
Ich vermute, dass schlicht /etc/passwd geparst wird.

DrunkenFreak
29.05.15, 21:48
In /etc/login.defs wird festgelegt, welche Bereiche für Systembenutzer und welche für User verwendet werden.
Dort kann man ein wenig dran drehen.

Kann ich mir kaum vorstellen. Unter Debian lieg de Benutzer irc unter uid 39 bei mir, der nächste selbst installierte Systemdienst bei 100. Irgendwie fehlt da was. Da muss also noch mindestens eine weitere Regel dabei sein.

BetterWorld
29.05.15, 23:10
Die uids bis 100 sind für vordefinierte User reserviert.
Siehe hier (http://www.tecmint.com/add-users-in-linux/)

Und in /etc/login.defs steht das auch explizit in den Kommentaren, dass ab 100 die "automatisch" erstellten uids beginnen.

nopes
30.05.15, 01:21
Naja um ehrlich zu sein, wie bei Linux üblich, sehr flexibel -> rtfm

Aber schon eine berechtigte Frage. Wobei du die auch schon selber beantwortet hast; getent ist genau der richtige Ansatz dafür

drcux
30.05.15, 12:06
Es scheint also bei der Installation nachgeschaut zu werden welche bereits vorhanden sind.

Wozu, es wird einfach mit useradd und groupadd der User und die Gruppe erstellt. Existiert eins schon, gibts zwar ne Fehlermeldung (User exist), die wird aber nach /dev/null geschrieben. Warum sollte sich ein Paketersteller also die Mühe machen, erstmal zu suchen, ob schon eine Gruppe X und der User Y existiert, wenn useradd und groupadd das selber machen?

pixel
30.05.15, 17:15
Wozu, es wird einfach mit useradd und groupadd der User und die Gruppe erstellt. Existiert eins schon, gibts zwar ne Fehlermeldung (User exist), die wird aber nach /dev/null geschrieben. Warum sollte sich ein Paketersteller also die Mühe machen, erstmal zu suchen, ob schon eine Gruppe X und der User Y existiert, wenn useradd und groupadd das selber machen?
Ok, dass ist die Info die ich hören wollte ... oder auch nicht da ich nun nicht weiter komme. Hintergrund war der. Ich verwalte Anmeldedaten immer im LDAP und dadurch habe ich auf den Linux-Clients immer dass Problem dass die LDAP-User nicht in den lokalen Systemgruppen sind was zu Problemen führt. Nun war ein Gedanke die Systemgruppen in den LDAP zu schreiben. Wenn jedoch ein Dienst nachinstalliert wird und nicht vorher per Systemaufruf geprüft wird ob ein entsprechender Account vorhanden ist sondrn dieser einfach per useradd in die /etc/passwd geschrieben wird führt dass zu Inkonsistenzen. Ich muss eine andere Lösung finden.

Danke an alle!

Disi
02.06.15, 08:22
Moin,

die Frage die ich mir gerade stelle ist wieso gibst du den Usern Systemgruppenrechte?

drcux
02.06.15, 16:11
Und Systemuser gehören meiner Meinung nicht auf einen LDAP-Server