我有一台 CentOS 服务器,已经运行了大约 10 年。每隔几年,我就会清理它,安装最新的 CentOS,并重新配置所有服务。显然,很多硬件也发生了变化。
这台机器直到最近还在运行带有 samba 3.x 的 CentOS 4,并充当 Windows XP 机器的小型办公网络的 PDC。我将其清除并安装了最新的 CentOS 6 和 samba 3.6.9。然后我复制了旧的配置文件并调整了所有testparm
有问题的内容。
一切似乎都运行良好——现有用户可以使用现有的 Windows 域登录到他们的 Windows 工作站。
以下是服务器设置的 testparm 转储:
[global]
workgroup = RRMSC_DOM
server string = RRM Primary Domain Controller Samba Server
interfaces = 192.168.231.0/24, 10.8.3.0/24
smb passwd file = /etc/samba/smbpasswd
passdb backend = smbpasswd
log file = /var/log/samba/smbd.log
max log size = 50
smb ports = 139
time server = Yes
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
printcap name = /etc/printcap
add machine script = /usr/sbin/adduser -n -g machines -c Machine -d /dev/null -s /bin/false %m$
logon script = logon.bat
logon path = \\%L\Profiles\%U
domain logons = Yes
os level = 255
preferred master = Yes
domain master = Yes
dns proxy = No
wins support = Yes
message command = /bin/mail -s 'message from #% on %M< %S; rm %S
idmap config * : backend = tdb
admin users = root, sdc
hosts allow = 192.168.231.0/24, 127.0.0.1, 10.8.3.0/24
cups options = raw
最近我添加了一个新用户吉姆。按照使用的标准程序useradd
添加此用户,并将他添加到与其他用户相同的 unix 组中。我用 设置他的 unix 密码,passwd
用 设置他的 samba 密码smbpasswd
。
然而,我发现吉姆无法登录办公室中的任何 Windows 工作站。在 Windows 工作站上,您会看到消息“登录失败:未知用户名或密码错误。”
我已经检查了 Windows 工作站上的 eventvwr,没有发现与登录失败相关的任何内容。
为了在 Linux 服务器端解决这个问题,我将 smb.conf 中的日志级别提高到
log level = 2 auth:10
我在日志中看到这一点:
[2013/05/14 20:28:21.994731, 5] auth/auth_util.c:211(make_user_info_map)
Mapping user [RRMSC_DOM]\[jim] from workstation [UNCONFINED]
[2013/05/14 20:28:21.994754, 5] auth/auth_util.c:122(make_user_info)
attempting to make a user_info for jim (jim)
[2013/05/14 20:28:21.994773, 5] auth/auth_util.c:132(make_user_info)
making strings for jim's user_info struct
[2013/05/14 20:28:21.994792, 5] auth/auth_util.c:164(make_user_info)
making blobs for jim's user_info struct
[2013/05/14 20:28:21.994811, 10] auth/auth_util.c:182(make_user_info)
made an encrypted user_info for jim (jim)
[2013/05/14 20:28:21.994829, 3] auth/auth.c:216(check_ntlm_password)
check_ntlm_password: Checking password for unmapped user [RRMSC_DOM]\[jim]@[UNCONFINED] with the new password interface
[2013/05/14 20:28:21.994851, 3] auth/auth.c:219(check_ntlm_password)
check_ntlm_password: mapped user is: [RRMSC_DOM]\[jim]@[UNCONFINED]
[2013/05/14 20:28:21.994882, 10] auth/auth.c:228(check_ntlm_password)
check_ntlm_password: auth_context challenge created by random
[2013/05/14 20:28:21.994901, 10] auth/auth.c:230(check_ntlm_password)
challenge is:
[2013/05/14 20:28:21.994921, 10] auth/auth.c:256(check_ntlm_password)
check_ntlm_password: guest had nothing to say
[2013/05/14 20:28:21.995773, 4] auth/auth_sam.c:180(sam_account_ok)
sam_account_ok: Checking SMB password for user jim
[2013/05/14 20:28:21.995816, 5] auth/auth_sam.c:162(logon_hours_ok)
logon_hours_ok: user jim allowed to logon at this time (Wed May 15 03:28:21 2013
)
[2013/05/14 20:28:21.996529, 5] auth/auth_util.c:649(make_server_info_sam)
make_server_info_sam: made server info for user jim -> jim
[2013/05/14 20:28:21.996573, 3] auth/auth.c:265(check_ntlm_password)
check_ntlm_password: sam authentication for user [jim] succeeded
[2013/05/14 20:28:21.996611, 5] auth/auth.c:291(check_ntlm_password)
check_ntlm_password: PAM Account for user [jim] succeeded
[2013/05/14 20:28:21.996630, 2] auth/auth.c:304(check_ntlm_password)
check_ntlm_password: authentication for user [jim] -> [jim] -> [jim] succeeded
[2013/05/14 20:28:21.996652, 5] auth/auth_util.c:2119(free_user_info)
attempting to free (and zero) a user_info structure
[2013/05/14 20:28:21.996670, 10] auth/auth_util.c:2123(free_user_info)
structure was created for jim
让我特别困惑的是有关 的消息authentication for use [jim] succeeded
。这似乎表明用户在服务器上正确登录,但他无法在工作站上登录。
那么有人能告诉我这里出了什么问题或者我应该在哪里进行故障排除吗?
请注意,我之前已在此机器上将 selinux 设置为禁用,因此这不是 selinux 问题。
答案1
一些网友认为这可能是某种缓存造成的。基于此,我决定尝试从域中删除一个工作站,然后重新添加。
成功了!我强制工作站清除域并重新添加后,用户 jim 终于可以登录了。哇!
答案2
我猜你需要做的就是使用以下命令禁用 SELinux此链接中概述了此方法。SELinux 可能不是 CentOS4 的一部分。有一种方法可以让 Samba 在启用 SELinux 的情况下工作,但这并不简单。