AUTHSELECT-PROFILES(5)

NAME
authselect-profiles - как расширить возможности профилей authselect.

ОПИСАНИЕ

На этой странице руководства объясняется, как организованы профили authselect, а также как создавать новые профили.

КАТАЛОГИ ПРОФИЛЕЙ

Профили находятся в одном из трех каталогов.

"/usr/share/authselect/default"
    Каталог только для чтения, содержащий профили, поставляемые вместе с authselect.

"/usr/share/authselect/vendor"
    Каталог только для чтения для профилей конкретных производителей, которые могут заменять профили в каталоге default.

"/etc/authselect/custom"
    Место для профилей, определяемых администратором.

ФАЙЛЫ ПРОФИЛЕЙ

Каждый профиль состоит из одного или нескольких таких файлов, которые предоставляют обязательное описание профиля и описывают изменения, которые вносятся в систему.

README
    Описание профиля. В первой строке должно быть имя профиля.

system-auth
    Стек PAM, который включен почти во все файлы конфигурации отдельных сервисов.

password-auth, smartcard-auth, fingerprint-auth
    Эти стеки PAM предназначены для приложений, которые обрабатывают аутентификацию с разных типов устройств путем одновременного выполнения отдельных диалогов вместо одного совокупного разговора.

postlogin
    Цель этого стека PAM - предоставить общее место для всех модулей PAM, которые должны вызываться после стека, настроенного в system-auth или других общих файлах конфигурации PAM. Он включается во все файлы конфигурации отдельных служб, которые предоставляют службу входа в систему с помощью оболочки или доступа к файлам. _ПРИМЕЧАНИЕ: модули в файле конфигурации postlogin выполняются независимо от успеха или сбоя модулей в файле конфигурации system-auth. _

nsswitch.conf
    Name Service Switch configuration file.

dconf-db
    Изменения в базе данных dconf. Основной вариант использования этого файла - установить изменения для экрана входа в gnome, чтобы включить или отключить аутентификацию смарт-карты и отпечатка пальца.

dconf-locks
    Этот файл определяет блокировки значений, установленных в базе данных dconf.

  СТРОКИ С УСЛОВИЯМИ

Каждый из этих файлов служит шаблоном. Шаблон - это простой текстовый файл с необязательным использованием нескольких операторов, которые можно использовать для предоставления некоторых дополнительных функций профиля.

{continue if "feature"}
    Немедленно прекратить обработку файла, если не определена «функция» (остальное содержимое файла будет удалено). Если "функция" определена, вся строка с этим оператором будет удалена, а остальная часть шаблона будет обработана.

{stop if "feature"}
    Противоположность «continue if». Немедленно прекратить обработку файла, если «функция» определена (остальное содержимое файла будет удалено). Если "функция" не определена, вся строка с этим оператором будет удалена, а остальная часть шаблона будет обработана.

{include if "feature"}
    Включить строку, в которой размещен этот оператор, только если «функция» определена.

{exclude if "feature"}
    Противоположность «include-if». Включить строку, в которой находится этот оператор, только если «функция» не определена.

{imply "implied-feature" if "feature"}
    Включить функциональность «implied-feature», если функциональность «функция» включена. Вся строка с этим оператором удаляется, поэтому невозможно добавить что-либо еще вокруг этого оператора в той же строке.

{if "feature":true|false}
    Если «функция» определена, замените этот оператор строкой «true», в противном случае - строкой «false».

{if "функция":true}
    Если «функция» определена, замените этот оператор строкой «true», в противном случае - пустой строкой.

Также можно использовать логическое выражение в строке с условиями вместо указания одного имени функции. В этом случае выражение будет иметь значение true или false, и условный оператор будет действовать в соответствии с результатом.

Синтаксис выражения состоит из имен функций (например, _ "функциональность" ), которые возвращают _true, если функция определена, или false, если она не определена, и из следующих логических операторов: and, or и not. Выражение также может быть заключено в круглые скобки и содержать несколько подвыражений.

Например:

{if "функция1" or "функция2":true}
    Если определено «функция1» или «функция2», замените этот оператор строкой «true», в противном случае - пустой строкой.

{if not "функция":true|false}
    Если «функция» не определена, замените этот оператор строкой «true», в противном случае - строкой «false».

{if not "функция":true}
    Если «функция» не определена, замените этот оператор строкой «true», в противном случае - пустой строкой.

{if "функция1" and ("функция2" or "функция3"):true}
    Если определено «функция1» и определено одно из «функция2» и «функция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
    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
    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:kde: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}
    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)