>> pam_tcb (8) ( Русские man: Команды системного администрирования )
pam_tcb (8) ( Linux man: Команды системного администрирования )
Название
pam_tcb - реализующий поддержку схемы управления теневыми паролями
tcb для всех групп управления, определённых в PAM:
authentication, account, session, и password management.
Описание
pam_tcb -
это модуль PAM, предназначенный для работы с Unix-аккаунтами и
поддерживающий все определённые в PAM группы управления (PAM management
groups): authentication, account management, session management, и
password management.
pam_tcb
является заменителем использующихся в традиционной для Unix схеме модулей
pam_unix
и
pam_pwdb.
authentication
Модуль
pam_tcb
использует только функции
getpwnam(3)
и
getspnam(3)
для получения информации, необходимой для аутентификации пользователей.
Для хеширования паролей используется функция
crypt_ra(3)
либо
crypt(3).
Это значит, в частности, что модуль
pam_tcb
использует NSS и поддерживает все методы хеширования, поддерживаемые
системными библиотеками (такими как libcrypt).
account management
Если информация об аккаунте доступна с помощью
getspnam(3),
подсистема
pam_tcb,
реализующая account management, проверяет срок действия пароля и аккаунта.
При этом используются поля теневой записи, подробно описанной в
shadow(5).
Приложения, использующие PAM, должны соответствующим образом обрабатывать
код возврата и, возможно, использовать password management group для
смены истекшего пароля.
session management
По умолчанию,
pam_tcb
протоколирует открытие и закрытие сессий PAM с помощью
syslog(3).
В качестве syslog
facility
используется
LOG_AUTH
и, если не указан параметр
noopenlog,
в качестве
ident
используется "pam_tcb".
Эту функциональность можно отключить с помощью параметра
nolog
(см. ниже).
password management
pam_chauthtok(3)
выполняется в две стадии при обработке стека password management:
PAM_PRELIM_CHECK
и
PAM_UPDATE_AUTHTOK.
Во время стадии
PAM_PRELIM_CHECK,
модуль
pam_tcb
может, в зависимости от параметров, запросить пароль, и всегда проверяет
старый пароль. Это позволяет использовать в стеке password management
модуль контроля и обеспечения качества паролей типа
pam_passwdqc
до
pam_tcb,
избавляя такой модуль от необходимости выполнения задач, возлагаемых на
pam_tcb.
Собственно смена пароля происходит во время стадии
PAM_UPDATE_AUTHTOK.
Во время смены пароля модуль
pam_tcb
может вносить изменения в следующие базы паролей:
файл
/etc/passwd,
см.
passwd(5);
файл
/etc/shadow
см.
shadow(5);
структура, расположенная в
/etc/tcb/
см.
tcb(5);
NIS и NIS+.
Параметры
Большинство параметров, использующихся в модулях
pam_unix
и
pam_pwdb,
используются в модуле
pam_tcb
и имеют тот же смысл. Впрочем, есть некоторые семантические различия,
описанные ниже. Все логические параметры по умолчанию выключены.
Значения по умолчанию для остальных параметров приведены ниже.
debug
Выводить отладочную информацию при помощи
syslog(3).
audit
Выводить более детальную отладочную информацию, включая неизвестные имена
пользователей. Есть риск того, что таким образом в лог попадут пароли,
введённые по ошибке пользователями вместо имён.
noopenlog
В обычной ситуации модуль
pam_tcb
вызывает
openlog(3)
с аргументом
ident
"pam_tcb" до протоколирования и
closelog(3)
после. Параметр
noopenlog
выключает этот механизм.
nolog
Выключить протоколирование.
blank_nolog
Не протоколировать неудачные попытки аутентификации в случае, если
введён пустой пароль. Если этот параметр не используется, некоторые
приложения, например,
sshd(8),
могут порождать ложные предупреждения.
nullok
Разрешить пустые пароли.
use_first_pass
Не запрашивать пароль у пользователя, вместо этого взять значение из
PAM_AUTHTOK
и, возможно,
PAM_OLDAUTHTOK.
try_first_pass
В качестве пароля использовать значения из
PAM_AUTHTOK
и, возможно,
PAM_OLDAUTHTOK,
и запросить пароль у пользователя в случае, если значения соответствующих
переменных PAM не определены.
use_authtok
Действовать аналогично
use_first_pass,
используя только (новое) значение
PAM_AUTHTOK.
Этот параметр предназначен для организации стеков модулей для password
management.
not_set_pass
Запретить модулю изменять значения вышеупомянутых переменных PAM.
likeauth
Будучи вызванным как credential setting module, возвращать то же значение,
что было возвращено во время аутентификации.
passwd
Если указан этот параметр,
pam_tcb
может использовать второе поле пользовательской записи (обычно из файла
/etc/passwd)
в качестве хеша пароля.
Детали см. ниже.
shadow
Если указан этот параметр,
pam_tcb
может использовать второе поле теневой пользовательской записи (обычно
из файла
/etc/shadow
или из теневого файла по схеме tcb) в качестве хеша пароля.
Детали см. ниже.
nisplus
Если указан этот параметр,
pam_tcb
будет пытаться устанавливать EUID пользователя непосредственно перед
получением хеша пароля. Этот параметр необходимо указывать при
использовании NIS+.
Детали см. ниже.
write_to=
Этот параметр определяет, где модуль
pam_tcb
должен хранить хеши новых паролей при смене паролей.
Возможные значения: "passwd", "shadow", "tcb", и "nis".
Значение по умолчанию: "shadow".
md5
При обновлении паролей пользователей хешировать новые пароли с помощью
устаревшего алгоритма, заимствованного из FreeBSD и основанного на MD5.
prefix=
При обновлении паролей пользователей генерировать
salt
с указанным префиксом (который, в свою очередь, определяет, какой метод
будет применён для хеширования пароля). Значение по умолчанию для
префикса - "$2a$", что соответствует
bcrypt-
методу, основанному на Blowfish и поддерживающему изменяемое число
итераций.
count=
Число итераций, используемых криптографическим алгоритмом при хешировании
паролей. Значение по умолчанию - 0; в этом случае применяется количество
итераций по умолчанию для выбранного криптоалгоритма.
Рекомендуется переопределять это значение. За информацией по
поддерживаемым методам хеширования, их свойствам и параметрам
обращайтесь к
crypt(3).
plain_crypt
Использовать
crypt(3)
вместо
crypt_ra(3).
Это может понадобиться в случае, если в системной библиотеке нет
реентерабельной реализации выбранного метода хеширования.
nodelay
Не задерживать выполнение при неудачных попытках аутентификации.
fork
Создавать специальный подпроцесс для доступа к теневым файлам. При
использовании этого параметра можно быть уверенным в том, что после вызова
pam_end(3)
в адресном пространстве процесса не останется важной информации о
паролях. С другой стороны, применение этого параметра может негативно
повлиять на работоспособность некоторых сложных приложений, и требует
некоторых дополнительных ресурсов системы, что может несколько снизить
производительность.
helper=
Если хеш пароля не может быть получен модулем
pam_tcb
и UID аутентифицируемого пользователя совпадает с real UID того
пользователя, под которым работает модуль, то
pam_tcb
запускает привилегированную вспомогательную программу для получения
хеша пароля, необходимого для выполнения аутентификации. Этот параметр
указывает путь к вспомогательной программе. Если указан пустой путь,
то никакой вспомогательной программы запущено не будет.
Значение по умолчанию -
/usr/lib/chkpwd/tcb_chkpwd.
Получение хешей паролей
Модуль
pam_tcb
использует следующий алгоритм для получение хеша пароля пользователя:
если (указан параметр
passwd
и поле
pw_passwd
не равно ни "x", ни "*NP*")
использовать поле
pw_passwd
в качестве хеша;
если (указан параметр
nisplus)
{
попытаться установить EUID соответствующего пользователя;
если не удалось, то признать попытку неудачной;
получить
struct spwd
пользователя с помощью
getspnam(3);
восстановить прежний EUID;
использовать поле
sp_pwdp
в качестве хеша;
}
если (указан параметр
shadow
и поле
pw_passwd
равно "x")
использовать поле
sp_pwdp
в качестве хеша;
если все вышеперечисленное не удалось, признать попытку неудачной.
Дефекты
Текущая реализация модуля
pam_tcb
не является thread-safe (равно как
pam_unix
и
pam_pwdb).
Историческая справка
Первая публичная версия реализации альтернативной схемы управления
теневыми паролями
tcb
появилась 12 ноября 2001 года в ОС Openwall GNU/*/Linux.
Дата появления
tcb
в ALT Linux Sisyphus - 20 декабря 2001 года.
аудит кода, адаптация схемы
tcb
для ОС ALT Linux, перевод документации по
tcb
на русский язык.
Реализация PAM-модуля
pam_tcb
призвана обеспечивать обратную совместимость с
pam_unix,
ввиду чего некоторые решения были заимствованы из
pam_unix.
Некоторые менее критичные фрагменты кода, а также в некоторой мере
композиция кода взяты из реализации модуля
pam_unix
в Linux-PAM.
Имена соавторов
pam_unix
приведены в каталоге orig_copyright/ исходного кода схемы
tcb.