Сообщить об ошибке.

Модуль pwd в Python, пользователи и пароли Unix

Доступ к базе пользователей и паролей семейства ОС Unix

Модуль pwd обеспечивает доступ к базе данных пользователей Unix и базе паролей. Он доступен на всех версиях Unix.

Записи базы паролей сообщаются как объект типа кортежа, атрибуты которого соответствуют членам структуры passwd.

ИндексАтрибутСмысл
0pw_nameЛогин
1pw_passwdДополнительный зашифрованный пароль
2pw_uidЧисловой идентификатор пользователя
3pw_gidЧисловой идентификатор группы
4pw_gecosUser name or comment field
5pw_dirДомашний каталог пользователя
6pw_shellИнтерпретатор пользовательских команд

Элементы uid и gid являются целыми числами, все остальные являются строками.

Если запрошенная запись не может быть найдена, то поднимается исключение KeyError.

Примечание. В традиционном Unix поле pw_passwd обычно содержит пароль, зашифрованный с помощью алгоритма, производного от DES. Однако в большинстве современных систем используется так называемая система теневых паролей. В этих устройствах поле pw_passwd содержит только звездочку '*' или символ 'x', где зашифрованный пароль хранится в файле /etc/shadow, который не доступен для чтения всем пользователям. Наличие в поле pw_passwd чего-либо полезного зависит от системы. Там, где требуется доступ к зашифрованному паролю следует использовать сторонний модуль python-pam.

Функции модуля.

pwd.getpwuid(uid):

Функция pwd.getpwuid() возвращает запись базы паролей для данного числового идентификатора uid пользователя.

pwd.getpwnam(name):

Функция pwd.getpwnam() возвращает запись базы паролей для данного имени name пользователя.

pwd.getpwall():

Функция pwd.getpwall() возвращает список всех доступных записей базы паролей в произвольном порядке.

Примеры:

>>> import pwd
# список всех доступных записей базы паролей
>>> list_pwd = pwd.getpwall()
>>> list_pwd[:2]
# [pwd.struct_passwd(pw_name='root', 
#                    pw_passwd='x', 
#                    pw_uid=0, 
#                    pw_gid=0, 
#                    pw_gecos='root', 
#                    pw_dir='/root', 
#                    pw_shell='/bin/bash'
#                    ),
#  pwd.struct_passwd(pw_name='daemon', 
#                    pw_passwd='x',
#                    pw_uid=1, 
#                    pw_gid=1, 
#                    pw_gecos='daemon', 
#                    pw_dir='/usr/sbin', 
#                    pw_shell='/usr/sbin/nologin'
#                    )
#  ]

# запись базы паролей по `uid`
>>> pwd.getpwuid(1000)
# pwd.struct_passwd(pw_name='docs-python', 
#                   pw_passwd='x', 
#                   pw_uid=1000, 
#                   pw_gid=1000, 
#                   pw_gecos='docs-python,,,', 
#                   pw_dir='/home/docs-python', 
#                   pw_shell='/bin/bash'
#                   )

# запись базы паролей по имени пользователя
>>> pwd.getpwnam('root')
# pwd.struct_passwd(pw_name='root', 
#                   pw_passwd='x', 
#                   pw_uid=0, 
#                   pw_gid=0, 
#                   pw_gecos='root', 
#                   pw_dir='/root', 
#                   pw_shell='/bin/bash'
#                   )

.