2008-11-16 29 views

回答

20

你可能想看看在Python STDLIB的pwd模块,例如:

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

它使用/ etc/passwd文件(当然,在技术上它使用POSIX C API,所以我想如果它没有使用/ etc/passwd但暴露了所需的功能,它可能在OS上工作),但比手动解析它更清洁

+0

请注意,使用pwd.getpwnam即使在/ etc/passwd指向外部机制(认为/ etc/passwd中带有单个“+”的行)(如LDAP)时也能正常工作。 – tzot 2008-11-17 10:41:18

5

永远不要直接扫描/etc/passwd

例如,在我管理的Linux系统上,用户帐户不在/etc/passwd上,而是在LDAP服务器上。

正确的方法是使用getpwent/getgrent和相关的C函数(如@ TFKyle的答案),这将得到正确的道路信息对每个系统(在Linux上的glibc,它读取​​知道哪些NSS动态加载库来获取信息)。

相关问题