Active Directoryに対する認証にsssdを使用しています。ユーザーのパスワードは、一定の時間が経過すると期限切れになる場合があります。
sssd.conf
では、[pam] pam_pwd_expiration_warning = X
を設定して、パスワードの有効期限が切れる前にメッセージが表示される日を変更できます。これは機能しますSudo
を使用する場合、またはssh
を介してリモートでログインする場合。
ログイン後にそのようなメッセージ(おそらく通知として)を表示する方法はありますか?
Xubuntu 14.04を使用しています。そして、この警告を目立つ位置で見ることができれば本当に助かります。 IMOは、グラフィカルログインの直後に行うのが最善の方法です。
私は自分の問題にぴったりのスクリプトを作成することができました。答えてくれた@kosに感謝します-ダイアログ自体を表示するのに役立ちました。
このソリューション に基づいてスクリプトを作成しましたが、dscl
が利用できないため、ADを照会する別の方法を検索しました。 このブログエントリ は、私が探していたものを正確に取得するためのソリューションを見つけるのに役立ちました。
そのため、ここにスクリプトを示します。このスクリプトは、セッションの開始時にトリガーされます。
#!/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
私はADに精通していませんが、それがうまくいくならldapsearch -h mydomain.de -b 'dc=mydomain,dc=de' "(sAMAccountName=${user})" 2>/dev/null
を試してください。
IMOこのソリューションは、他のシナリオではきれいでも実用的でもありませんが、この単一の問題を修正します。誰かがssh経由でログインしたときに表示されるメッセージのダイアログを表示する方法を知っているなら、私はまだ興味があります。
この問題を解決するために、ユーザー向けのシンプルなデスクトップアプリを作成しました。 ADpasswordと呼ばれます。
パスワードの有効期限を(Kerberosチケットを介して)チェックし、残りの日数が設定されたしきい値を下回ったときにダイアログを表示します。
ユーザーのデスクトップスタートに追加して、毎日実行できます。