当前位置:Linux教程 - Linux资讯 - Samba HOWTO (2)

Samba HOWTO (2)

  1.5. Step 4: 用testparm测试你的配置文件 用testparm程序测试smb.conf文件非常重要。如果testparm运行OK就会列出可装载的服务项,否则会给出出错信息。在继续之前请确保它运行OK,并且服务项都符合要求。 -------------------------------------------------------------------------------- 1.6. Step 5: 启动smbd和nmbd进程 你必须选择是以后台进程方式还是从inetd里启动smbd和nmbd,注意二者只能选其一。要么把它们放到inetd.conf,然后由inetd根据需要来启动;要么从命令行或从/etc/rc.local里以后台进程方式启动。参见手册页中有关的命令行选项,特别要注意的是启动Samba的账号,通常必须是root。 以后台进程方式启动smbd和nmbd的主要优势是,对初始化连接请求的响应要更快一点,不过这并不是个太大的问题。 -------------------------------------------------------------------------------- 1.6.1. Step 5a: 从inetd.conf启动 注意:如果你用NIS或NIS+来分发服务映射表的话,就会与以下方法有所不同。 找到/etc/services中所定义的端口139/tcp。如没有就把下面这行加进去: netbios-ssn 139/tcp 类似的,还应该有如下这样的端口137/udp定义: netbios-ns 137/udp 接着编辑/etc/inetd.conf并加入下面这两行: netbios-ssn stream tcp nowait root /usr/local/samba/bin/smbd smbd netbios-ns dgram udp wait root /usr/local/samba/bin/nmbd nmbd 各种UNIX版本中的/etc/inetd.conf其语法可能也不同。参考一下该文件中其它项目的格式。 注意:有些UNIX的/etc/services已经包含了诸如netbios_ns这样的项目(小心下划线)。你必须编辑/etc/services或者/etc/inetd.conf使它们一致。 注意:在很多系统上你必须使用smb.conf中的“interfaces”选项来指定系统接口的IP地址及掩码。如果你不知道网络的广播地址,请以root身份运行ifconfig。nmbd会在运行时尝试检测广播地址,但在有些系统上这样做就会失败。如有必要请参见“testing nmbd”部分获得查找方法。 !!!警告!!!多数UNIX的inetd.conf只接受大约5个命令行参数。也就是说你不应该在选项和参数间用太多空格,或者使用一个脚本并让它从inetd启动。 接着重新启动inetd,为此你只要给它发信HUP信号就可以了。如果你已安装了一个以前版本的nmbd,那还需要把它杀一下。 -------------------------------------------------------------------------------- 1.6.2. Step 5b. 可选法:以后台进程启动 要以后台进程方式来启动服务器,应该创建一个如下这样的脚本,并起名为诸如startsmb。   #!/bin/sh /usr/local/samba/bin/smbd -D /usr/local/samba/bin/nmbd -D 然后用chmod +x startsmb这个命令使它可执行。当然你可以手工运行startsmb或者从/etc/rc.local启动。给nmbd和smbd各发一个杀进程信号就可以使它们停止运行。 注意:如果你用的是SVR4风格的init系统的话,可以改一下examples/svr4-startup这个脚本以使它适用于你的系统。 -------------------------------------------------------------------------------- 1.7. Step 6: 尝试列出服务器可获得之共享项 $ smbclient -L yourhostname 用上面这个命令,就可以得到一份服务器上可获得的共享项列表,不然的话就是设置上出了什么问题。注意,这个方法也可以用于查看其它LanManager客户端(如WfWg)可获得的共享信息。 如果选用了用户级安全,则Samba会在列出共享列表前要求你输入口令。详情请参见smbclient的手册页。(你可以在命令行上加入选项-U%来强迫它列出共享列表,但对于非Samba服务器就不能这么做了。) --------------------------------------------------------------------------------
[1] [2] [3] 下一页 

