pamを使用して "chpasswd" Linuxコマンドを時間または日付でブロックする方法は?

pamを使用して "chpasswd" Linuxコマンドを時間または日付でブロックする方法は?

私はUbuntu 18 OSを使用しており、17時以降はすべてのユーザーが "chpasswd"コマンドを実行できないようにしたいと思います。これにはpamを使用する必要があります。

私のもの/etc/pam.d/chpasswd文書:

# The PAM configuration file for the Shadow 'chpasswd' service
#

@include common-password

password required       pam_pwquality.so retry=3
account required pam_time.so

私のもの/etc/security/time.conf文書:

chpasswd;*;myUser;!Al1700-2400

なぜ動作しないのかわかりません。一日中このコマンドを実行できます。

答え1

ユーザーがchpasswdRunを使用するのを防ぐことはできませんpam_time.so。これにより、ユーザーが実際にパスワードを変更しようとしたときにPAM権限の確認が失敗します。

chpasswd目標が指定された期間内にユーザーがパスワードを変更できないようにすることであれば、/etc/security/time.confこの方法で十分です。

ユーザーが実行しないようにするには、chpasswdcronjob(など/etc/cron.d/disable_chpasswd)を追加して、指定された時間にこのプログラムを実行している他のユーザーの権限を無効にする必要があります。

# disable chpasswd daily at 5pm
0 17 * * * root /usr/bin/chmod 4750 /usr/bin/chpasswd
# enable  chpasswd daily at 5am
0  5 * * * root /usr/bin/chmod 4755 /usr/bin/chpasswd

ただし、ユーザーが自分のパスワードを完全に変更するのを防ぐために、ユーザーpam_time.soはパスワードを引き続き使用できるため、その機能(またはそのようなcronjob)に依存することはできません。passwdに頼ることはできません。アカウント管理グループ)または他の方法(たとえば、一部のグラフィックツールはAccountsServiceによって提供されるD-Busインターフェイスを使用します)。これを回避するには、PAM設定でパスワード変更を無効にして有効にするようにcronジョブを設定できます(ただし、これが可能な解決策であるかどうかはわかりません)。

関連情報