AUTHSELECT-PROFILES(5)

NAME
authselect-profiles - hur man utökar authselect-profiler.

BESKRIVNING

Denna manualsida beskriver hur authselect-profiler är organiserade och hur man skapar nya profiler.

PROFILKATALOGER

Profiler kan finnas i en av tre kataloger.

"/usr/share/authselect/default"
    Endast läsbar katalog som innehåller profiler som levereras tillsammans med authselect.

"/usr/share/authselect/vendor"
    Endast läsbar katalog för leverantörsspecifika profiler som kan åsidosätta dem i standardkatalogen.

"/etc/authselect/custom"
    Plats för administratördefinierade profiler.

PROFILFILER

Varje profil består av en eller flera av dessa filer som tillhandahåller obligatorisk profilbeskrivning och beskriver ändringarna som görs av systemet.

README
    Beskrivning av profilen. Den första raden måste vara ett namn på profilen.

system-auth
    PAM-stacken som inkluderas från nästan alla individuella tjänstekonfigurationsfiler.

password-auth, smartcard-auth, fingerprint-auth
    Dessa PAM-stackar är för program som hanterar autentisering från olika typer av enheter genom att samtidigt köra flera individuella konversationer istället för en sammansatt konfiguration.

postlogin
    Syftet med denna PAM-stack är att vara en gemensam plats för alla PAM-moduler som skall anropas efter att stacken konfigurerats i system-auth eller andra gemensamma PAM-konfigurationsfiler. Den inkluderas från alla individuella tjänstekonfigurationsfiler som tillhandahåller en inloggningstjänst med skalåtkomst. OBSERVERA: modulerna i konfigurationsfilen postlogin körs oavsett om modulerna i konfigurationsfilen system-auth lyckas eller inte.

nsswitch.conf
    Konfigurationsfil för namntjänststväxling.

dconf-db
    Ändringar av dconf-databasen. Det huvudsakliga användningsfallet för denna fil är att ange ändringar för gnomes inloggningsskärm för att aktivera eller avaktivera autentisering med smartkort eller och fingeravtryck.

dconf-locks
    Denna fil definierar lås på värden som anges i dconf-databasen.

  VILLKORLIGA RADER

Var och en av dessa filer tjänstgör som en mall. En mall är en ren textfil med möjlig användning av flera operatorer som kan användas för att tillhandahålla några valfria profilfunktioner.

{continue if "funktion"}
    Avsluta omedelbart bearbetning av filen om inte ”funktion” är definierat (resten av filinnehållet kommer tas bort). Om ”funktion” är definierat kommer hela raden med denna operator tas bort och resten av mallen kommer behandlas.

{stop if "funktion"}
    Motsatsen till ”continue if”. Avsluta omedelbart bearbetning av filen om ”funktion” är definierat (resten av filinnehållet kommer tas bort). Om ”funktion” inte är definierat kommer hela raden med denna operator tas bort och resten av mallen kommer behandlas.

{include if "funktion"}
    Inkludera raden där denna operator står om ”funktion” är definierat.

{exclude if "funktion"}
    Motsatsen till ”include-if”. Inkludera raden där denna operator står om ”funktion” inte är definierat.

{imply "implicerad-funktion" if "funktion"}
    Aktivera funktionen ”implicerad-funktion” om funktionen ”funktion” aktiveras. Hela raden med denna operator tas bort, det är alltså inte möjligt att lägga till något annat runt denna operator på samma rad.

{if "funktion":sant|falskt}
    Om ”funktion” är definerat, ersätt denna operator med strängen ”sant”, annars med strängen ”falskt”.

{if "funktion":sant}
    Om ”funktion” är definerat, ersätt denna operator med strängen ”sant”, annars med en tom sträng.

Det är också möjligt att använda lokiska uttryck i villkorliga rader istället för att ange ett enskilt funktionsnamn. I detta fall kommer uttrycket evalueras till sant eller falskt och den villkorliga operatorn kommer att agera utgående från resultatet.

Uttryckssyntaxen består av funktionsnamn (t.ex. "feature") som returnerar true om funktionen är definierad eller false om den inte är definierad samt av följande logiska operatorer: and, or och not. Uttrycket kan även inneslutas i parenteser och innehålla flera deluttryck.

Till exempel:

{if "funktion1" or "funktion2":true}
    Om ”funktion1” eller ”funktion2” är definierad, ersätt denna operator med strängen ”true”, annars med en tom sträng.

{if not "funktion":sant|falskt}
    Om ”funktion” inte är definerat, ersätt denna operator med strängen ”sant”, annars med strängen ”falskt”.

{if not "funktion":sant}
    Om ”funktion” inte är definerat, ersätt denna operator med strängen ”sant”, annars med en tom sträng.

{if "funktion1" and ("funktion2" or "funktion3"):true}
    Om ”funktion1” är definerad, och en av ”funktion2” och ”funktion3” är definierad ersätt denna operator med strängen ”true”, annars med en tom sträng.

  EXEMPEL

Här är ett exempel på användningen av operatorn ”if”. Om funktionen ”med-sudo” är aktiverad kommer det lägga till ”sss” till sudoers-raden.

    passwd:     sss files
    group:      sss files
    netgroup:   sss files
    automount:  sss files
    services:   sss files
    sudoers:    files {if "med-sudo":sss}

Här är ett exempel på operatorerna ”continue-if” och ”include-if”. Den resulterande filen kommer vara tom om inte funktionen ”med-smartkort” är aktiverad. Om den är aktiverad och även funktionen ”med-fellås” är aktiverad kommer den även aktivera stöd för pam_faillock.

    {continue if "med-smartkort"}
    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 "med-fellås"}
    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 "med-fellås"}
    auth        required                                     pam_deny.so
    ...

Här är ett exempel på ”continue-if” som använder ett logiskt uttryck. Filen kommer vara tom om inte ”with-smartcard” eller ”with-smartcard-required” är satt. Detta kommer förenkla anropet av kommandot autselect select som inte behöver inkludera båda funktionerna utan bara ”with-smartcard-required” är nödvändigt.

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

Här är ett exempel på operatorn ”imply-if”. Att aktivera funktionen ”with-smartcard-required” kommer också aktivera ”with-smartcard” för att säkerställa att alla relevanta PAM-moduler används. Detta kommer åstadkomma samma beteende som det föregående exemplet.

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

ATT SKAPA EN NY PROFIL

För att registrera en ny profil i authselect, skapa en katalog i en av authselects profilplatser med filerna listade ovan. Alla filer behöver inte finnas, endast README är obligatorisk. Andra filer kan skapas baserat på behov.

Kommandot ”authselect create-profile” kan förenkla när man skapar en ny profil. Se manualsidan ”authselect(8)” eller ”authselect create-profile --help” för mer information.

SE ÄVEN

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