feat: give higher priority to pam_sss module
With default priority (128), pam-auth-update put module pam_sss after module pam_unix in /etc/pam.d/common-auth, and then a user with a local account and local password synchronized with AD password will never be granted a Kerberos TGT on session opening.
This commit is contained in:
54
Notes_pam.md
Normal file
54
Notes_pam.md
Normal file
@@ -0,0 +1,54 @@
|
||||
D'apres [PAMConfigFrameworkSpec], `pam_sss` devrait avoir une priorité
|
||||
>= 512, puisqu'il s'agit d'un profil qui "authenticates against a central
|
||||
network service, with rules to exclude administrative/system accounts". Or sa
|
||||
priorité définie dans `/usr/share/pam-configs/sss` est 128 ... pourquoi ?
|
||||
|
||||
=> chercher dans le bugtracker ?
|
||||
|
||||
On dirait vraiment que `pam_sss` est conçu et configuré pour des
|
||||
utilisateurs qui sont enregistrés dans un LDAP et pas en local (dans ce
|
||||
cas ça marche direct). Moi je veux bien, c'est parfait pour un poste
|
||||
fixe qui est toujours connecté au réseau, mais que se passe-t'il avec
|
||||
un laptop déconnecté, si on n'a pas de mot de passe local ?
|
||||
|
||||
On pourrait envisager de désactiver le profil `pam_unix`, comme cela il
|
||||
ne reste que `pam_sss` et le problème disparait, mais je soupçonne qu'il
|
||||
va y avoir des effets de bord ;-)
|
||||
|
||||
Pour passer `pam_sss` en premier, il faut augmenter sa priorité. On peut
|
||||
faire cela en modifiant le fichier `/usr/share/pam-configs/sss` à la
|
||||
volée depuis le `postinst` avec `sed`, mais c'est très moche, et cela ne
|
||||
résiste pas à une mise à jour du paquet `libpam-sss`, il faudrait mettre
|
||||
en place un `trigger` ou mieux encore un `divert` ... ça reste du bricolage.
|
||||
|
||||
Autre solution, plus propre:
|
||||
- ajouter un fichier `/usr/share/pam-configs/sss-yourdev`, copie de `sss`
|
||||
- modifier sa propriété `Name` et augmenter la valeur de `Priority`
|
||||
- rajouter une propriété `Conflicts: sss`
|
||||
- dans le `postinst`, activer `sss-yourdev` et désactiver `sss`
|
||||
|
||||
Important: ne pas utiliser --force dans les scripts, seulement --package
|
||||
Important: bien verifier uid >= 1000 et users interdits.
|
||||
|
||||
Note: les deux profils `sss` et `sss-yourdev` sont en conflit, mais leur
|
||||
propriété `Default` vaut `yes`, ce qui a une conséquence particulière
|
||||
: quand on lance `pam-auth-update` une première fois en mode interactif,
|
||||
sans avoir exécuté la configuration automatique via le `postinst`, alors
|
||||
les deux profils sont sélectionnés dans le dialogue `debconf`. Si on
|
||||
valide à ce moment, le dialogue se plaint qu'il y a conflit, et refuse de
|
||||
valider la sélection. Il faut modifier et choisir l'un ou l'autre. Ensuite,
|
||||
le dialogue se souvient du choix qui a été fait.
|
||||
|
||||
Références
|
||||
----------
|
||||
|
||||
- [pam.conf(5)]
|
||||
- [pam-auth-update(8)]
|
||||
- [PAMConfigFrameworkSpec]
|
||||
|
||||
[PAMConfigFrameworkSpec]: https://wiki.ubuntu.com/PAMConfigFrameworkSpec
|
||||
[pam.conf(5)]: https://manpages.debian.org/bullseye/libpam-runtime/pam.conf.5.en.html
|
||||
[pam-auth-update(8)]: https://manpages.debian.org/bullseye/libpam-runtime/pam-auth-update.8.en.html
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user