* [devel] pam-config с поддержкой system-policy
@ 2020-05-18 1:19 Evgeny Sinelnikov
0 siblings, 0 replies; only message in thread
From: Evgeny Sinelnikov @ 2020-05-18 1:19 UTC (permalink / raw)
To: ALT Linux Team development discussions
Здравствуйте,
в сизиф отправлена новая сборка pam-config-1.9.0 включающая следующие
исправления и доработки:
Исправления в промежуточной версии 1.8.0 (подготовлена ldv@)
- В настройках pam_tcb удалено явное указание prefix=$2y$ count=8 from
pam_tcb options (closes: #36279)
- Общие настройки из system-auth-local и
system-auth-use_first_pass-local (для модулей pam_mktemp и pam_limits)
перенесены в отдельный system-auth-common. Часть относящая к pam_tcb
перенесена system-auth-local-only и
system-auth-use_first_pass-local-only соответственно.
- Подпакет pam0-config объединён в pam-config.
Исправления в релизной версии 1.9.0:
- Основные методы аутентификации system-auth (krb5, krb5_ccreds, ldap,
winbind) переписаны с использованием pam_localuser, как переключателя.
Если пользователь локальный (то есть фактически присутствует в
/etc/passwd), аутентификация осуществляется через метод local, иначе -
через выбранный нелокальный метод аутентификации (реализовано ldv@).
- В методе аутентификации winbind удалено явное указание типа кеша ключей.
- Добавлены файл-триггеры, возвращающие метод аутентификации local, в
случае удаления соответствующих файлов (такая ситуация возникает для
дополнительных методов, например из пакета sssd-client).
- Добавлен новый механизм управления стеком аутентификации -
system-policy, позволяющий в рамках выбранного метода аутентификации
включать дополнительные модули в момент логина в систему.
Исходный код доступен по адресу:
http://git.altlinux.org/gears/p/pam-config.git
________________________
Общий стек для входа в систему теперь выглядит следующим образом:
$ cat pam-config/common-login
#%PAM-1.0
auth substack system-auth
auth substack system-policy
auth required pam_nologin.so
account substack system-auth
account substack system-policy
account required pam_nologin.so
password include system-auth
password include system-policy
session substack system-auth
session required pam_loginuid.so
-session optional pam_systemd.so
session substack system-policy
Стек локальной политики system-policy-local - по умолчанию, пуст.
Стек политики удалённого входа (для нелокальных методов)
system-policy-remote включает в себя только pam_mkhomedir.
Новая архитектура модулей аутентификации практически исключает
дублирование правил. Стеки для нелокальных методов генерируются из
общего шаблона и разделены на две части - генерируемую и собственную.
Генерируемая часть стека создаётся из следующего шаблона:
$ cat system-auth-chooser.in
@TYPE@ [success=4 perm_denied=ignore default=die] pam_localuser.so
@TYPE@ [success=1 default=bad] pam_succeed_if.so uid >= 500 quiet
@TYPE@ [default=1] pam_permit.so
@TYPE@ substack @BASE@-@METHOD@-only
@TYPE@ [default=1] pam_permit.so
@TYPE@ substack @BASE@-local-only
@TYPE@ substack system-auth-common
Собственная часть методов выглядит лаконично и практически идентично
для всех типов методов:
$ cat pam-config/system-auth-krb5-only
#%PAM-1.0
auth required pam_krb5.so
account required pam_krb5.so
password required pam_krb5.so
session required pam_krb5.so
$ cat pam-config/system-auth-use_first_pass-krb5-only
#%PAM-1.0
auth required pam_krb5.so use_first_pass
password required pam_krb5.so use_authtok
К соответствующему виду приведен и стек sssd.
________________________
Поскольку правило "session required pam_mkhomedir.so silent" переехало
из system-auth в common-login посредством system-policy, локальные
не-логин сервисы, которые не используют common-login, в т.ч. su, не
получат теперь правило для pam_mkhomedir. И, соответственно,
сайдэффектом будет такое поведение, при котором "зайти" в ранее не
логиневшегося пользователя через su - USERNAME не получится.
Ошибка при этом будет выглядеть следующим образом:
sin@demo ~ $ su - administrator
Password:
/home/DOMAIN.ALT/administrator not available; exiting
Данное поведение вводится по умолчанию и затрагивает только те случаи,
когда утилиты пытаются использовать стек PAM для переключения в
пользователя, который никогда ранее не входил в систему и,
соответственного, у которого отсутствует домашний каталог.
Для переключения к предыдущему поведению рассматривается доработка в
виде control'а, доступная в моём репозитории (вопрос реализации - пока
открыт):
http://git.altlinux.org/people/sin/packages/pam-config.git
________________________
Реализация нового механизма system-policy аналогична system-auth:
# control system-auth summary
system authentication type
# control system-auth help
krb5: authentication via Kerberos 5
krb5_ccreds: authentication via Kerberos 5 with local caching
ldap: authentication via LDAP
local: local authentication
multi: use multi authentication method
pkcs11: use pkcs11 authentication method
sss: use sss authentication method
winbind: authentication via Winbind
Доступные поллитики по умолчанию:
# control system-policy summary
system session policy type
# control system-policy help
local: local session policy
remote: remote session policy with mkhomedir
________________________
Варианты использования system-policy:
1) Стек включающий pam_mount:
Создаём новый вариант политики PAM-модулей:
# cat /etc/pam.d/system-policy-remote_with_pam_mount
#%PAM-1.0
auth substack system-policy-remote
auth optional pam_mount.so
account substack system-policy-remote
password substack system-policy-remote
session substack system-policy-remote
session optional pam_mount.so
Проверяем текущую, смотрим доступность и переключаемся на новую
политику стека PAM-модулей:
# control system-policy
remote
# control system-policy help
local: local session policy
remote: remote session policy with mkhomedir
remote_with_pam_mount: use remote_with_pam_mount session policy
# control system-policy remote_with_pam_mount
# ls -l /etc/pam.d/system-policy
lrwxrwxrwx 1 root root 35 мая 18 05:05 /etc/pam.d/system-policy ->
system-policy-remote_with_pam_mount
2) Стек включающий групповые политики для пользователя:
$ cat pam-config/system-policy-gpupdate
#%PAM-1.0
-session optional pam_oddjob_mkhomedir.so
-session optional pam_oddjob_gpupdate.so
session optional pam_env.so user_readenv=1
Создаётся и настраивается аналогично.
--
Sin (Sinelnikov Evgeny)
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2020-05-18 1:19 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-18 1:19 [devel] pam-config с поддержкой system-policy Evgeny Sinelnikov
ALT Linux Team development discussions
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
public-inbox-index devel
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git