Tato manuálová stránka vysvětluje organizaci profilů authselect a jak vytvářet nové profily.
Profily lze nalézt v jednom ze tří adresářů.
/usr/share/authselect/default
/usr/share/authselect/vendor
/etc/authselect/custom
Každý profil se skládá z jednoho nebo více těchto souborů, které poskytují povinný popis profilu a popisují změny, které jsou provedeny v systému.
README
system-auth
password-auth, smartcard-auth, fingerprint-auth
postlogin
nsswitch.conf
dconf-db
dconf-locks
Každý z těchto souborů slouží jako šablona. Šablona je soubor prostého textu s volitelným použitím několika operátorů, které lze použít k vytvoření některých volitelných vlastností profilu.
{continue if "feature"}
{stop if "feature"}
{include if "feature"}
{exclude if "feature"}
{imply "implied-feature" if "feature"}
{if "feature":true|false}
{if "feature":true}
Je též možné v podmíněných řádcích používat logické výrazy namísto uvádění jednotlivých názvů vlastností. V tomto případě se výraz vyhodnotí jako pravda či nepravda a podmínkový operátor tak bude jednat dle výsledku.
Syntaxe výrazu se skládá z názvů vlastností (např. "vlastnost"), která vrací pravda, když je vlastnost určena, nebo nepravda, když určena není, a těchto logických operátorů: and, or a not. Výraz lze rovněž uzavřít do závorek a mít tak více podvýrazů.
Na příklad:
{if "feature1" or "feature2":true}
{if not "feature":true|false}
{if not "feature":true}
{if "feature1" and ("feature2" or "feature3"):true}
Zde máte příklad použití operátoru "if". Je-li vlastnost "with-sudo" povolena, přidá "sss" to řádku sudoers.
passwd: sss files group: sss files netgroup: sss files automount: sss files services: sss files sudoers: files {if "with-sudo":sss}
Zde je příklad s operátory "continue-if" a "include-if". Výsledný soubor bude prázdný, pokud není povolena vlastnost "with-smartcard". Je-li tato vlastnost povolena a rovněž povolena vlastnost "with-faillock", povolí rovněž podporu pro 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 ...
Zde je příklad "continue=if" s logickým výrazem. Výsledný soubor bude prázdný, pokud není nastavena "with-smartcard" nebo "with-smartcard-required". Zjednoduší to volání příkazu authselect select, který nemusí vkládat obě vlastnosti, neboť nezbytná je pouze "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] paleam_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 ...
Zde je příklad s operátorem "imply-if". Povolení vlastnosti "with-smartcard-required" povolí rovněž "with-smart-card", aby se zajistilo, že budou použity všechny odpovídající moduly PAM. Tímto se dosáhne stejného chování, jako v předchozím příkladu.
{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 ...
Chcete-li zaznamenat nový profil v rámci authselect, vytvořte adresář se výše uvedenými soubory v jednom z umístění profilů authselect. Ne všechny soubory se musí v adresáři nacházet, povinný je pouze "README". Ostatní soubory lze vytvořit dle potřeby.
Při vytváření nového profilu vám může pomoci příkaz authselect create-profile. Více informací viz manuálová stránka authselect(8) nebo authselect create-profile --help.
authselect(8), nsswitch.conf(5), PAM(8)