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.
Sie möchten getpwnam
.
Hier ist ein komplettes Beispiel, das ich gerade geschrieben habe:
%Vor%