[英]How do I find userid by login (Python under *NIX)
我需要將我的進程設置為在'nobody'下運行,我找到了os.setuid(),但是如果我有login
怎么找到uid
?
我發現uid在/ etc / passwd中,但也許比掃描/ etc / passwd有更多的pythonic方式。 任何人?
您可能想要查看python stdlib中的pwd模塊,例如:
import pwd
pw = pwd.getpwnam("nobody")
uid = pw.pw_uid
它使用/ etc / passwd(好吧,技術上它使用posix C API,所以我想如果它不使用/ etc / passwd但它暴露了所需的函數,它可能在OS上工作)但比手動解析它更干凈
永遠不要直接掃描/etc/passwd
。
例如,在我管理的Linux系統上,用戶帳戶不在/etc/passwd
,而是在LDAP服務器上。
正確的方法是使用getpwent
/ getgrent
和相關的C函數(如在@ TFKyle的回答中),它將獲得有關每個系統的正確方法的信息(在Linux glibc上,它讀取/etc/nsswitch.conf
以了解哪個NSS要加載動態庫以獲取信息)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.