私は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
ユーザーがchpasswd
Runを使用するのを防ぐことはできませんpam_time.so
。これにより、ユーザーが実際にパスワードを変更しようとしたときにPAM権限の確認が失敗します。
chpasswd
目標が指定された期間内にユーザーがパスワードを変更できないようにすることであれば、/etc/security/time.conf
この方法で十分です。
ユーザーが実行しないようにするには、chpasswd
cronjob(など/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ジョブを設定できます(ただし、これが可能な解決策であるかどうかはわかりません)。