配置 Windows 服务可访问的 Samba 共享

配置 Windows 服务可访问的 Samba 共享

我正在尝试配置 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指令可能值得您付出努力。

相关内容