Deze handboekpagina legt uit hoe authselect profielen opgebouwd zijn en hoe je nieuwe profielen aanmaakt.
Profielen in één van drie mappen gevonden worden.
/usr/share/authselect/default
/usr/share/authselect/vendor
/etc/authselect/custom
Elk profiel bestaat uit één of meer van deze bestanden die een verplichte profielbeschrijving bieden en de veranderingen beschrijven die in het systeem zijn aangebracht.
README
system-auth
password-auth, smartcard-auth, fingerprint-auth
postlogin
nsswitch.conf
dconf-db
dconf-locks
Elk van dezr bestanden dient als een sjabloon. Een sjabloon is een gewoon tekstbestand met optioneel gebruik van verschillende operatoren die gebruikt kunnen worden voor het bieden van optionele profieleigenschappen.
{continue if "feature"}
{stop if "feature"}
{include if "feature"}
{exclude if "feature"}
{imply "implied-feature" if "feature"}
{if "feature":true|false}
{if "feature":true}
Het is ook mogelijk om logische expressies in de conditionele regel te gebruiken in plaats van het specificeren van een enkele functienaam. In dit geval wordt de expressie geëvalueerd naar true of false en de conditionele operator zal handelen op het resultaat.
De expressie syntaxis bestaat uit functienamen (bijv. "feature") welke true teruggeeft als de functie gedefinieerd is of false als het niet gedefinieerd is en uit de volgende logische operatoren: and, or en not. De expressie kan ook tussen haakjes staan en meerdere sub-expressies bevatten.
Bijvoorbeeld:
{if "feature1" or "feature2":true}
{if not "feature":true|false}
{if not "feature":true}
{if "feature1" and ("feature2" or "feature3"):true}
Hier is een voorbeeld van het gebruik van de "if" operator. Als de "with-sudo" eigenschap aangezet is, zal het "sss" torvoegen aan de sudoers regel.
passwd: sss bestanden group: sss bestanden netgroup: sss bestanden automount: sss bestanden services: sss bestanden sudoers: bestanden {if "with-sudo":sss}
Hier is een voorbeeld van "continue-if" en "include-if" operatoren. Het resulterende bestand zal leeg zijn behalve als de "with-smartcard" eigenschap aangezet is. Als het aangezet is en ook de "with-faillock" eigenschap aangezet is, zal het ook ondersteuning voor pam_faillock aanzetten.
{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 ...
Hier is een voorbeeld van "continue-if" met gebruik van logische expressies. Het bestand zal leeg zijn tenzij "with-smartcard" og "with-smartcard-required" ingesteld is. Dit zal de aanroep van het authselect select commando vereenvoudigen omdat de<e niet beide functies hoeft te bevatten maar indien nodig alleen met "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 ...
Hier is een voorbeeld van de "imply-if" operator. Het aanzetten van functie "with-smartcard-required" zal ook "with-smartcard" aanzetten om er zeker van te zijn dat alle relevante PAM modules gebruikt worden. Dit geeft hetzelfde gedrag als het vorige voorbeeld.
{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 ...
Om binnen authselect een nieuw profiel te registreren, maak je een map aan in een van hierboven aangegeven authselect profiel locaties. Niet alle bestanden hoeven aanwezig te zijn, alleen README is verplicht. Andere bestanden kunnen waar nodig aangemaakt worden.
Misschien vind je het authselect create-profile commando handig bij het aanmaken van een nieuw profiel. Bekijk de authselect(8) handleiding of authselect create-profile --help voor meer informatie.
authselect(8), nsswitch.conf(5), PAM(8)