Userid aus passwd auslesen
-
Hi Leute,
Entschuldigt, vieelicht ist die fragen zu simpel oder so, ich habe aber noch nicht so die erfahrung unter Linux zu programmieren.
Ich hab hier ein Kommandozeilenbefehl, den ich mir zamgebastelt habe, der auch eigentlich genau das tut was ich will. Ich muss die ganze sache aber in mein Programm mit einbauen:cat /etc/passwd | grep user| awk -F: '{print $3, $4}'
wie Ihr sicherlich seht, suche ich mir die user und group id zu einem User raus. und gebe sie aus. letzendlich brauceh ich die ganze sache natürlich in variablen, also kann ich mir das print dahinten sparen.
wie setze ich das ganze am besten in C um?
Danke schon mal im Voraus für Eure Mühen,
RDM
PS: Lob an die Betreiber des Forums. ICh habe hier schon oft gute Hilfe und angagierte Forenuser gefunden.
-
dafür gibt es die Funktionen
-
yo danke,
aner ich hab da ncoh ein problem.
mein code:#include <sys/types.h> #include <unistd.h> #include <pwd.h> int main() { int rc; rc = getpwnam("root"); printf("%i\n", rc); return 0; }
nun bekomme ich aber statt der erwarteten Null diese Zahl raus 1108525244
was mach ich faslch???DAnke
RDM
-
Hallo,
Hast du dir die manpages durchgelesen ? Guck dir mal den Rückgabetyp von getpwnam an.
-
schau dir nochmal an, was getpwnam zurückgibt!
Ein Zeiger auf eine Struktur und kein Integer!
-
genau, korrekterweise müsstest Du folgendes machen (Auszug, includes etc. sind weggelassen):
struct passwd *pwdstruct; char *userid; /*Usernamen nachschauen*/ pwdstruct = getpwnam(username); /*Wenn User nicht vorhanden ist*/ if(pwdstruct == NULL){ perror("auth.c: Fehler bei getpwnam(). User nicht vorhanden!\n"); return 0; } /* of if */ /*Passwort auslesen*/ userid = pwdstruct->pw_uid;
In dem Beispiel habe ich jetzt das nur die ID ausgelesen -> siehe Manpage für Gruppen ID.
Gruß,
Gwar