我正在尝试使用该pam_time.so
模块来限制某些用户使用的时间sudo
。但是,我的配置更改似乎没有效果。我该如何调试此问题?我的发行版可以更改 的位置吗/etc/security/time.conf
?
该pam.d/sudo
文件已经存在,如果我注释掉其他行,我可以看到效果,但该time.conf
文件在任何地方都不存在/etc
,所以我可能只是修改了错误的文件。
以下是我迄今为止所尝试过的。
以下是 的内容/etc/security/time.conf
:
sudo;*;*;!Al0830-1700
su;*;*;!Al0830-1700
/etc/pam.d/sudo
下面是和的内容/etc/pam.d/su
(我的发行版的默认设置,加上要加载的第一行pam_time.so
)。
account required pam_time.so debug
account required pam_unix.so
auth sufficient pam_unix.so likeauth try_first_pass
auth required pam_deny.so
password requisite pam_unix.so nullok sha512
session required pam_env.so envfile=…
session required pam_unix.so
当我尝试使用时sudo /bin/sh
,journalctl -f
打印:
août 09 13:53:15 nixos sudo[7454]: georges : TTY=pts/6 ; PWD=/home/georges ; USER=root ; COMMAND=/bin/sh
août 09 13:53:15 nixos sudo[7454]: pam_unix(sudo:session): session opened for user root by (uid=0)
- 似乎
debug
没有/etc/pam.d/sudo
效果 - 互联网上有些资料使用
account requisite pam_time.so
代替required
,但对我来说没什么区别 pamtester -v sudo root open_session
没有显示任何有用的信息(并且成功),但pamtester -v sudo root authenticate
拒绝了我的密码,并且journalctl
日志显示了这一点,但是中的值time.conf
没有效果:août 09 13:56:03 nixos unix_chkpwd[7965]: check pass; user unknown août 09 13:56:03 nixos unix_chkpwd[7965]: password check failed for user (root)
我尝试删除该
auth sufficient pam_unix.so …
行,并且 sudo 访问被禁止,甚至没有尝试输入密码,因此我知道/etc/pam.d/sudo
工作中发生了变化。但是pam_time.so
不能用作auth
模块(journalctl
日志抱怨缺少符号)。- 我尝试重新启动机器,但配置仍然被忽略。
答案1
问题可能出在两个通配符上。
sudo;*;*;!Al0830-1700
根据手册页它只能使用一次:“对于这些项目,简单通配符“*”只能使用一次。“
为了避免这种情况,你可以使用类似以下的方法:
sudo;*;!root;!Al0830-1700
这会将规则应用于每个用户(root 除外)。
编辑:划掉它,它在我的系统上运行良好。顺便说一句,你应该使用以下方法测试帐户堆栈:pamtester -v sudo username acct_mgmt