Cette page de manuel explique comment les profils authselect sont organisés et comment créer de nouveaux profils.
Les profils peuvent être trouvés dans un des trois dossiers.
/usr/share/authselect/default
/usr/share/authselect/vendor
/etc/authselect/custom
Chaque profil consiste en un ou plusieurs de ces fichiers qui fournissent obligatoirement une description du profil et décrivent les changements faits au système.
README
system-auth
password-auth, smartcard-auth, fingerprint-auth
postlogin
nsswitch.conf
dconf-db
dconf-locks
Chacun de ces fichiers sont utilisés comme des modèles. Un modèle est un fichier texte avec l'utilisation optionnelle de plusieurs opérateurs qui peuvent être utilisés pour fournir certaines fonctions de profil optionnelles.
{continue if "feature"}
{stop if "feature"}
{include if "feature"}
{exclude if "feature"}
{imply "implied-feature" if "feature"}
{if "feature":true|false}
{if "feature":true}
Il est également possible d'utiliser des expressions logiques dans une ligne conditionnelle plutôt que le nom d'une unique fonctionnalité. Dans ce cas, l'expression sera évaluée en True ou False et l'opérateur conditionnel agira sur le résultat.
La syntaxe de l'expression consiste en nom de fonctionnalités (p. ex. "feature") qui reverra true si la fonctionnalité est définie ou false si elle n'est pas définie et depuis les opérateurs logiques suivants : and, or et not. L'expression peut également être mise entre parenthèses et contenir de multiples sous-expressions.
Par exemple :
{if "feature1" or "feature2":true}
{if not "feature":true|false}
{if not "feature":true}
{if "feature1" and ("feature2" or "feature3"):true}
Voici un exemple d'utilisation de l'opérateur « if ». Si la fonctionnalité « with-sudo » est active, cela ajoutera « sss » à la ligne sudoers.
passwd: sss files group: sss files netgroup: sss files automount: sss files services: sss files sudoers: files {if "with-sudo":sss}
Voici un exemple d'utilisation des opérateurs « continue-if » et « include-if ». Le fichier résultant sera vide, à moins que la fonctionnalité « with-smartcard » est activée. Si elle est activée et que la fonctionnalité « with-faillock » l'est également, cela ajoutera la prise en charge pour 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 ...
Voici un exemple d'utilisation des opérateurs « continue-if » utilisant une expression logique. Le fichier sera vide à mois que « with-smartcard » ou « with-smartcard-required » soient définies. Cela simplifiera l'appel de la commande authselect select qui n'a pas à inclure les deux fonctionnalités si « with-smartcard-required » uniquement est nécessaire.
{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 ...
Voici un exemple de l'opérateur « imply-if ». Activer la fonctionnalité « with-smartcard-required » va aussi activer « with-smartcard » pour s'assurer que tous les modules PAM nécessaires sont utilisés. Vous obtiendrez le même comportement que l'exemple précédent.
{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 ...
Pour enregistrer un nouveau profil dans authselect, créez un dossier dans un des dossiers d'emplacement des profils authselect avec les fichiers listés ci-dessus. Tous les fichiers n'ont pas à être présents, seul le README est obligatoire. Les autres fichiers peuvent être créés selon les besoins.
Vous pourriez trouver la commande authselect create-profile utile lors de la création de nouveaux profils. Lisez la page de manuel authselect(8) ou authselect create-profile --help pour plus d'informations.
authselect(8), nsswitch.conf(5), PAM(8)