Wie kann ich die Benutzer-ID erhalten, die mit einem Login unter Linux verbunden ist?

8

Kurzversion: Ich möchte eine Möglichkeit haben, somefunction("username") auszuführen und die mit username verknüpfte Benutzer-ID zurückgeben zu lassen. Zum Beispiel würde somefunction("root") 0 zurückgeben.

Ich schreibe ein Serverprogramm, das möglicherweise Ports mit niedriger Nummer verwendet, also muss es als root starten. Offensichtlich möchte ich nicht, dass es als root ausgeführt wird. Daher ist es geplant, dass Benutzer angeben, welcher Benutzer das Programm ausführen soll. Das Problem ist, dass setuid() eine Benutzer-ID benötigt und ich nicht weiß, wie man eine Benutzer-ID von einem Login-Namen nachschlägt. Ich schaute in unistd.h und es scheint nur Funktionen zu haben, um Informationen über den aktuellen Benutzer zu finden.

Ich weiß, ich könnte einfach /etc/passwd öffnen, aber ich würde lieber nicht, wenn es dafür eine Funktion geben muss.

    
Brendan Long 01.10.2010, 03:29
quelle

2 Antworten

15

Sie möchten getpwnam .

Hier ist ein komplettes Beispiel, das ich gerade geschrieben habe:

%Vor%     
Matt Joiner 01.10.2010, 03:34
quelle
5

Ein einfacherer Ansatz wird sein:

%Vor%     
user2578243 13.07.2013 00:43
quelle

Tags und Links