簡體   English   中英

如何通過登錄找到userid(Python下* NIX)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM