From: Evgeny Sinelnikov <sin@altlinux.org> To: ALT Linux Team development discussions <devel@lists.altlinux.org> Subject: [devel] pam-config с поддержкой system-policy Date: Mon, 18 May 2020 05:19:49 +0400 Message-ID: <CAK42-Gou79scKcb-GzGo2f5qOHuYLiTh41bO+zkbhgRKH2S5WA@mail.gmail.com> (raw) Здравствуйте, в сизиф отправлена новая сборка 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)
reply other threads:[~2020-05-18 1:19 UTC|newest] Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=CAK42-Gou79scKcb-GzGo2f5qOHuYLiTh41bO+zkbhgRKH2S5WA@mail.gmail.com \ --to=sin@altlinux.org \ --cc=devel@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
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