我有 Ubuntu 18 操作系统,我试图阻止所有用户在 17:00 点之后运行“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
使用运行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接口)。为了避免这种情况,您可以设置一个 cron 作业,在 PAM 配置中禁用和启用密码更改(但我不知道这对您来说是否是一个可行的解决方案)。