如何根据配置文件控制Linux机器上的用户登录

如何根据配置文件控制Linux机器上的用户登录

我使用 PAM 来验证用户登录

信息来自- http://linux.die.net/man/8/pam_listfile

在我的 Linux Red Hat 机器上,我有 5 个不同的用户

user1
user2
user3
user4
user5

我想仅对前三个用户启用 ssh 登录

所以

我创建了文件

more /etc/logins_users.txt

user1
user2
user3

我还补充sshd 配置文件文件如下

   auth required pam_listfile.so item=user onerr=fail sense=allow file=/etc/logins_user.txt

我重新启动了 sshd 服务

用户4用户5尽管没有在 logins_users.txt 文件中定义,但仍可以访问 Linux 计算机

我的配置有什么问题?

为什么用户4用户5尽管被封锁了,仍然有 ssh 登录访问权限???

答案1

你的配置没有任何问题。

/etc/pam.d/sshd像这样在第一行写下你的配置

#%PAM-1.0
需要身份验证 pam_listfile.so 项目 = 用户 onerr = 失败 感知 = 允许文件 = /etc/logins_user.txt
身份验证需要 pam_sepermit.so
auth 包括密码验证
需要帐户 pam_nologin.so
账户包含密码验证
密码包括密码验证
# pam_selinux.so close 应该是第一个会话规则
会话需要 pam_selinux.so 关闭
会话需要 pam_loginuid.so
# pam_selinux.so open 后面只能跟在用户上下文中执行的会话
会话需要 pam_selinux.so 打开 env_params
会话可选 pam_keyinit.so 强制撤销
会话包括密码验证

这是因为 PAM 将逐行检查所有这些配置,如果您将配置放在最后一行,则在检查您的条件之前,任何其他条件都将通过,这就是为什么所有用户都能够登录的原因。检查一下并告诉我。

尝试此操作时要小心

在更改任何内容之前,请先备份文件。

如果你像这样配置

需要身份验证 pam_listfile.so 项目 = 用户 onerr = 失败 感知 = 允许文件 = /etc/logins_user.txt
auth 包括密码验证
需要帐户 pam_nologin.so
会话包括密码验证

即使条件失败,PAM 仍会检查剩余规则。

如果你像这样配置

auth requisite pam_listfile.so item=user onerr=fail sense=allow file=/etc/logins_user.txt
auth 包括密码验证
需要帐户 pam_nologin.so
会话包括密码验证

如果上述条件失败,PAM 将不会检查剩余规则。

必需的

Failure also results in denial of authentication, although PAM will still call all the other modules listed for this service before denying authentication. 

必需品

Failure to authenticate via this module results in immediate denial of authentication. 

因此,在你的情况下可能低于给予许可的条件

auth 包括密码验证

您在 ssh 时输入了正确的密码。

相关内容