我正在尝试配置 Samba 服务器以允许访问在 Windows 服务器上运行的服务 (Oracle)。有一次我测试了它,它运行正常,没有问题,所以我没有备份我的配置文件 (grrr)。现在我一直在努力,但尝试什么都行不通。
我已经将 Windows 服务设置为以域用户身份登录,并以该用户身份登录到服务器,并且可以连接到 Samba 服务器,而无需提示我输入密码;然而,当我运行我的服务时,它会得到一个登录失败:未知的用户名或错误的密码。
编辑 #1 2010 年 12 月 9 日 1654 GMT/ 0954 MST
我升级到了 Samba v3.3.8-0.52.el5_5.2 并且最终获得了一些有用的日志,但是无论我做什么,我都无法让用户映射并正确进行身份验证。
日志档案:
[2010/12/09 09:57:52, 3] auth/auth.c:check_ntlm_password(220)
check_ntlm_password: Checking password for unmapped user [NATRONA]\[Administrator]@[NATRONA17] with the new password interface
[2010/12/09 09:57:52, 3] auth/auth.c:check_ntlm_password(223)
check_ntlm_password: mapped user is: [RMAN]\[Administrator]@[NATRONA17]
[2010/12/09 09:57:52, 3] smbd/sec_ctx.c:push_sec_ctx(224)
push_sec_ctx(0, 0) : sec_ctx_stack_ndx = 1
[2010/12/09 09:57:52, 3] smbd/uid.c:push_conn_ctx(440)
push_conn_ctx(0) : conn_ctx_stack_ndx = 0
[2010/12/09 09:57:52, 3] smbd/sec_ctx.c:set_sec_ctx(324)
setting sec ctx (0, 0) - sec_ctx_stack_ndx = 1
[2010/12/09 09:57:52, 3] smbd/sec_ctx.c:pop_sec_ctx(432)
pop_sec_ctx (0, 0) - sec_ctx_stack_ndx = 0
[2010/12/09 09:57:52, 3] auth/auth_sam.c:check_sam_security(282)
check_sam_security: Couldn't find user 'Administrator' in passdb.
[2010/12/09 09:57:52, 2] auth/auth.c:check_ntlm_password(318)
check_ntlm_password: Authentication for user [Administrator] -> [Administrator] FAILED with error NT_STATUS_NO_SUCH_USER
我的smbusers
文件中有设置映射:
root = administrator admin Administrator [NATRONA]\[Administrator] [RMAN]\[Administrator]
nobody = guest pcguest smbguest
我认为我的共享配置正确:
[recovery]
comment = Recovery Catalog Data
writeable = yes
public = yes
guest only = no
valid users = oracle,root,[NATRONA]\[Administrator]@[NATRONA17]
显然,Windows 服务器发送的用户名和 samba 服务器上的映射不匹配,我甚至尝试guest only = yes
强制使用 guest,但没有成功。
请一些 Samba 专家给我指出正确的方向。路径 = /db/recovery
答案1
事实证明,Samba 没有查看我的用户映射文件。正确的配置如下所示:
[global]
log file = /var/log/samba/log.%m
cups options = raw
load printers = no
guest account = oracle
printing = bsd
server string = Oracle Recovery Server
workgroup = UNIX
debug level = 5
username map = /etc/samba/smbusers
null passwords = yes
encrypt passwords = yes
security = user
passdb backend = tdbsam
max log size = 50
[recovery]
comment = Recovery Catalog Data
writeable = yes
public = yes
guest only = yes
guest ok = yes
valid users = oracle,root
path = /var/oracle_recovery_catalog
我还必须将我的oracle
用户设置为空密码:smbpasswd -an oracle
。
此配置甚至不需要我更改服务以在另一个帐户下运行。哇哦!
警告:这样做可以任何人读取/写入指定共享。我正在防火墙级别处理安全性;但是,如果您正在实施此解决方案,则应该使用某些东西,samba 支持的hosts allow
指令可能值得您付出努力。