¿Cómo encuentro el ID de usuario al iniciar sesión (Python en * NIX)
-
08-07-2019 - |
Pregunta
Necesito configurar mi proceso para que se ejecute bajo '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 haya una forma más pitónica que escanear / etc / passwd. ¿Alguien?
Solución
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, por lo que supongo que podría funcionar en un sistema operativo si no usaba / etc / passwd pero expone las funciones necesarias) pero es más limpio que el análisis manualmente
Otros consejos
Nunca escanee directamente / etc / passwd
.
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 sobre la forma correcta para cada sistema (en Linux glibc, lee /etc/nsswitch.conf
para saber qué bibliotecas dinámicas NSS cargar para obtener la información).