Comment trouver l'ID utilisateur lors de la connexion (Python sous * NIX)
-
08-07-2019 - |
Question
Je dois configurer mon processus pour qu'il s'exécute sous "personne". J'ai trouvé os.setuid (), mais comment puis-je trouver uid
si je dispose de login
?
J'ai découvert que les ID utilisateur se trouvent dans / etc / passwd, mais il existe peut-être un moyen plus pythonique que d'analyser / etc / passwd. Quelqu'un?
La solution
Vous voudrez peut-être consulter le module pwd dans la bibliothèque stythl python, par exemple:
import pwd
pw = pwd.getpwnam("nobody")
uid = pw.pw_uid
il utilise / etc / passwd (enfin, techniquement, il utilise l’API C posix, je suppose donc que cela pourrait fonctionner sur un système d’exploitation s’il n’utilisait pas / etc / passwd mais exposait les fonctions nécessaires) mais était plus propre que l’analyse manuellement
Autres conseils
Ne jamais analyser directement / etc / passwd
.
Par exemple, sur un système Linux que j'administre, les comptes d'utilisateur ne se trouvent pas sur / etc / passwd
, mais sur un serveur LDAP.
La bonne façon consiste à utiliser getpwent
/ getgrent
et les fonctions C associées (comme dans la réponse de @ TFKyle), qui obtiendra les informations sur le chemin correct pour chaque système. (Sous Linux, la glibc lit /etc/nsswitch.conf
pour connaître les bibliothèques dynamiques NSS à charger pour obtenir les informations).