我使用的是 Ubuntu 桌面 12.04,并使用 samba/winbind/krb5 将其加入域 - 运行良好,没有任何问题,我可以使用我的活动目录帐户登录我的计算机。我升级到 14.40,但似乎出现问题。似乎 14.04 已升级到 Samba4,我不确定这是否是问题所在。我对 smb.conf 文件进行了一些更改,这些更改似乎是 Samba4 更改 - 这使我能够使用 net ads join -U username 加入域 - 运行正常...我的计算机已加入域 - 我可以使用 kerberos 获取票证并查看它是否有效。但是,当我注销本地帐户并尝试使用域帐户重新登录时,它总是告诉我密码无效。有什么想法吗?在我的 smb.conf 文件上运行 testparm 后,它告诉我 idmap uid 和 idmap gid 不再使用……它还告诉我“security=ads”与“password server”组合不应该组合。我想知道这是否是问题所在。
编辑:可能与我的 pam.d 文件有关 - 我刚刚完成了 14.04 的全新安装,但无法登录......它甚至没有要求我输入密码......如果我返回到默认 pam 文件,这个问题就会消失 - 这是我所拥有的
/etc/pam.d/通用帐户:
account sufficient pam_winbind.so
account required pam_unix.so
/etc/pam.d/common-auth:
auth sufficient pam_winbind.so
auth required pam_unix.so nullok_secure use_first_pass
/etc/pam.d/通用密码:
password required pam_unix.so nullok obscure min=4 max=50 md5
/etc/pam.d/common-session:
session required pam_mkhomedir.so umask=0022 skel=/etc/skel
这是我的测试 /etc/samba/smb.conf:
[global]
workgroup = MYDOMAIN
security = ADS
realm = MYDOMAIN.COM
netbios name = trusty
idmap config *:backend = tdb
idmap config *:range = 70001-80000
idmap config MYDOMAIN:backend = ad
idmap config MYDOMAIN:schema_mode = rfc2307
idmap config MYDOMAIN:range = 500-40000
winbind nss info = rfc2307
[test]
path = /srv/samba/test
read only = no
这是我的 /etc/krb5.conf
[libdefaults]
default_realm = MYDOMAIN.COM
ticket_lifetime = 24000
allow_weak_crypto = yes
[realms]
MYDOMAIN.COM = {
kdc = my.domain.com
admin_server = my.domain.com
default_domain = MYDOMAIN.COM
}
[domain_realm]
.mydomain.com = MYDOMAIN.COM
mydomain.com = MYDOMAIN.COM
[login]
krb4_convert = true
krb4_get_tickets = false
/etc/nsswitch.conf
passwd: compat winbind
group: compat winbind
shadow: compat winbind
hosts: files mdns4_minimal [NOTFOUND=return] dns wins
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
编辑:最后一件事.....我注意到如果我输入 pam-auth-update,我看不到为 active directory 或 ldap 启用 pam 配置文件的功能...我发誓在 12.04 中有这个功能......?
答案1
做
getent passwd
还回什么吗?
怎么样
wbinfo -u
我正在做同样的事情,对我来说 wbinfo -u 有效,但 getent passwd 无效。我可以通过添加这些包来让 getent passwd 工作。
apt-get install libnss-winbind libpam-winbind
一旦 getent passwd 返回域用户,我就能够使用我的域凭据通过 ssh 进入机器。
答案2
我遇到了同样的问题,但通过一些黑客攻击我终于能够让它工作了。
添加 libnss-winbind 后 - getent passwd 起作用了,当我尝试以 AD 用户身份登录时出现了 setgid 错误。
所以我开始破解 smb.conf 文件。
我从正在运行的 12.04LTS 服务器复制了 smb.conf 文件,并做了一些小改动,它就起作用了。
这是我的 smb.conf。
[global]
allow trusted domains = Yes
workgroup = DOMAIN
server string = 'Test Server'
security = ads
realm = DOMAIN.COM
password server = 0.0.0.0
domain master = no
local master = no
preferred master = no
idmap backend = tdb
idmap uid = 10000-99999
idmap gid = 10000-99999
idmap config DOMAIN:backend = rid
idmap config DOMAIN:range = 10000-99999
winbind separator = +
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes
winbind nested groups = yes
winbind refresh tickets = yes
template homedir = /home/DOMAIN.COM/%U
template shell = /bin/bash
client use spnego = yes
client ntlmv2 auth = yes
encrypt passwords = true
restrict anonymous = 2
log file = /var/log/samba/log.%m
max log size = 50
答案3
apt-get install libnss-winbind libpam-winbind 对我来说也有效。
从 12.04 升级到 14.04 后,活动目录用户在尝试访问共享时会提示输入用户名和密码,并且他们的网络驱动器无法映射。运行上述命令和“service smbd restart”重新启动 samba 服务后,一切正常。用户重新启动后,他们的驱动器像往常一样映射。呼!