如何使用 pam 按时间或天数阻止“chpasswd”linux 命令?

如何使用 pam 按时间或天数阻止“chpasswd”linux 命令?

我有 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 配置中禁用和启用密码更改(但我不知道这对您来说是否是一个可行的解决方案)。

相关内容