我试图configuration一个Samba服务器来允许访问在Windows服务器上运行的服务(Oracle)。 有一次我testing了这个,没有问题,所以我没有备份我的conf文件(grrr)。 现在我一直在与它斗争,没有任何我尝试会工作。
我有我的Windows服务设置作为域用户login,我作为该用户login到服务器,并可以连接到桑巴服务器,没有它提示我input密码; 但是,当我运行我的服务是获取login失败:未知的用户名或密码错误。
我升级到Samba v3.3.8-0.52.el5_5.2,并能够最终得到一些有用的日志,但是无论我做什么我都不能让用户映射和正确的身份validation。
日志文件:
[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
我想我的共享configuration正确:
[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 only = yes来试图强制guest,并且不起作用。
有些桑巴大师请指点正确的方向。 path = / db / recovery
原来桑巴没有看我的用户映射文件。 正确的configuration如下所示:
[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 。
这种configuration甚至不需要我改变服务在另一个帐户下运行。 WOO HOO!
警告:这样做可以让任何人读/写指定的共享。 我正在防火墙级别处理安全问题。 但是如果你正在实现这个解决scheme,你应该使用一些东西,samba支持一个hosts allow指令,这可能是值得你付出努力的。