Как мне найти пользователя по логину (Python под *Никс)
Мне нужно настроить свой процесс на запуск под 'nobody', я нашел ОС.setuid (), но как найти uid
, если у меня есть login
?
Я обнаружил, что uids находятся в /etc / passwd, но, возможно, есть более пифонический способ, чем сканирование /etc/passwd. Кто-нибудь?
2 ответа:
Возможно, вы захотите взглянуть на модуль pwd в python stdlib, например:
import pwd pw = pwd.getpwnam("nobody") uid = pw.pw_uid
Он использует /etc / passwd (ну, технически он использует posix C API, поэтому я предполагаю, что он мог бы работать на ОС, если бы он не использовал /etc / passwd, но выставил необходимые функции), но чище, чем разбирать его вручную
Никогда не сканируйте напрямую
Например, в системе Linux, которую я администрирую, учетные записи пользователей находятся не на/etc/passwd
./etc/passwd
, а на сервере LDAP.Правильный способ заключается в использовании
getpwent
/getgrent
и, связанные с функциями (как в @TFKyle ответ), что позволит получить информацию о правильном пути для каждой системы (в Linux с glibc, он читает/etc/nsswitch.conf
, чтобы знать, какие НСС динамические библиотеки для загрузки, чтобы получить информацию).