这里的目标是创建一个脚本来轻松管理机器的预订。当用户预订机器时,它应该是给定时间内唯一能够访问机器的人(当然管理员除外)。
我已经找到了使用 PAM 的解决方案。下面这一行代码/etc/pam.d/sshd
就可以解决我的问题:
auth required pam_listfile.so item=user sense=allow file=/etc/ssh/sshd.allow onerr=fail
用户登录后/etc/ssh/sshd.allow
但它根本不起作用:
$ cat /etc/ssh/sshd.allow
foo
$ tail -f /var/log/auth.log
Dec 1 12:12:05 mini sshd[2697]: Accepted publickey for bar from 192.168.0.11 port 58087 ssh2
Dec 1 12:12:05 mini sshd[2697]: pam_unix(sshd:session): session opened for user bar by (uid=0)
这里的/etc/pam.d/sshd
文件
# PAM configuration for the Secure Shell service
auth required pam_env.so # [1]
auth required pam_env.so envfile=/etc/default/locale
auth required pam_listfile.so item=user sense=allow file=/etc/ssh/sshd.allow onerr=fail
@include common-auth
account required pam_nologin.so
@include common-account
@include common-session
session optional pam_motd.so # [1]
session optional pam_mail.so standard noenv # [1]
session required pam_limits.so
@include common-password
我正在运行 Debian Squeeze 盒子,我不知道 PAM 的行为是否与此不同。
答案1
与上面类似的想法:您可以在 sshd.conf 中使用 AllowGroups 来允许特定组(+ 管理员组),然后使用您的身份验证系统在该组中添加和删除用户,从而防止您编辑文件,或者至少只编辑具有完善界面的文件(通过 usermod 等的 /etc/group)。
答案2
为什么你没有在 /etc/ssh/sshd_config 中的 AllowUsers user1 user2 user3 部分中使用
答案3
您可以非常轻松地使用 pam_access 来实现此目的:
# /etc/pam.d/system-auth
account required pam_access.so
然后按如下方式控制谁有访问权限:
# /etc/security/access.conf
+ : root otheruser : ALL
- : ALL : ALL