pam_unix (8) ( FreeBSD man: Команды системного администрирования )
pam_unix (8) ( Linux man: Команды системного администрирования )
Название
pam_tcb -
PAM-модуль, реализующий поддержку схемы управления теневыми паролями 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
запускает привилегированную вспомогательную программу для получения хеша
пароля, необходимого для выполнения аутентификации.
Этот параметр указывает путь к вспомогательной программе.
Если указан пустой путь, то никакой вспомогательной программы запущено не
будет.
Значение по умолчанию -
/sbin/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 для ОС ALT Linux,
перевод документации по TCB на русский язык.
Реализация PAM-модуля
pam_tcb
призвана обеспечивать обратную совместимость с
pam_unix,
ввиду чего некоторые решения были заимствованы из
pam_unix.
Некоторые менее критичные фрагменты кода, а также в некоторой мере композиция
кода взяты из реализации модуля
pam_unix
в Linux-PAM.
Имена соавторов
pam_unix
приведены в каталоге orig_copyright/ исходного кода схемы TCB.