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
|
||||
|
||||
|
||||
|
||||
30
debian/postinst
vendored
30
debian/postinst
vendored
@@ -3,7 +3,7 @@ set -e
|
||||
|
||||
case "$1" in
|
||||
configure)
|
||||
# enable GDM customization
|
||||
# Enable GDM customization
|
||||
if command -v /usr/bin/dconf >/dev/null ; then
|
||||
dconf update
|
||||
fi
|
||||
@@ -18,7 +18,7 @@ case "$1" in
|
||||
cat /usr/share/ca-certificates/orange/*.crt \
|
||||
> /etc/sssd/pki/sssd_auth_ca_db.pem
|
||||
|
||||
# configure pam-pkcs11
|
||||
# Configure pam-pkcs11
|
||||
if [ -d /etc/pam_pkcs11 ] ; then
|
||||
# add Orange certificates
|
||||
mkdir -p /etc/pam_pkcs11/cacerts
|
||||
@@ -31,28 +31,14 @@ case "$1" in
|
||||
# a config file in dir /usr/share/pam-configs.
|
||||
fi
|
||||
|
||||
# Configure PAM for credential cache
|
||||
apt-mark manual libpam-ccreds >/dev/null || true
|
||||
if [ -e /usr/share/pam-configs/ccreds-check ] ; then
|
||||
pam-auth-update --package --enable ccreds-check ccreds-save || true
|
||||
fi
|
||||
# Configure PAM
|
||||
pam-auth-update --package \
|
||||
--remove sss krb5 \
|
||||
--enable yourdev ccreds-check ccreds-save || true
|
||||
|
||||
# Configure PAM for Kerberos
|
||||
if [ -e /usr/share/pam-configs/sss ] ; then
|
||||
# Use pam-sss if present and disable pam-krb5
|
||||
echo "Using pam-sss ..."
|
||||
pam-auth-update --package --enable sss || true
|
||||
pam-auth-update --package --remove krb5 || true
|
||||
elif [ -e /usr/share/pam-configs/krb5 ] ; then
|
||||
echo "Using pam-krb5 ..."
|
||||
pam-auth-update --package --enable krb5 || true
|
||||
else
|
||||
echo "Warning: no PAM config for Kerberos found!"
|
||||
fi
|
||||
|
||||
# fix sssd configuration permissions
|
||||
# Fix sssd configuration permissions
|
||||
chmod 600 /etc/sssd/sssd.conf || true
|
||||
# restart services
|
||||
# Restart services
|
||||
deb-systemd-invoke restart sssd.service || true
|
||||
;;
|
||||
|
||||
|
||||
1
debian/postrm
vendored
1
debian/postrm
vendored
@@ -8,6 +8,7 @@ case "$1" in
|
||||
dconf update
|
||||
fi
|
||||
;;
|
||||
|
||||
remove|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
|
||||
;;
|
||||
|
||||
|
||||
24
debian/prerm
vendored
Normal file
24
debian/prerm
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
#!/bin/sh
|
||||
set -e
|
||||
|
||||
case "$1" in
|
||||
remove)
|
||||
pam-auth-update --package --remove yourdev || true
|
||||
;;
|
||||
|
||||
upgrade|deconfigure)
|
||||
;;
|
||||
|
||||
failed-upgrade)
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "prerm called with unknown argument \`$1'" >&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
#DEBHELPER#
|
||||
|
||||
exit 0
|
||||
23
usr/share/pam-configs/yourdev
Normal file
23
usr/share/pam-configs/yourdev
Normal file
@@ -0,0 +1,23 @@
|
||||
Name: Yourdev authentication (SSSD)
|
||||
Default: no
|
||||
Priority: 512
|
||||
Conflicts: sss
|
||||
|
||||
Auth-Type: Primary
|
||||
Auth:
|
||||
[success=end default=ignore] pam_sss.so use_first_pass
|
||||
Auth-Initial:
|
||||
[success=end default=ignore] pam_sss.so forward_pass
|
||||
Account-Type: Additional
|
||||
Account:
|
||||
sufficient pam_localuser.so
|
||||
[default=bad success=ok user_unknown=ignore] pam_sss.so
|
||||
Session-Type: Additional
|
||||
Session-Interactive-Only: yes
|
||||
Session:
|
||||
optional pam_sss.so
|
||||
Password-Type: Primary
|
||||
Password:
|
||||
sufficient pam_sss.so use_authtok
|
||||
Password-Initial:
|
||||
sufficient pam_sss.so
|
||||
Reference in New Issue
Block a user