免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5164 | 回复: 6
打印 上一主题 下一主题

[samba] 关于samba3.4的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-29 14:09 |只看该作者 |倒序浏览
5可用积分
我写了一个模拟samba客户端的程序,向smaba服务发送请求包和接受响应,
对于samba3.3.X及其以下的版本,好像都是可以登录成功的,但是对于samba3.4,
貌似就不行。查看samba的日志,提示:
[2009/07/27 22:29:37,  5] auth/token_util.c:548(debug_unix_user_token)
  UNIX token of user 0
  Primary group is 0 and contains 0 supplementary groups
[2009/07/27 22:29:37,  5] smbd/uid.c:368(change_to_root_user)
  change_to_root_user: now uid=(0,0) gid=(0,0)
[2009/07/27 22:29:37,  4] smbd/reply.c:675(reply_tcon_and_X)
  Client requested device type [?????] for share [workdir]
[2009/07/27 22:29:37,  1] smbd/service.c:1106(make_connection)
make_connection: refusing to connect with no session setup
[2009/07/27 22:29:37,  3] smbd/error.c:60(error_packet_set)
  error packet at smbd/reply.c(684) cmd=117 (SMBtconX) NT_STATUS_ACCESS_DENIED


谁能帮助我一下?
还有,谁知道哪里samba3.4用的通信协议可以下载?不生感激。

附件的包有两个文件:
smb_ok.log : smbclient连接连接samba服务,服务的日志
smb_err.log: 自己的程序连接samba服务,服务的日志

[ 本帖最后由 welkin 于 2009-7-29 14:16 编辑 ]

smb.log.tar

190 KB, 下载次数: 50

论坛徽章:
0
2 [报告]
发表于 2009-07-30 13:35 |只看该作者
没人知道么,急阿

论坛徽章:
0
3 [报告]
发表于 2009-07-30 13:48 |只看该作者

回复 #2 welkin 的帖子

资料比较少。看官网吧。

论坛徽章:
0
4 [报告]
发表于 2009-07-31 10:56 |只看该作者
我顶一下先。

论坛徽章:
0
5 [报告]
发表于 2009-08-17 09:58 |只看该作者
呵呵,自己解答吧。搞清楚了:
login的时候,客户端想samba服务发送SESSION_SETUP_ANDX的报文,服务端返回用户的uid,写在包头里(smb_head->Uid),在发送TREE_CONNECT_ANDX报文的时候,客户端要把服务段返回的uid写在包头里。

由于samba支持多个报文同时发送(即:smb_head + Command1pack + command2pack),但是服务段的程序在samba3.4和samba之前的版本中有区别,之前的版本会把第一个报文的处理结果记录下来,而samba3.4则不会。

于是乎,我同时发送了SESSION_SETUP_ANDX和REE_CONNECT_ANDX报文,由于发送报文之前uid我获得不了,所以写了0,在之前的版本中,会先处理SESSION_SETUP_ANDX报文,然后记录了uid,然后在处理REE_CONNECT_ANDX,所以是成功的。但是在samba3.4中,是不会记录uid的,所以失败了。
最后的修改方法就是,把SESSION_SETUP_ANDX和REE_CONNECT_ANDX报文分开发送,这样就可以了。
感觉上还应该有其他的方法,例如置标志位阿,等,可能我还没看出来。

论坛徽章:
0
6 [报告]
发表于 2010-04-01 10:42 |只看该作者
呵呵,自己解答吧。搞清楚了:
login的时候,客户端想samba服务发送SESSION_SETUP_ANDX的报文,服务端返回用户的uid,写在包头里(smb_head->Uid),在发送TREE_CONNECT_ANDX报文的时候,客户端要把服务段返回的uid写在包头里。

由于samba支持多个报文同时发送(即:smb_head + Command1pack + command2pack),但是服务段的程序在samba3.4和samba之前的版本中有区别,之前的版本会把第一个报文的处理结果记录下来,而samba3.4则不会。

于是乎,我同时发送了SESSION_SETUP_ANDX和REE_CONNECT_ANDX报文,由于发送报文之前uid我获得不了,所以写了0,在之前的版本中,会先处理SESSION_SETUP_ANDX报文,然后记录了uid,然后在处理REE_CONNECT_ANDX,所以是成功的。但是在samba3.4中,是不会记录uid的,所以失败了。
最后的修改方法就是,把SESSION_SETUP_ANDX和REE_CONNECT_ANDX报文分开发送,这样就可以了。
感觉上还应该有其他的方法,例如置标志位阿,等,可能我还没看出来。

论坛徽章:
0
7 [报告]
发表于 2010-04-01 11:17 |只看该作者
你也是自己提问,自己解决.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP