远程登录时,组与本地组不同


14

我们将用户存储在LDAP中,还有一些在不同系统中具有意义的组(包括在内的组织角色wheel)。也有工作站本地的组,例如,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

可能是什么问题,我将如何解决?我很高兴提供所需的其他信息。


/etc/nsswitch.conf看起来像group什么?输出是getent YOURUSERNAME什么?您的/etc/pam.d/sshd@include 是否包含common- {session,auth,password,account}?
eppesuig 2013年

您在客户端设置了哪些过程/步骤?
Rahul Patil

1
@Aurelien,当您具有“ shadow ldap”时,pam_unix会进行身份验证,以从nss检索密码信息。
斯特凡Chazelas

1
我认为您偏离了怀疑PAM的轨道。更有可能是NIS问题。PAM根本不了解分组。当sshd调用initgroups时,所有操作都通过libc完成。
尼古拉斯·威尔逊

1
实际上,我稍作修改:显然,某些模块挂接了pam_setcred调用以建立用户组,这就是sshd pam_setcred 之前调用initgroups的原因。嗯
Nicholas Wilson

Answers:


3

我今天振作起来,终于解决了。pam链像这样工作

  • /etc/pam.d/sshd 包括:
    • /etc/pam.d/system-remote-login 那包含着:
      • /etc/pam.d/system-login 那包含着:
        • /etc/pam.d/system-auth 有一个可选的要求

显然,由于某些原因,最后一个include无效。到目前为止,让我如此困惑的原因是,我相信这些功能会起作用,但事实并非如此。如果有人可以解释为什么我会非常感激。我知道这是因为如果我添加行

auth    optional  pam_group.so

进入/etc/pam.d/system-login工作原理。


1

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

请注意,如果混合使用不同的来源,则您最终可能会获得一个名称相同但UID不同(系统实际上在内部使用UID)或不同组的帐户。对于休闲的旁观者来说,结果通常是非常有趣的,而由于负责方的大量拉毛,导致过早的秃头。(到过那里。)


0

进入nsswitch.conf

    组:兼容ldap

afaik这称为getgrent,它获取组(组条目)

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

需要验证pam_group.so use_first_pass

了解更多信息,请看这里:将本地组分配给用户,也许这个newgrp-and-groups-as-via-pam-group-so


该行已经存在。
2013年

也许将其添加到您问题中的“来自nsswitch.conf的相关条目”中。
xx4h 2013年

完成,不幸的是,编辑没有帮助。
2013年

您做了什么,pam-auth-update并且重新启动了nscd?
xx4h 2013年

0

我有一个几乎类似的问题:使用ssh登录时,缺少一些组。通过更改/etc/nsswitch.conf已解决:

group:      compat  -> group:      files nis
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.