AUTHSELECT-PROFILES(5)

NAME
authselect-profiles - comment étendre les profils authselect.

DESCRIPTION

Cette page de manuel explique comment les profils authselect sont organisés et comment créer de nouveaux profils.

DOSSIER DE PROFIL

Les profils peuvent être trouvés dans un des trois dossiers.

/usr/share/authselect/default
    Dossier en lecture seule contenant les profils fournis avec authselect.

/usr/share/authselect/vendor
    Dossier en lecture seule pour les profils spécifiques de revendeurs qui peuvent outrepasser ceux dans le dossier par défaut.

/etc/authselect/custom
    Lieu pour les profils définis par l’administrateur.

FICHIERS DE PROFIL

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
    Description du profil. La première ligne doit être le nom du profil.

system-auth
    Pile PAM inclue depuis quasiment tout fichiers de configuration de service.

password-auth, smartcard-auth, fingerprint-auth
    Ces piles PAM sont pour les applications gérant l’authentification depuis différents types de périphériques via le lancement de conversations individuelles simultanées plutôt qu’une conversation agrégée.

postlogin
    L’objectif de cette pile PAM est de fournir un lieu central pour tous les modules PAM qui doivent être appelés après la pile configurée dans system-auth ou les autres fichiers communs de configuration de PAM. Elle est inclue depuis tous les fichiers individuels de configuration de services qui fournissent un service de connexion par shell ou fichier d’accès. Note : les modules dans le fichier de configuration postlogin sont exécutés indépendamment du succès ou de l’échel des modules dans le fichier de configuration system-auth.

nsswitch.conf
    Fichier de configuration Name Service Switch. Seuls les cartes pertinentes pour le profil doivent être définies. Les cartes qui ne sont pas renseignées par le profil sont inclues dans /etc/authselect/user-nsswitch.conf.

dconf-db
    Changements à la base dconf. L’usage principal est de définir les changements pour quelques écrans de connexion Gnome afin d’activer ou désactiver l’authentification smartcard ou empreinte digitale.

dconf-locks
    Ce fichier défini les verrous sur les valeurs définies dans la base dconf.

  LIGNES CONDITIONNELLES

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"}
    Arrête immédiatement le traitement du fichier à moins que « feature » soit défini (le reste du contenu du fichier sera supprimé). Si « feature » est défini, l’ensemble de la ligne avec cet opérateur sera supprimée et le reste du modèle sera traité.

{stop if "feature"}
    Opposé de « continue if ». Stop immédiatement le traitement du fichier si « feature »est défini (le reste du contenu du fichier sera supprimé). Si « feature » n’est pas défini, l’ensemble de la ligne avec cet opérateur sera supprimée et le reste du modèle sera traité.

{include if "feature"}
    Inclue la ligne où cet opérateur est placé uniquement si « feature » est défini.

{exclude if "feature"}
    Opposé de « inclue-if ». Inclue la ligne où cet opérateur est placé uniquement si « feature » n’est pas défini.

{imply "implied-feature" if "feature"}
    Active la fonctionnalité « implied-feature » si la fonctionnalité « feature » est activée. L’ensemble de la ligne avec cet opérateur est supprimée, il n’est donc pas possible d’ajouter quoi que ce soit d’autre autour de cet opérateur en même temps.

{if "feature":true|false}
    Si « feature » est défini, remplace cet opérateur avec la chaîne « true », sinon avec la chaîne « false ».

{if "feature":true}
    Si « feature » est défini, remplace cet opérateur avec la chaîne « true », sinon avec une chaîne vide.

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}
    Si "feature1" ou "feature2" est définie, remplacer cet opérateur avec la chaîne "true", sinon avec une chaîne vide.

{if not "feature":true|false}
    Si « feature » n’est pas défini, remplace cet opérateur avec la chaîne « true », sinon avec la chaîne « false ».

{if not "feature":true}
    Si « feature » n’est pas défini, remplace cet opérateur avec la chaîne « true », sinon avec une chaîne vide.

{if "feature1" and ("feature2" or "feature3"):true}
    Si "feature1" est définie, et "feature2" ou "feature3" est définie, remplacer cet opérateur avec la chaîne "true", sinon avec une chaîne vide.

  EXEMPLE

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

CREATION D’UN NOUVEAU PROFIL

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.

VOIR AUSSI

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