1.8. Step 7: 尝试从UNIX客户端建立连接 $ smbclient //yourhostname/aservice 命令中的yourhostname应该是安装了smbd程序的主机名。而aservice就是在smb.conf文件中定义了的服务项。如果在smb.conf中定义了[homes]段的话可以试着用你的用户名来连接。例如,如果你的UNIX主机是bambi,而你的用户名是fred的话,该命令就应该是: $ smbclient //bambi/fred -------------------------------------------------------------------------------- 1.9. Step 8: 尝试从DOS、WfWg、Win9x、WinNT、Win2k、OS/2及其它客户端建立连接 要装载磁盘的话: C:\WINDOWS\> net use d: \\servername\service 要打印的话: C:\WINDOWS\> net use lpt1: \\servername\spoolservice C:\WINDOWS\> print filename 至此,你已经安装成功,否则请向我汇报bug! -------------------------------------------------------------------------------- 1.10. 如不工作咋办? 如果你万事不顺并开始考虑“是谁写了这一大堆的垃圾”的话,我建议你再做一次step 2(或多次),直到你平静下来。 然后你可以去读一下DIAGNOSIS.txt和FAQ。如果还是卡住的话请试一下邮件列表和新闻组(详情参见README)。Samba已经在世界上数千个站点成功安装,所以可能已经有人已经遇到并解决了你的问题。你还可以到WWW站点去查一下Samba-digest发布的消息。 当你修正了什么问题,请给我发回更新的文档或源代码,以方便后来人。 -------------------------------------------------------------------------------- 1.10.1. 诊断问题 如果你有安装方面的问题请参考DIAGNOSIS.txt,看看能否找到该问题。 -------------------------------------------------------------------------------- 1.10.2. 范围ID 缺省情况下Samba会用一个空的范围ID。这样的话,所有的windows机器也必须有一个空范围ID。如果你真想用非空的范围ID,就需要在nmbd、smbd和smbclient命令中使用-i 选项,不过这样一来所有的机器都必须具有相同的设定。不推荐使用范围ID。 -------------------------------------------------------------------------------- 1.10.3. 选择协议级别 SMB协议有很多别名,现在Samba支持5种,它们分别是CORE、COREPLUS、LANMAN1、LANMAN2和NT1。 你可以在smb.conf文件中选择支持最高级的协议。缺省为NT1,对大多数站点来说这是最合适的。 以前一些版本的Samba必须使用COREPLUS,现在已经修正了这种限制,而且已经不太需要使用低于LANMAN1的协议了。保留COREPLUS只是兼容一些少数情况,如WfWg要在该协议中保持口令的大小写格式,而在LANMAN1、LANMAN2或NT1下所有的口令在被发送前都转换为大写,所以在某些情况下你可能要强制使用“passWord level=”选项。 使用LANMAN2和NT1主要的好处是支持一些客户的长文件名(如smbclient、Windows NT或Win95)。 详情请参见smb.conf(5)手册页。 注意:如要支持打印队列报表,则在WfWg下必须用TCP/IP作为缺省协议。如果在有些系统上把NetBEUI作为缺省的话,就会打断打印队列报表,这大概是WfWg的一个bug。 -------------------------------------------------------------------------------- 1.10.4. 从UNIX向PC客户端进行打印
上一页 [1] [2] [3] 下一页 

要从一台UNIX主机使用smb服务器上的打印机,就需要编译smbclient程序。然后还需要安装“smbprint”脚本。详情请阅读smbprint的使用说明。 另外还有一个具有同样功能的SYSV风格脚本smbprint.sysv,它也有使用说明。 -------------------------------------------------------------------------------- 1.10.5. 锁定 有时锁定会产生一些麻烦。 SMB服务器要实现两种类型的锁定。第一种是“记录锁定record locking”,它允许一个客户锁定一个打开文件的一段字节;第二种就是“拒绝模式deny modes”(译者注:也称“共享模式”),它在打开文件时指定的。 Samba使用UNIX系统调用fcntl()来支持“记录锁定”。而通常实现的方法是用rpc来调用服务器上运行的rpc.lockd进程。不幸的是rpc.lockd实现问题太多了,特别是要与其他版本进行对话的情况。rpc.lockd崩溃并不是什么稀罕事儿。 还有一个问题是,把PC客户端产生的32位锁定请求转换为多数UNIX所支持的31位请求。但很多PC应用程序(典型的如OLE2应用)使用字节范围(其中最高位为标志位)的方式进行工作。Samba尝试通过转换来支持这类应用程序,并且这样的转换被证明是相当成功的。 严格意义上的SMB服务器应该在每次读写被调用文件之前检查其锁定情况。但fcntl()按上述方式来工作速度可能比较慢,而且会使rpc.lockd过载。当然这几乎也是不必要的,如果锁定对客户来说非常重要的话,他们应该在读写之前独立生成锁定调用。缺省情况下,Samba只在客户明确要求时才生成锁定调用,

(出处:http://www.sheup.com)


上一页 [1] [2] [3] 

Samba使用UNIX系统调用fcntl()来支持“记录锁定”。而通常实现的方法是用rpc来调用服务器上运行的rpc.lockd进程。不幸的是rpc.lockd实现问题太多了,特别是要与其他版本进行对话的情况。rpc.lockd崩溃并不是什么稀罕事儿。 还有一个问题是,把PC客户端产生的32位锁定请求转换为多数UNIX所支持的31位请求。但很多PC应用程序(典型的如OLE2应用)使用字节范围(其中最高位为标志位)的方式进行工作。Samba尝试通过转换来支持这类应用程序,并且这样的转换被证明是相当成功的。 严格意义上的SMB服务器应该在每次读写被调用文件之前检查其锁定情况。但fcntl()按上述方式来工作速度可能比较慢,而且会使rpc.lockd过载。当然这几乎也是不必要的,如果锁定对客户来说非常重要的话,他们应该在读写之前独立生成锁定调用。缺省情况下,Samba只在客户明确要求时才生成锁定调用,

(出处:http://www.sheup.com/)


上一页 [1] [2] [3] [4]