На этой странице руководства объясняется, как организованы профили authselect, а также как создавать новые профили.
Профили находятся в одном из трех каталогов.
/usr/share/authselect/default
/usr/share/authselect/vendor
/etc/authselect/custom
Каждый профиль состоит из одного или нескольких таких файлов, которые предоставляют обязательное описание профиля и описывают изменения, которые вносятся в систему.
README
system-auth
password-auth, smartcard-auth, fingerprint-auth
postlogin
nsswitch.conf
dconf-db
dconf-locks
Каждый из этих файлов служит шаблоном. Шаблон - это простой текстовый файл с необязательным использованием нескольких операторов, которые можно использовать для предоставления некоторых дополнительных функций профиля.
{continue if "feature"}
{stop if "feature"}
{include if "feature"}
{exclude if "feature"}
{imply "implied-feature" if "feature"}
{if "feature":true|false}
{if "функция":true}
Также можно использовать логическое выражение в строке с условиями вместо указания одного имени функции. В этом случае выражение будет иметь значение true или false, и условный оператор будет действовать в соответствии с результатом.
Синтаксис выражения состоит из имен функций (например, _ "функциональность" ), которые возвращают _true, если функция определена, или false, если она не определена, и из следующих логических операторов: and, or и not. Выражение также может быть заключено в круглые скобки и содержать несколько подвыражений.
Например:
{if "функция1" or "функция2":true}
{if not "функция":true|false}
{if not "функция":true}
{if "функция1" and ("функция2" or "функция3"):true}
Вот пример использования оператора «if». Если функция «with-sudo» активирована, она добавит «sss» в строку sudoers.
passwd: sss files group: sss files netgroup: sss files automount: sss files services: sss files sudoers: files {if "with-sudo":sss}
Вот пример операторов «continue-if» и «include-if». Результирующий файл будет пустым, если не включена функция «with-smartcard». Если она включена, а также включена функция «with-faillock», она также включит поддержку pam_faillock.
{continue if "with-smartcard"} auth required pam_env.so auth required pam_faildelay.so delay=2000000 auth required pam_faillock.so preauth silent deny=4 unlock_time=1200 {include if "with-faillock"} auth [default=1 ignore=ignore success=ok] pam_succeed_if.so uid >= 1000 quiet auth [default=1 ignore=ignore success=ok] pam_localuser.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth sufficient pam_sss.so forward_pass auth required pam_faillock.so authfail deny=4 unlock_time=1200 {include if "with-faillock"} auth required pam_deny.so ...
Вот пример использования логического выражения «continue-if». Файл будет пустым, если не установлено «with-smartcard» или «with-smartcard-required». Это упростит вызов команды authselect select, которая не должна включать обе функции, но необходима только «with-smartcard-required».
{continue if "with-smartcard" or "with-smartcard-required"} auth required pam_env.so auth required pam_faildelay.so delay=2000000 auth required pam_faillock.so preauth silent deny=4 unlock_time=1200 {include if "with-faillock"} auth [default=1 ignore=ignore success=ok] pam_succeed_if.so uid >= 1000 quiet auth [default=1 ignore=ignore success=ok] pam_localuser.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth sufficient pam_sss.so forward_pass auth required pam_faillock.so authfail deny=4 unlock_time=1200 {include if "with-faillock"} auth required pam_deny.so ...
Вот пример оператора «impy-if». Включение функции «with-smartcard-required» также включает «with-smartcard» для гарантии, что используются все соответствующие модули PAM. Результат будет таким же, что и в предыдущем примере.
{imply "with-smartcard" if "with-smartcard-required"} auth required pam_env.so auth required pam_faildelay.so delay=2000000 auth [success=1 default=ignore] pam_succeed_if.so service notin login:gdm:xdm:kdm:xscreensaver:gnome-screensaver:kscreensaver quiet use_uid {include if "with-smartcard-required"} auth [success=done ignore=ignore default=die] pam_sss.so require_cert_auth ignore_authinfo_unavail {include if "with-smartcard-required"} auth [default=1 ignore=ignore success=ok] pam_succeed_if.so uid >= 1000 quiet auth [default=1 ignore=ignore success=ok] pam_localuser.so {exclude if "with-smartcard"} auth [default=2 ignore=ignore success=ok] pam_localuser.so {include if "with-smartcard"} auth [success=done authinfo_unavail=ignore ignore=ignore default=die] pam_sss.so try_cert_auth {include if "with-smartcard"} auth sufficient pam_unix.so {if not "without-nullok":nullok} try_first_pass auth requisite pam_succeed_if.so uid >= 1000 quiet_success auth sufficient pam_sss.so forward_pass auth required pam_deny.so ...
Чтобы зарегистрировать новый профиль в authselect, создайте каталог в одном из мест размещения профиля authselect с файлами, перечисленными выше. Не все файлы должны присутствовать, только * README * является обязательным. Другие файлы могут быть созданы по мере необходимости.
Команду authselect create-profile может оказаться полезной при создании нового профиля. См. страницу руководства authselect (8) или воспользуйтесь командой authselect create-profile --help для получения дополнительной информации.
authselect(8), nsswitch.conf(5), PAM(8)