web-dev-qa-db-fra.com

Comment afficher un message de connexion tel qu'un avertissement d'expiration du mot de passe?

J'utilise sssd pour m'authentifier auprès d'un annuaire actif. Les mots de passe de l'utilisateur peuvent expirer après un temps donné.

Dans sssd.conf, vous pouvez configurer [pam] pam_pwd_expiration_warning = X pour modifier les jours d'affichage du message avant l'expiration du mot de passe. Cela fonctionne par exemple lorsque vous utilisez Sudo ou que vous vous connectez à distance via ssh.

Est-il possible d'afficher un tel message (peut-être sous forme de notification) après la connexion?

J'utilise Xubuntu 14.04. Et cela me serait vraiment utile de voir cet avertissement à un endroit bien en vue. Et la meilleure façon, IMO, serait directement après la connexion graphique.

4
Bertram Nudelbach

J'ai réussi à créer un script qui fonctionne exactement pour mon problème. Merci à @kos pour la réponse - cela m'a aidé à montrer le dialogue lui-même.

J'ai écrit le script sur la base de cette solution mais comme dscl n'est pas disponible pour moi, j'ai cherché un autre moyen d'interroger l'AD. Cette entrée de blog m'a aidé à démarrer et à trouver une solution pour obtenir exactement ce que je cherchais ..

Voici donc mon script que je déclenche au démarrage de la session:

#!/bin/bash
pwPolicy=90
warnDays=10
user=`whoami`
userRecord=`ldapsearch -h mydomain.de -b 'dc=mydomain,dc=de' "(sAMAccountName=${user})" 2>/dev/null`
lastpwdMS=`grep -i pwdLastSet <<< "$userRecord" | sed 's/pwdLastSet: //'`
todayUnix=`date "+%s"`
lastpwdUnix=`expr $lastpwdMS / 10000000 - 11644473600`
diffUnix=`expr $todayUnix - $lastpwdUnix`
diffdays=`expr $diffUnix / 86400`
daysremaining=`expr $pwPolicy - $diffdays`

if [ "$daysremaining" -le ${warnDays} ]
then
  zenity --info --title="Password expiration" --text="The password for ${user} will expire in ${daysremaining} days."
fi

Je ne suis pas familier avec AD mais essayez simplement ldapsearch -h mydomain.de -b 'dc=mydomain,dc=de' "(sAMAccountName=${user})" 2>/dev/null si cela fonctionne pour vous.

OMI cette solution n'est ni jolie ni utilisable pour d'autres scénarios, mais elle résout ce problème unique. Je suis toujours intéressé si quelqu'un sait comment afficher un dialogue avec les messages qui apparaîtront lors de la connexion via ssh.

3
Bertram Nudelbach

J'ai conçu une application de bureau simple pour mes utilisateurs afin de résoudre ce problème. Cela s'appelle ADpassword.

Il vérifie (via les tickets kerberos) la date d'expiration du mot de passe et affiche une boîte de dialogue lorsque le nombre de jours restant est inférieur au seuil configuré.

Vous pouvez l'ajouter au démarrage du bureau de l'utilisateur et l'exécuter tous les jours.

ADpassword in Github

2
Alfonso E.M.