2008-11-16 14 views

Respuesta

20

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

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

que utiliza/etc/passwd (bueno, técnicamente se utiliza la API POSIX C, así que supongo podría funcionar en un SO si no usaba/etc/passwd pero expuso las funciones necesarias) pero es más limpio que el análisis manual

+0

Tenga en cuenta que el uso de pwd.getpwnam funciona correctamente incluso cuando/etc/passwd apunta a mecanismos externos (piense en una línea con un solo "+" en/etc/passwd) como LDAP. – tzot

5

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 utilizar getpwent/getgrent y afines funciones de C (como en la respuesta de @ TFKyle), que conseguirá la información sobre la forma correcta para cada sistema (en glibc Linux, se lee /etc/nsswitch.conf saber qué NSS dinámico bibliotecas para cargar para obtener la información).

Cuestiones relacionadas