如何仅在三台 Linux 服务器中授予 openLDAP 用户登录权限

如何仅在三台 Linux 服务器中授予 openLDAP 用户登录权限

我有openldap( phpldapadmin) 将所有用户同步到 Linux Debian 服务器,如果我尝试将 LDAP 用户添加为 Linux 用户,我会收到错误用户已存在(我知道它无效)

aabuhasna@qa:/$ who am i
aabuhasna pts/1        2016-06-16 03:38 (XXXXX)
aabuhasna@qa:/$ sudo adduser aabuhasna
[sudo] password for aabuhasna:
adduser: The user `aabuhasna' already exists.
aabuhasna@qa:/$ cat /etc/passwd |grep aabuhasna
aabuhasna@qa:/$

如果openldap用户没有/bin/bash,那么loginshell他根本无法登录到任何服务器,我的问题是我希望用户只能使用他的 LDAP 信息访问三台服务器,

我的问题:

  • 我可以将用户添加到/etc/passwd作为让他登录的解决方法吗?如果可以,请建议正确的添加方法。
  • 如果选项一无效(将用户添加到/etc/passwd),是否有一个文件可以更改以使此用途例外。

答案1

我知道有两种方法可以实现您想要实现的目标。第一种是在每个单独的服务器上使用该pam_access模块来允许/禁止基于每个用户的访问。第二种是使用pam_check_host_attr中的指令/etc/pam_ldap.conf,在所有服务器上启用此功能,然后为用户应该能够登录的每个服务器创建与给定用户 ID 关联的属性:值对。

例如,在主机名“gargoyle”上启用此功能后,如果我希望用户ben能够登录该主机,则必须将属性/值对“host:gargoyle”添加到ben的 LDAP 条目中。

答案2

约翰的回答会起作用。

或者,或配置filter中的语句允许您通过随机 LDAP 过滤器过滤用户;例如,nss_ldapnslcd

filter passwd (|(uidNumber=1234)(gidNumber=1234))

此示例将仅定义当前计算机上具有 uid 或 gid '1234' 的用户。您可以在此处使用任何有效的 LDAP 过滤器。与约翰的解决方案的不同之处在于,这样,过滤掉的用户甚至不会存在于该服务器上(即,getent passwd对于这些用户将不返回任何内容)。

相关内容