2008-11-16 37 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動態加載庫來獲取信息)。

相關問題