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?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top