Как мне найти пользователя по логину (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, чтобы знать, какие НСС динамические библиотеки для загрузки, чтобы получить информацию).