feat: use standard template for ccache file

Default SSSD template for ccache file is /tmp/krb5cc_%U_XXXXXX, where
XXXXXX is a suffix that will be interpreted by mkstemp(3) to create a
unique file name, while the standard configuration of the libkrb5
library is `/tmp/krb5cc_%U`.

To guarantee compatibility with the existing system, we force the use
of the standard model in SSSD.
This commit is contained in:
Michel Decima
2022-04-13 15:24:17 +02:00
parent e1361a3c32
commit 20ec88944c
2 changed files with 53 additions and 0 deletions

View File

@@ -111,6 +111,57 @@ la documentation mentionne explicitement LDAP comme sources d'identité,
donc il faudrait joindre le domaine AD, fonctionnerait seulement online donc il faudrait joindre le domaine AD, fonctionnerait seulement online
(sauf si cache). (sauf si cache).
Stockage du Credential Cache
----------------------------
Par défaut, SSSD stocke le credential cache dans un fichier dont le modèle
de nom est `/tmp/krb5cc_%U_XXXXXX`, avec `%U` qui est remplacé par le UID
de l'utilisateur, et `XXXXXX` est remplacé par `mkstemp(3)` pour obtenir
un nom de fichier unique. Pour le premier utilisateur humain, cela donne:
```
/tmp/krb5cc_1000_TiXG5v
```
_Important: il semble qu'il y a un fichier par session, quand on se connecte
à la machine en SSH, on voit apparaitre un nouveau fichier `krb5cc` avec un
suffixe différent. Ces fichiers ne sont pas nettoyés lorsque la connexion
SSH est coupée._
Ce modèle est différent de celui utilisé par la bibliothèque système
`libkrb5` et la configuration `/etc/krb5.conf`, qui utilise plutôt
`/tmp/krb5cc_%U`, ce qui donne par exemple:
```
/tmp/krb5_1000_TiXG5v
```
Pour conserver la compatibilité avec l'existant, on force dans la
configuration SSSD l'utilisation du modèle de nom classique, c'est peut être
moins sécurisé, mais ça fait moins de surprises dans les scripts existants
qui utilisent l'authentification Kerberos (cf `orange-yourdev-setup`).
Ce qui donne dans la configuration:
```
krb5_ccachedir = /tmp
krb5_ccname_template = FILE:%d/krb5cc_%U
```
Pour bien faire, il faudrait stocker le cache dans la mémoire du noyau, c'est
ce qui est le plus sécurisé, avec la propriété:
```
krb5_ccname_template = KEYRING:persistent:%U
```
et reporter la propriété équivalente dans `/etc/krb5.conf`.
Néanmoins, ce changement a des conséquences:
- il faut vérifier que tous nos scripts fonctionnent toujours
- il faut gérer la transition de `/etc/krb5.conf`
- l'applet `krb5-auth-dialog` ne gère pas le mode KEYRING
- dans GNOME, il faut tester le dialogue "comptes en lignes" pour Kerberos
TODO TODO
---- ----

View File

@@ -36,6 +36,8 @@ krb5_renewable_lifetime = 7d
krb5_renew_interval = 30m krb5_renew_interval = 30m
krb5_use_kdcinfo = true krb5_use_kdcinfo = true
krb5_kdcinfo_lookahead = 5:2 krb5_kdcinfo_lookahead = 5:2
krb5_ccachedir = /tmp
krb5_ccname_template = FILE:%d/krb5cc_%U
dns_discovery_domain = S-FT-FR-EBU._sites.ad.francetelecom.fr dns_discovery_domain = S-FT-FR-EBU._sites.ad.francetelecom.fr
# #
chpass_provider = none chpass_provider = none