Como faço para encontrar ID de usuário por login (Python sob * NIX)
-
08-07-2019 - |
Pergunta
Eu preciso definir o meu processo para ser executado sob 'ninguém', eu encontrei os.setuid (), mas como faço para encontrar uid
se eu tiver login
?
Eu descobri que uids estão em / etc / passwd, mas talvez haja uma maneira mais Python de digitalização / etc / passwd. Qualquer um?
Solução
Você pode querer ter um olhar para o pwd módulo no stdlib python, por exemplo:
import pwd
pw = pwd.getpwnam("nobody")
uid = pw.pw_uid
ele usa / etc / passwd (bem, tecnicamente ele usa a API POSIX C, então eu suponho que poderia trabalhar em um sistema operacional se não usar / etc / passwd mas expôs as funções necessárias), mas é mais limpo do que a análise -lo manualmente
Outras dicas
/etc/passwd
Nunca diretamente digitalização.
Por exemplo, em um sistema I administrar Linux, as contas de usuário não estão em /etc/passwd
, mas em um servidor LDAP.
A maneira correta é usar funções getpwent
/ getgrent
e relacionados C (como na resposta da @ TFKyle), que receberá as informações sobre a maneira correta para cada sistema (em Linux glibc, ele lê /etc/nsswitch.conf
saber quais bibliotecas dinâmicas NSS a carga para obter as informações).