Denna manualsida beskriver hur authselect-profiler är organiserade och hur man skapar nya profiler.
Profiler kan finnas i en av tre kataloger.
/usr/share/authselect/default
/usr/share/authselect/vendor
/etc/authselect/custom
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
system-auth
password-auth, smartcard-auth, fingerprint-auth
postlogin
nsswitch.conf
dconf-db
dconf-locks
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"}
{stop if "funktion"}
{include if "funktion"}
{exclude if "funktion"}
{imply "implicerad-funktion" if "funktion"}
{if "funktion":sant|falskt}
{if "funktion":sant}
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 paranteser och innehålla flera deluttryck.
Till exempel:
{if "funktion1" or "funktion2":true}
{if not "funktion":sant|falskt}
{if not "funktion":sant}
{if "funktion1" and ("funktion2" or "funktion3"):true}
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 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 "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 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 ...
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: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 ...
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.
authselect(8), nsswitch.conf(5), PAM(8)