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?

War es hilfreich?

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).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top