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