![getent passwd 仅输出本地用户](https://linux22.com/image/1375900/getent%20passwd%20%E4%BB%85%E8%BE%93%E5%87%BA%E6%9C%AC%E5%9C%B0%E7%94%A8%E6%88%B7.png)
我想要通过 CentOS 6.4 服务器上的 Active Directory 进行身份验证。
wbinfo -u
并wbinfo -g
显示域用户/组。通过wbinfo -a DOMAIN+user
works 进行身份验证。通过kinit user
works 进行身份验证。
但出于某种原因,getent passwd
只getent group
显示本地用户/组。我发现了很多关于这个主题的论坛帖子,但没有一个提供可行的解决方案。
这是我的/etc/samba/smb.conf
:
[global]
workgroup = DOMAIN
realm = DOMAIN.LOCAL
security = ADS
max log size = 50
template shell = /bin/bash
winbind separator = +
winbind enum users = Yes
winbind enum groups = Yes
winbind use default domain = Yes
idmap config DOMAIN : schema_mode = rfc2307
idmap config DOMAIN : range = 10000000-29999999
idmap config DOMAIN : default = yes
idmap config DOMAIN : backend = ad
idmap config * : range = 20000-29999
idmap config * : backend = tdb
/etc/krb5.conf
:
[libdefaults]
default_realm = DOMAIN.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
DOMAIN.LOCAL = {
kdc = ADSERVER.DOMAIN.LOCAL
admin_server = ADSERVER.DOMAIN.LOCAL
}
/etc/nsswitch.conf
:
passwd: files winbind
shadow: files winbind
group: files winbind
AD 服务器运行 Windows Small Business Server 2008。
答案1
我也遇到了同样的问题。就我而言,我忘记在 Ubuntu 上安装 libnss-winbind 和 libpam-winbind 包了。
希望这能帮助那些正在解决这个问题的人;)
答案2
我使用了backend = ad
,这需要在 AD 服务器上进行额外配置。我真正想要的是backend = rid
,现在一切都正常了。
答案3
以上方法在 CentOS 7 上都不起作用。解决问题的方法是打开
/etc/nsswitch.conf
并在后面加上以下几行:
passwd: files sss
shadow: files sss
group: files sss
使用“winbind”如下:
passwd: files sss winbind
shadow: files sss winbind
group: files sss winbind
保存对文件所做的更改后,所有以下命令:
id <AD user name>
getent passwd
getent group
开始工作。无需重新启动 smbd / nmbd / winbindd。
答案4
我就是这样解决问题的。
更改 /etc/samba/smb.conf
将 idmap 配置 *:backend = ab 更改为 idmap 配置 *:backend = tdb
这样就好了。
这是我的 smb.conf