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?

Foi útil?

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).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top