Wie finde ich userid von login (Python unter * NIX)
-
08-07-2019 - |
Frage
Ich brauche meinen Prozess zu setzen unter ‚nobody‘ zu laufen, habe ich festgestellt os.setuid (), aber wie finde ich uid
wenn ich login
habe?
ich herausgefunden habe, dass uids in / etc / passwd, aber vielleicht gibt es eine mehr pythonic Weise als Scan / etc / passwd. Anybody?
Lösung
Sie können einen Blick auf die PWD Modul in Python stdlib haben möchten, zum Beispiel:
import pwd
pw = pwd.getpwnam("nobody")
uid = pw.pw_uid
verwendet es / etc / passwd (na ja, technisch verwendet es die Posix-C-API, so dass ich denke, es könnte auf einem O arbeiten, wenn es nicht genutzt / etc / passwd, aber ausgesetzt, um die benötigten Funktionen), ist aber sauberer als Parsing es manuell
Andere Tipps
Sie nie direkt Scan /etc/passwd
.
Zum Beispiel auf einem Linux-System, das ich zu verwalten, sind die Benutzerkonten nicht auf /etc/passwd
, sondern auf einem LDAP-Server.
Der richtige Weg ist getpwent
/ getgrent
und verwandte C-Funktionen zu verwenden (wie in @ TFKyle Antwort), die die Informationen über die richtige Art und Weise für jedes System (auf Linux glibc erhalten wird, liest es /etc/nsswitch.conf
zu wissen, welche NSS dynamische Bibliotheken zu laden, um die Informationen zu erhalten).