远程登录时的群组与本地群组不同

远程登录时的群组与本地群组不同

我们将用户以及一些跨不同系统有意义的组(包括组织角色wheel)存储在 LDAP 中。还有一些工作站本地的组,例如audiovideo希望放入 LDAP 中的组。现在,如果我在本地登录,我会得到这些本地组,但如果我通过 SSH 登录到同一台计算机,我就会缺少它们。如果我su之后直接使用,它们当然会回来。我可能走错了路,但怀疑 PAM。

相关条目来自nsswitch.conf

passwd:      compat ldap
shadow:      compat ldap
group:       compat ldap

至于pam,始终是auth行,但其他行是相同的

/etc/pam.d/sshd

auth            include         system-remote-login

/etc/pam.d/system-remote-login(与system-local-login我可能添加的相同)

auth            include         system-login

/etc/pam.d/system-login

auth            required        pam_tally2.so onerr=succeed
auth            required        pam_shells.so 
auth            required        pam_nologin.so 
auth            include         system-auth
auth            optional        pam_gnome_keyring.so

account         required        pam_access.so 
account         required        pam_nologin.so 
account         include         system-auth
account         required        pam_tally2.so onerr=succeed 

password        include         system-auth
password        optional        pam_gnome_keyring.so

session         optional        pam_loginuid.so
session         required        pam_env.so 
session         optional        pam_lastlog.so 
session         include         system-auth
session         optional        pam_gnome_keyring.so auto_start
session         optional        pam_motd.so motd=/etc/motd
session         optional        pam_mail.so

/etc/pam.d/su

auth       sufficient   pam_rootok.so
auth       required     pam_wheel.so use_uid
auth       include              system-auth

account    include              system-auth

password   include              system-auth

session    include              system-auth
session    required     pam_env.so
session    optional             pam_xauth.so

/etc/pam.d/common-auth:

auth    required     pam_group.so use_first_pass

可能是什么问题以及我该如何解决它?我很乐意提供所需的其他信息。

答案1

今天我鼓起勇气,终于解决了。 pam链的工作原理是这样的

  • /etc/pam.d/sshd包括:
    • /etc/pam.d/system-remote-login包括了:
      • /etc/pam.d/system-login包括了:
        • /etc/pam.d/system-auth其中有一个可选要求

显然最后一个包含由于某种原因不起作用。到目前为止我如此困惑的原因是我相信这些包含内容会起作用,但事实并非如此。如果有人能解释为什么我会非常感激。我知道这一点是因为如果我添加这一行

auth    optional  pam_group.so

然后/etc/pam.d/system-login它就可以工作了。

答案2

登录程序(设置您的环境,包括 UID、GID 和补充组)从某种数据库中获取有关用户名 <--> UID、GID 和用户名所属补充组的数据。传统上来自 /etc/passwd 和 /etc/groups 文件,现在也来自 LDAP。根据数据源的不同,您分配的组可能会有所不同。

请注意,如果混合不同的来源,您很可能会得到具有相同名称但不同 UID(系统实际上在内部使用 UID)的帐户,或不同的组集。结果通常是非常对于漫不经心的旁观者来说是一种娱乐,同时对于负责人来说,由于大量的拉扯头发而导致过早秃顶。 (到过那里。)

答案3

进入nsswitch.conf

    组:兼容 LDAP

据我所知,这调用了 getgrent,它获取组(组条目)

编辑:另一件事是将以下内容添加到/etc/pam.d/common-auth

需要身份验证 pam_group.so use_first_pass

欲了解更多信息,请查看此处:将本地组分配给用户也许这个newgrp-and-groups-通过-pam-group-so 分配

答案4

我遇到了几乎类似的问题:使用 ssh 登录时,某些组丢失了。通过更改 /etc/nsswitch.conf 已解决:

group:      compat  -> group:      files nis

相关内容