python linux unix process-management

¿Cómo encuentro userid por inicio de sesión(Python bajo*NIX)?



linux unix (2)

Necesito configurar mi proceso para que se ejecute en "nobody", he encontrado os.setuid (), pero ¿cómo puedo encontrar uid si tengo login ?

Descubrí que los uids están en / etc / passwd, pero tal vez hay una forma más pitónica que escanear / etc / passwd. ¿Nadie?


Es posible que desee echar un vistazo al módulo pwd en python stdlib, por ejemplo:

import pwd pw = pwd.getpwnam("nobody") uid = pw.pw_uid

usa / etc / passwd (bueno, técnicamente usa la API posix C, así que supongo que podría funcionar en un sistema operativo si no usara / etc / passwd pero expusiera las funciones necesarias) pero es más limpio que analizarlo manualmente


Nunca escanee /etc/passwd directamente.

Por ejemplo, en un sistema Linux que administro, las cuentas de usuario no están en /etc/passwd , sino en un servidor LDAP.

La forma correcta es usar getpwent / getgrent y funciones C relacionadas (como en la respuesta de @ TFKyle), que obtendrá la información correcta para cada sistema (en Linux glibc, lee /etc/nsswitch.conf para saber qué NSS bibliotecas dinámicas para cargar para obtener la información).