分享
 
 
 

Samba HOWTO (2)

王朝other·作者佚名  2006-11-23
窄屏简体版  字體: |||超大  

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.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客户端进行打印

要从一台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只在客户明确要求时才生成锁定调用,但如果你设置了“strict locking = yes”选项的话,它会在每次读写时生成锁定调用。

你还可以使用“locking = no”完全禁止记录锁定。用于那些不支持或不需要锁定的共享项(如cdrom)。此时,Samba会向客户端返回一个伪造的代码。

第二种锁定叫“拒绝模式”。它是在应用程序打开文件并决定允许的访问类型时设置的。客户端可以请求的模式有DENY_NONE、DENY_READ、DENY_WRITE或DENY_ALL。另外还有特殊兼容模式DENY_FCB和DENY_DOS。

在那些负载沉重的、执行共享模式代码很慢的服务器上,可以用“share modes = no”选项禁止共享模式。如果你的操作系统支持的话,可以使用共享内存加快共享模式的执行,详情参见Makefile文件中的FAST_SHARE_MODES选项。

--------------------------------------------------------------------------------

1.10.6. 映射用户名

要映射PC及UNIX服务器的用户名,可以去看一下smb.conf中“username map”选项。详情参见smb.conf的手册页。

--------------------------------------------------------------------------------

1.10.7. 其它字符集

如果文件名使用重音字符(如德语、法语或斯堪的纳维亚语)有问题,那么最好去看一下smb.conf中的“valid chars”选项以及examples目录中的validchars软件包。

--------------------------------------------------------------------------------

Chapter 2. Samba 2.x中的LanMan和NT口令加密

2.1. 介绍

Samba兼容LanManager和Windows NT口令加密。

本文描述了SMB口令加密算法的工作原理,并给出了建议,请仔细阅读。

--------------------------------------------------------------------------------

2.2. 工作原理

LanManager加密与UNIX口令加密稍微有些相似。SMB服务器使用一个存放用户口令散列值的文件,该文件的建立过程为:取得用户的明文口令,将首字母转为大写,然后要么截短到,要么用空字节补足14个字节长。然后把这14个字节值作为两个56位的DES密钥,用来产生出一个‘魔术'8字节值,最后形成一个16字节的值,并由服务器及客户机保存,这就是“散列口令”。

Windows NT的加密机制就更高级了,它对用户口令的Unicode码进行MD4散列运算,而且也产生一个16字节的不可逆散列值。

当客户端(LanManager、Windows for WorkGroups、Windows 95或Windows NT)要装载一个Samba驱动器(或使用Samba资源),就先发出一个连接请求并与服务器协商要使用的协议。Samba服务器在回复时产生一个8字节的随机值(这个值称为“质询”),并把它发回客户端,然后再保存起来。注意,对于每个连接其质询都是不一样的。

然后,客户端对上述16字节散列口令再加上5个空字节,把结果作为三个56位的DES密钥,再用这三个密钥去加密8字节的质询值,最后形成一个24字节的“响应”值。

客户端通过SMB调用SMBsessionsetupX(当选用用户级安全时)或SMBtconX(当选用共享级安全时)把响应值发给Samba服务器。当使用Windows NT协议级时,用户口令的散列值与响应值都要经过上述的计算,并通过SMB调用发给服务器,所以就有两个24字节的值。

Samba服务器用自己保存的16字节散列口令值(从smbpasswd取得,该文件在后面描述)和质询值重复以上计算,然后检查计算结果与客户端提供的24字节值是否匹配。如果匹配,那么允许客户端进行访问,否则拒绝访问。

注意,Samba服务器不了解也不保存用户口令的明文值 - 只是用它来进行加密。同样,这个明文口令或散列值也不在网络上传输,这样就增强了安全性。

--------------------------------------------------------------------------------

2.3. 重要的安全性说明

从表面上看,UNIX和SMB的口令加密技术很相似,其实区别很大。在UNIX中,登录时通常通过网络发送明文口令,这很糟糕。而SMB加密机制虽然不通过网络发送明文口令,但它把16字节散列值保存在磁盘上,这也很糟糕。原因何在?因为该16字节散列值与“口令”等价:虽然不能从它那里得到用户的口令,但可以把它们用在一个经过修改的客户端程序中,以便访问服务器。虽然这需要一定的攻击技术,但却是完全可能的。所以请妥善保护smbpasswd。

当然了,理想的情况是,我们希望既不在网络上也不在磁盘上操作明文口令。遗憾的是这不可能,因为Samba要与其它SMB系统(Win、WfWg、Win95等)保持兼容。

警告

注意,Windows NT 4.0 Service pack 3改变了缺省的验证机制,不再在线发送明文口令。解决方法是,要么让Samba使用加密口令,要么编辑NT的注册表,重新允许使用明文口令。详情请参见WinNT.txt文档。

具有同样情况的微软操作系统还有:

安装了基本网络重定向功能的MS DOS Network client 3.0

更新了网络重定向功能的Windows 95

Windows 98 [se]

Windows 2000

注意:当前,微软所有的SMB/CIFS客户端都支持通过SMB质询/响应机制进行验证。允许使用明文口令并不会禁止客户参与加密验证的能力。

--------------------------------------------------------------------------------

2.3.1. SMB加密的好处

不通过网络传送明文口令。使用网络嗅探器无法记录传输的口令。

NT必须使用SMB加密口令同服务器进行通信。如果该服务器还在使用用户级安全模式,它会拒绝浏览服务器。它在每次连接时坚持要用户输入口令,当然这很烦人,而唯一的解决方法就是使用SMB加密。

--------------------------------------------------------------------------------

2.3.2. 非加密口令的好处

明文口令不保存的磁盘上。

可以使用与其它UNIX服务一样的口令,如login和ftp。

你可能已经使用了发送明文口令的其它服务(如te[1] [url=http://www.chinamx.com.cn/Article/os/Linux/200605/20060530122815_27878_2.html][2] [3] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有