我想要实现的是,如果我将 LDAP 中的用户属性更改为没有 shell;例如:/etc/noshell,我不希望用户成功 ssh。我已经更改了一个用户的属性:
# check62, people, wh.local
dn: uid=check62,ou=people,dc=wh,dc=local
uid: check62
cn: Johnny Appleseed
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword:: e1NTSEF9dklpL2pQcWtNWDBFSUs1eUVDMUMxL2FjWHdJNGRuUXY=
shadowLastChange: 15140
shadowMax: 99999
shadowWarning: 7
uidNumber: 6002
gidNumber: 6002
homeDirectory: /home/check62
loginShell: /bin/noshell
# check62, group, wh.local
dn: cn=check62,ou=group,dc=wh,dc=local
objectClass: posixGroup
objectClass: top
cn: check62
gidNumber: 6002
userPassword:: e0NSWVBUfXg=
这是我的 /etc/pam.d/sshd 文件
#%PAM-1.0
auth required pam_sepermit.so
auth include password-auth
account required pam_nologin.so
account include password-auth
password include password-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open env_params
session optional pam_keyinit.so force revoke
session include password-auth
用户使用 /bin/bash 成功验证身份。精彩绝伦。任何帮助都将不胜感激。
这是我的密码验证文件
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so
account required pam_unix.so broken_shadow
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_ldap.so
account sufficient pam_ldap.so
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3 type=
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password sufficient pam_ldap.so use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session required pam_unix.so
session optional pam_ldap.so
答案1
在 in之前放置files
或是一种常见的做法,但如果此人有本地帐户,它将覆盖 LDAP 设置。compat
ldap
/etc/nsswitch.conf
尝试这个:getent passwd check62
这将显示passwd
来自所有来源的该用户的数据库条目。如果最上面的条目包含/bin/bash
而不是/bin/noshell
,则您需要在服务器优先考虑的数据库中进行 shell 更改,或者调整顺序以首先显示 LDAP。后者通常不推荐。
(免责声明:如果您使用 PADLnss_ldap
而不是nss-pam-ldapd
,则将ldap
LDAP 放在第一位是一个更糟糕的想法,因为 LDAP 查找不会发送到守护进程,并且每个进程都必须处理 NSS 查找期间的超时。始终确保您知道当 LDAP 服务器无法访问时您的服务器将如何表现。)