この man ページでは、authselect プロファイルの構築方法および新規プロファイルの作成方法について説明します。
プロファイルは、3 つのディレクトリーのうちの 1 つで見つけることができます。
/usr/share/authselect/default
/usr/share/authselect/vendor
/etc/authselect/custom
各プロファイルは、1 つ以上のこれらのファイルで構成されます。これらのファイルは、必須プロファイルの説明をし、システムに対する変更を説明します。
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 "feature":true}
また、単一の機能名を指定せずに、条件付きの行に論理式を使用することも可能です。この場合、この式は真または偽を評価し、条件演算子が結果に従って動作します。
式の構文は、機能が定義されていると true を返し、機能が定義されておらず、and、or、not の論理演算子のものでなければ、false を返す機能名 (例 "feature") から成ります。この式は、括弧で閉じられ、複数のサブ式を含むことがあります。
例:
{if "feature1" or "feature2":true}
{if not "feature":true|false}
{if not "feature":true}
{if "feature1" and ("feature2" or "feature3"):true}
例 ~ これは "if" オペレーターを使用した例です。"with-sudo" 機能が有効になると、sudoers の行に "sss" を追加します。
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 ...
これは、"imply-if" 演算子の例です。"with-smartcard-required" 機能を有効化すると、すべての関連の PAM モジュールが使用されるようにするために "with-smartcard" が有効になります。これにより、以前の例と同じ動作が確立されます。
{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 プロファイルロケーションの 1 つにディレクトリーを作成します。すべてのファイルが必要なわけではありません。README のみが必須です。他のファイルは必要に応じて作成することができます。
新しいプロファイルを作成する際には authselect create-profile が役立つことがあります。詳細は、authselect(8) マニュアルページまたは authselect create-profile --help を参照してください。
authselect(8)、nsswitch.conf(5)、PAM(8)