AUTHSELECT-PROFILES(5)

NAME
authselect-profiles - jak rozšířit profily authselect.

POPIS

Tato manuálová stránka vysvětluje organizaci profilů authselect a jak vytvářet nové profily.

ADRESÁŘE PROFILŮ

Profily lze nalézt v jednom ze tří adresářů.

"/usr/share/authselect/default"
    Adresář pouze pro čtení, který obsahuje profily poskytované společně s authselect.

"/usr/share/authselect/vendor"
    Adresář pouze pro čtení pro profily, které jsou zvláště určené výrobcům a mohou potlačovat ty ve výchozím (též default) adresáři.

"/etc/authselect/custom"
    Místo pro profily vytvořené počítačovými správci.

SOUBORY PROFILU

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
    Popis profilu. Na prvním řádku se uvádí název profilu.

system-auth
    PAM stack, který je součástí téměř všech konfiguračních souborů jednotlivých služeb.

password-auth, smartcard-auth, fingerprint-auth
    Tyto stohy PAM jsou určené pro aplikace, které obsluhují autentizaci z různých druhů zařízení prostřednictvím souběžného vedení jednotlivých konverzací, nikoliv jedné hromadné konverzace.

postlogin
    Účelem tohoto zásobníku PAM je poskytnout společné místo pro všechny moduly PAM, které by měly být volány po zásobníku nakonfigurovaném v system-auth nebo jiných běžných konfiguračních souborech PAM. Je zahrnut ze všech konfiguračních souborů jednotlivých služeb, které poskytují přihlašovací službu s přístupem k shellu nebo souborům. POZNÁMKA: moduly v konfiguračním souboru postlogin se spustí bez ohledu na úspěch nebo neúspěch modulů v konfiguračním souboru system-auth.

nsswitch.conf
    Konfigurační soubor Name Service Switch.

dconf-db
    Změny v databázi dconf. Hlavním příkladem použití tohoto souboru je nastavit změny u přihlašovací obrazovky gnome tak, aby bylo možné povolit či zakázat autentizaci přes čipovou kartu nebo otisk prstu.

dconf-locks
    Tento soubor nastavuje zámek u hodnot nastavených v databázi dconf.

  PODMÍNĚNÉ ŘÁDKY

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"}
    Ihned zastavit zpracování souboru, pokud není určena "vlastnost" (zbývající obsah souboru bude vynechán). Je-li vlastnost určena, celý řádek s tímto operátorem bude vynechán a zbytek šablony naopak zpracován.

{stop if "feature"}
    Opak "continue if". Ihned zastavit zpracování souboru, pokud je určena "vlastnost" (zbývají obsah souboru bude vynechán). Není-li vlastnost určena, celý řádek s tímto operátorem bude vynechán a zbytek šablony naopak zpracován.

{include if "feature"}
    Vložit řádek s tímto operátorem jen, pokud je "vlastnost" určena.

{exclude if "feature"}
    Opak "include-if". Vložit řádek s tímto operátorem jen, pokud "vlastnost" není určena.

{imply "implied-feature" if "feature"}
    Povolit vlastnost "implicitní-vlastnost", pokud vlastnost "vlastnost" je povolena. Celý řádek s tímto operátorem bude vynechá, proto není možné k tomuto operátoru přidat nic dalšího na tom samém řádku.

{if "feature":true|false}
    Je-li "vlastnost" určena, nahraď tento operátor řetězcem "pravda", jinak řetězcem "nepravda".

{if "feature":true}
    Je-li "vlastnost" určena, nahraď tento operátor řetězcem "pravda", jinak prázdným řetězcem.

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}
    Jsou-li "vlastnost1" a "vlastnost2" určeny, nahraď tento operátor řetězcem "pravda", jinak prázdným řetězcem.

{if not "feature":true|false}
    Není-li "vlastnost" určena, nahraď tento operátor řetězcem "pravda", jinak řetězcem "nepravda".

{if not "feature":true}
    Není-li "vlastnost" určena, nahraď tento operátor řetězcem "pravda", jinak prázdným řetězcem.

{if "feature1" and ("feature2" or "feature3"):true}
    Je-li "vlastnost1" určena a jedna z vlastností "vlastnost2 a "vlastnost3" také, nahraď tento operátor řetězcem "pravda", jinak prázdným řetězcem.

  PŘÍKLAD

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
    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]         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
    ...

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: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 user_unknown=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
    ...

TVORBA NOVÉHO PROFILU

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.

VIZ TÉŽ

authselect(8), nsswitch.conf(5), PAM(8)