首页 Samba-HOWTO-Collection

Samba-HOWTO-Collection

举报
开通vip

Samba-HOWTO-Collection Samba计划文档 (初稿) Samba小组 编译:meaculpa 中文译稿声明: 该文档是Samba软件的一部分,受GNU GPL保护,使用时请注意版权问题;由于译者水平有 限,错误之处在所难免,希望各位读者来信指正,由此产生的一切后果,本人概不负责。 概要 本文档汇集了Samba文档历年来的HOWTOs。我试图确保所有内容都是最新的,但有时一个人维 护不了这么大的项目。你可以在http://www.samba.org/的“Documentation”找到这份文档 的最新版本,有更新的...

Samba-HOWTO-Collection
Samba计划文档 (初稿) Samba小组 编译:meaculpa 中文译稿声明: 该文档是Samba软件的一部分,受GNU GPL保护,使用时请注意版权问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 ;由于译者水平有 限,错误之处在所难免,希望各位读者来信指正,由此产生的一切后果,本人概不负责。 概要 本文档汇集了Samba文档历年来的HOWTOs。我试图确保所有 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 都是最新的,但有时一个人维 护不了这么大的项目。你可以在http://www.samba.org/的“Documentation”找到这份文档 的最新版本,有更新的话寄给jerry@samba.org。 干杯,jerry 目录表 1. 如何安装并测试Samba 1.1. Step 0: 阅读手册页 1.2. Step 1: 编译二进制 1.3. Step 2: 所有关键步骤 1.4. Step 3: 建立配置文件 1.5. Step 4: 用testparm测试你的配置文件 1.6. Step 5: 启动smbd和nmbd进程 1.6.1. Step 5a: 从inetd.conf启动 1.6.2. Step 5b. 可选法:以后台进程启动 1.7. Step 6: 尝试列出服务器可获得之共享项 1.8. Step 7: 尝试从UNIX客户端建立连接 1.9. Step 8: 尝试从DOS、WfWg、Win9x、WinNT、Win2k、OS/2及其它客户端建立连接 1.10. 如不工作咋办? 1.10.1. 诊断问题 1.10.2. 范围ID 1.10.3. 选择 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 级别 1.10.4. 从UNIX向PC客户端进行打印 1.10.5. 锁定 1.10.6. 映射用户名 1.10.7. 其它字符集 2. Samba 2.x中的LanMan和NT口令加密 2.1. 介绍 2.2. 工作原理 2.3. 重要的安全性说明 2.3.1. SMB加密的好处 2.3.2. 非加密口令的好处 2.4. smbpasswd文件 2.5. smbpasswd命令 2.6. 设定Samba支持LanManager加密 页码,1/40Samba计划文档 (初稿) 2012-8-9http://www.linuxforum.net/doc/Samba-HOWTO-Collection.html 3. 在Samba中配置微软分布式文件系统树 3.1. 介绍 3.1.1. 说明 4. Samba 2.2.x中的打印支持 4.1. 介绍 4.2. 配置 4.2.1. 建立[print$]项 4.2.2. 为现有打印机设定驱动程序 4.2.3. 支持大量打印机 4.2.4. 通过Windows NT APW添加新打印机 4.2.5. Samba和打印机端口 4.3. Imprints工具包 4.3.1. 什么是Imprints? 4.3.2. 建立打印机驱动程序包 4.3.3. Imprints服务器 4.3.4. 客户端安装程序 4.4. 从Samba 2.0.x向2.2.x迁移 5. Samba 2.x中的security = domain选项 5.1. 把Samba 2.2添加到NT域 5.2. Samba和Windows 2000域 5.3. 为什么比security = server选项更好? 6. 把Samba 2.2配置成主域控制器 6.1. 说明 6.2. 配置Samba域控制器 6.3. 建立机器信任账号并把客户添加到域中 6.4. 常见问题及错误 6.5. 系统策略及配置文件 6.6. 其它可获得的帮助 6.6.1. 链接及类似资源 6.6.2. 邮件列表 6.7. DOMAIN_CONTROL.txt:Samba & Windows NT域控制 7. 用Winbind在Windows NT与UNIX间进行统一登录 7.1. 概要 7.2. 介绍 7.3. Winbind的功能 7.3.1. 使用目标 7.4. winbind如何工作 7.4.1. Microsoft远程过程调用 7.4.2. 名字服务切换 7.4.3. 可插式验证模块 7.4.4. 用户及组ID的分配 7.4.5. 缓存结果 7.5. 安装及配置 7.6. 限制 7.7. 结语 8. UNIX权限位和Windows NT访问控制表 8.1. 用NT安全对话框浏览和修改UNIX权限 8.2. 如何浏览Samba共享项上的文件权限 8.3. 浏览文件所有权 8.4. 浏览文件或目录权限 8.4.1. 文件权限 8.4.2. 目录权限 8.5. 修改文件或目录权限 页码,2/40Samba计划文档 (初稿) 2012-8-9http://www.linuxforum.net/doc/Samba-HOWTO-Collection.html 8.6. 使用创建掩码选项 8.7. 使用文件属性映射 9. OS2客户HOWTO 9.1. 常见问答集 9.1.1. 如何把OS/2 Warp Connect或OS/2 Warp 4配置成Samba的客户端? 9.1.2. 如何把How can I configure OS/2 Warp 3 (非Connect版)、OS/2 1.2、 1.3或2.x配置成Samba的客户端? 9.1.3. 把OS/2(任何版本)作为客户端还有其它的问题吗? 9.1.4. 如何让OS/2客户下载打印机驱动程序呢? 10. 中文翻译版致谢 第1章. 如何安装并测试Samba 1.1. Step 0: 阅读手册页 Samba发布版中所带的手册页包含了大量有用的信息,如果你不知道怎样阅读它们,可以试试 下面的命令: $ nroff -man smbd.8 | more 在Samba的网站http://www.samba.org可以找到其它的资源。 1.2. Step 1: 编译二进制 先运行source目录中的./configure 程序。它会自动根据你的操作系统情况来对Samba进行配 置,如果你有特殊要求可以运行: root# ./configure --help 这样就可以看到想要的特殊选项。然后,再执行: root# make 这样就开始创建二进制程序。当编译成功你就可以用: root# make install 来安装二进制程序和手册页了。还可以用下面的命令分别安装二进制程序和/或手册页: root# make installbin 和 root# make installman 注意,如果你正在对以前的版本进行升级,那么原来老版本的二进制程序已经更名为带 “.old”扩展了。如果你发现当前版本有问题,可以用下面的命令退回到以前的版本: 页码,3/40Samba计划文档 (初稿) 2012-8-9http://www.linuxforum.net/doc/Samba-HOWTO-Collection.html root# make revert 1.3. Step 2: 所有关键步骤 在这一步你必须为自己准备好一杯咖啡或其它刺激性的饮料。安装过程有时很复杂,所以可 能会需要这样的东西。如果你以前安装过Samba则可以跳过这一步。 1.4. Step 3: 建立配置文件 在发布包的examples子目录里有一份配置文件的样本。我建议你仔细阅读这个文件,看看各 选项在实际使用中是如何搭配的。所有选项的信息请参见手册页。 下面是最简单实用的配置文件: 通过这样的配置,服务器上的用户只要用他们的账号就可能通过服务器与自己的主目录进行 连接。(注意工作组也可以设置为Samba要加入的工作组名,请参见BROWSING.txt中的内容) 注意用make install不会安装smb.conf文件,你需要自己建立这个文件。(可以从发布包的 examples/子目录里拷嘛) 然后把这个文件放到Makefile文件中指定的相应目录里(缺省查找/usr/local/samba/lib/目录)。 关于设置[homes]共享项的安全性请参考UNIX_SECURITY.txt文件。 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。 [global] workgroup = MYGROUP [homes] guest ok = no read only = no 页码,4/40Samba计划文档 (初稿) 2012-8-9http://www.linuxforum.net/doc/Samba-HOWTO-Collection.html 以后台进程方式启动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并加入下面这两行: 各种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。 然后用chmod +x startsmb这个命令使它可执行。当然你可以手工运行startsmb或者 从/etc/rc.local启动。给nmbd和smbd各发一个杀进程信号就可以使它们停止运行。 netbios-ssn stream tcp nowait root /usr/local/samba/bin/smbd smbd netbios-ns dgram udp wait root /usr/local/samba/bin/nmbd nmbd #!/bin/sh /usr/local/samba/bin/smbd -D /usr/local/samba/bin/nmbd -D 页码,5/40Samba计划文档 (初稿) 2012-8-9http://www.linuxforum.net/doc/Samba-HOWTO-Collection.html 注意:如果你用的是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! 页码,6/40Samba计划文档 (初稿) 2012-8-9http://www.linuxforum.net/doc/Samba-HOWTO-Collection.html 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。 页码,7/40Samba计划文档 (初稿) 2012-8-9http://www.linuxforum.net/doc/Samba-HOWTO-Collection.html 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的手册页。 页码,8/40Samba计划文档 (初稿) 2012-8-9http://www.linuxforum.net/doc/Samba-HOWTO-Collection.html 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服务器不了解也不保存用户口令的明文值 - 只是用它来进行加密。同样,这个 明文口令或散列值也不在网络上传输,这样就增强了安全性。 页码,9/40Samba计划文档 (初稿) 2012-8-9http://www.linuxforum.net/doc/Samba-HOWTO-Collection.html 2.3. 重要的安全性说明 从表面上看,UNIX和SMB的口令加密技术很相似,其实区别很大。在UNIX中,登录时通常通过 网络发送明文口令,这很糟糕。而SMB加密机制虽然不通过网络发送明文口令,但它把16字节 散列值保存在磁盘上,这也很糟糕。原因何在?因为该16字节散列值与“口令”等价:虽然 不能从它那里得到用户的口令,但可以把它们用在一个经过修改的客户端程序中,以便访问 服务器。虽然这需要一定的攻击技术,但却是完全可能的。所以请妥善保护smbpasswd。 当然了,理想的情况是,我们希望既不在网络上也不在磁盘上操作明文口令。遗憾的是这不 可能,因为Samba要与其它SMB系统(Win、WfWg、Win95等)保持兼容。 2.3.1. SMB加密的好处 z 不通过网络传送明文口令。使用网络嗅探器无法记录传输的口令。 z NT必须使用SMB加密口令同服务器进行通信。如果该服务器还在使用用户级安全模式, 它会拒绝浏览服务器。它在每次连接时坚持要用户输入口令,当然这很烦人,而唯一的 解决方法就是使用SMB加密。 2.3.2. 非加密口令的好处 z 明文口令不保存的磁盘上。 z 可以使用与其它UNIX服务一样的口令,如login和ftp。 z 你可能已经使用了发送明文口令的其它服务(如telnet和ftp),所以多加一个也无关紧 要。 警告 注意,Windows NT 4.0 Service pack 3改变了缺省的验证机制,不再在线发送明文口令。 解决方法是,要么让Samba使用加密口令,要么编辑NT的注册表,重新允许使用明文口令。 详情请参见WinNT.txt文档。 具有同样情况的微软操作系统还有: z 安装了基本网络重定向功能的MS DOS Network client 3.0 z 更新了网络重定向功能的Windows 95 z Windows 98 [se] z Windows 2000 注意:当前,微软所有的SMB/CIFS客户端都支持通过SMB质询/响应机制进行验证。允许使 用明文口令并不会禁止客户参与加密验证的能力。 页码,10/40Samba计划文档 (初稿) 2012-8-9http://www.linuxforum.net/doc/Samba-HOWTO-Collection.html 2.4. smbpasswd文件 为了使Samba使用上述那些协议,必须查找用户名的16字节散列值。不幸的是,由于UNIX口令 值也是通过散列功能来实现的,因此必须使用一个单独的口令文件smbpasswd存放这个16字节 值。同时使用两个口令文件就应该避免同步问题。你可以用一个叫mksmbpasswd.sh的工具从 UNIX的/etc/passwd文件产生一个smbpasswd文件,如: $ cat /etc/passwd | mksmbpasswd.sh > /usr/local/samba/private/smbpasswd 如果你使用了NIS系统,就用: $ ypcat passwd | mksmbpasswd.sh > /usr/local/samba/private/smbpasswd 我们把mksmbpasswd.sh程序放在Samba包的source目录中。而smbpasswd文件缺省情况是保存 在以下目录的: /usr/local/samba/private/smbpasswd 这里的/usr/local/samba/private/目录应该属于root,并且它的权限应是0500(chmod 500 /usr/local/samba/private)。 同样,这个目录里的smbpasswd文件也应属于root,且具有权限0600(chmod 600 smbpasswd)。 smbpasswd文件的格式如下(这里已被换行,在文件中应该是每项占一行): 其中,Samba只使用username、uid、XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX、[Account type]和last- change-time这几项。 这里XXX段中两个冒号‘:’之间的32个‘X’字符极其重要,如果冒号间的字符不足32个,那 么Samba对该账号的验证将会失败。其中第一个XXX段用于Lanman口令散列,而第二个则是 Windows NT版本。 这个口令文件在建立时,所有用户的口令都是有32个‘X’字符。这样就禁止了用户对服务器 的访问。当用户设置了口令后,‘X’字符改变为32个ascii十六进制值,用来表示其口令的 16字节散列值。 要把用户口令设为空的话(不推荐),可以用vi编辑该文件并用“NO PASSWORD”这样的ascii 文本替换头11个字符(不带引号)。 例如,把bob的口令清除之后,他的账号项应该如下: 如果你想让用户用smbpasswd命令设置他们自己的口令,就可以用NO PASSWORD来初始化他/她 的口令项,这样他们在更改新口令时就不必输入旧口令了(不推荐,这不安全)。不过,必须 username:uid:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:\ [Account type]:LCT-:Long name bob:100:NO PASSWORDXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:\ [U ]:LCT-00000000:Bob's full name:/bobhome:/bobshell 页码,11/40Samba计划文档 (初稿) 2012-8-9http://www.linuxforum.net/doc/Samba-HOWTO-Collection.html 让用户不提供口令也可以用smbpasswd程序连接到smbd进程,为此,你只要在smb.conf文件的 [global]段中加入以下内容: null passwords = yes 更安全的做法应该是为用户分配一个缺省口令而不是采用上述方法。 注意:要小心保护smbpasswd文件。如果有人可以接触这个文件,那他(具有足够的协议知识) 就可以访问你的SMB服务器(要有足够的协议知识)。 2.5. smbpasswd命令 使用smbpasswd命令可以维护smbpasswd文件中的两个32字节口令字段。我们通常把它安装 在/usr/local/samba/bin/目录中(或者你的主Samba二进制程序目录)。 注意,在Samba 1.9.18p4中,不要把这个程序配置为可以setuid到root身份(新版smbpasswd 代码已经限制这个操作,不用担心会被意外地按这种方式运行)。 现在,smbpasswd程序以客户机/服务器模式工作,它作为客户端连接本地smbd,然后更改用 户口令。所以,它就有下面这些优点: z smbpasswd不再被setuid到root身份 - 消除了大部分的安全问题。 z 现在,smbpasswd可以更改Windows NT服务器上的口令(在更改NT域用户口令时只能将请 求发给NT主域控制器)。 普通用户运行smbpasswd程序只要打: $ smbpasswd Old SMB password: <在此键入旧口令 - 如没有旧口令则打回车> New SMB Password: <键入新口令> Repeat New SMB Password: <重复输入> 如果旧口令输入有问题,或者两个新口令不匹配,就无法更改口令。 如果是以普通用户调用该程序,只能更改其自身的Samba口令。 如果是以root用户运行,就可以使用选项来指定要更改口令的用户。注意,smbpasswd不会提 示或检查旧口令,因此可以用它来为忘记口令的用户重新分配口令。 对于熟悉UNIX的用户来说,smbpasswd的工作方法与使用passwd或yppasswd命令类似。 关于这个程序的详情请参见它的手册页。 页码,12/40Samba计划文档 (初稿) 2012-8-9http://www.linuxforum.net/doc/Samba-HOWTO-Collection.html 2.6. 设定Samba支持LanManager加密 下面简要描述一下如何来设定Samba,使它支持LanManager加密: 1. 先编译安装好Samba。 2.   在smb.conf文件的[global]段中加入encrypt passwords = yes选项,打开口令加密功 能。 3.   在Makefile文件指定的目录(--prefix=)中建立一份原始的smbpasswd口令文件。参 见前面smbpasswd文件部分的详情。 提示 春节期间物业温馨提示小区春节期间温馨提示物业小区春节温馨提示春节物业温馨提示物业春节期间温馨提示 ,完成之后可以用smbclient工具来测试一下。 Chapter 3. 在Samba中配置微软分布式文件系 统树 3.1. 介绍 使用分布式文件系统(DFS)可以把用户查看的文件、目录的逻辑视图与相应网络资源的物理位 置隔离。它具有更高的可靠性、更透明的存储扩展性以及负载均衡等特点。有关DFS的详细资 料可以在微软文档中找到。 本文描述了如何使用Samba在UNIX主机中实现分布式文件系统树(用支持DFS的客户端进行连 接)。 要打开DFS功能,可以用--with-msdfs选项对Samba进行配置,当编译完成后,可以在smb.conf文 件中设置全局选项host msdfs使Samba成为DFS服务器。然后再使用共享选项msdfs root指定一个 共享项作为DFS根目录,这个目录用符号链接的形式来连接其它服务器。例如,在根共享目录 中有一个符号链接junction->msdfs:storage1\share1,它表示一个DFS结点。当支持DFS的客户端 访问这样的结点链接时,就会被重定向到实际的存储位置(在此例中为\\storage1\share1)。 Samba的DFS系统可以同所有支持DFS的客户端(从Windows 95到2000)一起工作。 以下举例说明如何把Samba设置为DFS服务器。先建立如下这样的smb.conf文件 [global] netbios name = Samba host msdfs = yes [dfs] path = /export/dfsroot msdfs root = yes 页码,13/40Samba计划文档 (初稿) 2012-8-9http://www.linuxforum.net/doc/Samba-HOWTO-Collection.html 在/export/dfsroot目录中,我们设置一些指到其它网络服务器的DFS链接。 root# cd /export/dfsroot root# chown root /export/dfsroot root# chmod 755 /export/dfsroot root# ln -s msdfs:storageA\\shareA linka root# ln -s msdfs:serverB\\share,serverC\\share linkb 你应该为DFS根目录设置一定的权限,这样,只有指定的用户才能建立、删除或修改DFS链 接。另外还要注意,符号链接名应该全部用小写。通过这样的限制,Samba就不会对链接名尝 试所有的大小写组合形式。最后,设置符号链接使其指向需要的网络共享,然后重启Samba。 在支持DFS的客户端,用户可以通过\\samba\dfs来浏览服务器上的DFS树。当访问linka或 linkb(客户端显示的目录)时,就会立即转到相应的网络共享之上。 3.1.1. 说明 z 如果Windows客户端已经装载的非DFS共享现在被用作了DFS根目录的话,就需要重新启 动,反之亦然。其实,你应该用一个新的共享项作为DFS根目录。 z 当前,DFS符号链接名必须全部使用小写字母。 z 出于安全目的,作为DFS根的目录应该设置合适的权限,只允许指定的用户修改目录中 的符号链接。 Chapter 4. Samba 2.2.x中的打印支持 4.1. 介绍 在2.2.0版本中,Samba使用MS-RPC(例如SPOOLSS命名管道)实现了本地Windows NT打印机制。 以前的版本只支持LanMan打印调用。 新的SPOOLSS还提供了以下的额外功能: z 根据需要,支持Windows 95/98/NT/2000客户端下载打印机驱动程序。 z 使用Windows NT添加打印机向导(APW)或Imprints工具包(参考 http://imprints.sourceforge.net)上传打印机驱动程序。 z 支持本地MS-RPC打印调用,如StartDocPrinter、numJobs()等等(关于Win32打印API的 详情请参考MSDN文档http://msdn.microsoft.com/)。 z 支持打印对象的访问控制表(ACL)。 页码,14/40Samba计划文档 (初稿) 2012-8-9http://www.linuxforum.net/doc/Samba-HOWTO-Collection.html z 通过使用内部信息数据库来保存脱机任务信息,更好地支持打印队列操作。 注意,Windows NT/2000客户端要求Samba服务器为打印机分配一个合法的驱动程序。为此, 就要考虑支持MSRPC打印调用以;而Windows 9x客户端无须Samba主机安装打印机的驱动程 序。而且,Samba也不使用这些驱动程序来处理假脱机文件,驱动程序完全是客户端使用的。 4.2. 配置 4.2.1. 建立[print$]项 为了上传打印机驱动程序文件,你必须先配置共享项[print$]。注意,它的名称很重要 (print$是Windows NT打印服务器用来提供打印机驱动程序下载的服务项),别写错了。你可 以参考一下下面这个例子(当然,有些选项值,如‘path’是任意的,可以用适当的值进行替 换): 使用write list选项可以让指定的用户具有写权限,这样他/她就可以在这个共享中更新文 件。配置文件共享的详情请参见smb.conf(5)手册页。 guest ok = yes这个选项的取舍取决于你的站点是如何配置的。如果Samba服务器上的每个用 户都有账号,就无须使用了。 作者注:无须使用的含义是,如果所有的Windows NT用户都可以通过Samba服务器 进行验证(这说明域用户及NT本地用户已经可以通过域控制器进行验证),那么 guest访问是不必要的。当然,如果你没有禁止某些用户访问服务器,同时也没有 安全方面的顾虑,还是可以放心使用这个功能的。要禁止用户,可以在[global] 段中加入map to guest = Bad User选项,不过在使用前最好彻底理解该选项的含 义。--jerry Windows NT打印服务器要支持多种客户端平台下载相应的驱动程序文件,必须在[print$]服 [print$] 与 [printer$] 在以前的版本中,Samba推荐使用一个名为[printer$]的共享,它来自于Windows 9x共享打 印机时所创建的printer$服务。Windows 9x打印服务器总是用这个printer$服务来让用户 不用口令就可以下载打印机驱动程序。 另外,在那些版本中还有两个与此有关的选项:printer driver location、printer driver。前 者用于指定保存打印机驱动程序的目录,后者定义打印机驱动程序名。 现在它们已被忽略,所以请别再用了。关于如何进行更新,请参考移植部分。 [print$] path = /usr/local/samba/printers guest ok = yes browseable = yes read only = yes ; 由于把它配置为只读,所以需要一个‘write list’。检查文件 ; 系统权限以确保该账号可以向这个共享拷贝文件。如果这个账号 ; 不是root账号,则应该作为‘printer admin’。 write list = ntadmin 页码,15/40Samba计划文档 (初稿) 2012-8-9http://www.linuxforum.net/doc/Samba-HOWTO-Collection.html 务项中建立对应每一种平台的子目录,Samba也使用了这种方法。 你可以在[print$]共享项下为每一种希望支持的平台建立对应的子目录。 当建立了所需的[print$]服务项及相关子目录后,只要在Windows NT 4.0客户端用root账号 (或printer admin)登录到Samba服务器。选到Samba服务器的“打印机”文件夹中,这时应该就 看到服务器定义的打印机共享列表。 4.2.2. 为现有打印机设定驱动程序 如上所述,Samba服务器打印机文件夹中的打印机列表还没有分配实际的驱动程序。但在缺省 情况下,Samba会把驱动程序名设为“NO PRINTER DRIVER AVAILABLE FOR THIS PRINTER”。 要是你试图查看打印机属性,就会得到如下信息: Device settings cannot be displayed. The driver for the specified printer is not installed, only spooler properties will be displayed. Do you want to install the driver now? 在对话框中点击“No”后就会出现打印机属性窗口,这时有两种可选的方法来安装驱动程 序: z 点“New Driver...”按钮安装一套新的,或者 z 从已安装的驱动程序下拉列表中进行选择。最初该列表为空。 如果你要安装Windows NT x86以外的操作系统驱动程序,就要使用打印机属性对话框中的 “Sharing” 关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf 签。(译者注:该书签中有一按钮为“Other Driver”) 如果你使用root账号连接到服务器,还可以在这个对话框中修改其它打印机的属性,如ACLs 和设备设定。 最后还要说明一下,Windows NT打印服务器有可能会把并未共享的打印机列在打印机文件夹 中。但Samba就不考虑这种情况了,根据定义,它只共享smb.conf文件指定的那些打印机。 [print$]----- |-W32X86 ; "Windows NT x86" |-WIN40 ; "Windows 95/98" |-W32ALPHA ; "Windows NT Alpha_AXP" |-W32MIPS ; "Windows NT R4000" |-W32PPC ; "Windows NT PowerPC" 注意!需要权限 在当前版本中,要为samba服务器添加新打印机,必须满足以下两个条件中的任意一个: z 向Samba服务器添加打印机的账号,其uid必须为0(如,root账号)。 z 向Samba服务器添加打印机的账号必须是printer admin列表中的成员之一。 当然,该账号还应该有权在[print$]子目录下添加文件。要记住,缺省情况下所有文件共 享项都是‘只读’的。 页码,16/40Samba计划文档 (初稿) 2012-8-9http://www.linuxforum.net/doc/Samba-HOWTO-Collection.html 另外还有一点很有趣,Windows NT客户机并不使用SMB打印共享,而宁愿使用MS-RPC直接打印 到远程NT主机。当然,这要假定要打印的人在远程主机上必须有一定权限,Windows NT为打 印机分配的缺省权限为:“Everyone”组可打印。 4.2.3. 支持大量打印机 在我们开发Samba 2.2的时候曾经出现过一个问题,那就是需要支持下载100台打印机的驱动 程序。如果用Windows NT APW来实现的话就稍微有点麻烦了。要是多台打印机都共用驱动程 序的话,就可以用rpcclient的setdriver命令对已安装的驱动程序进行关联。例如: 4.2.4. 通过Windows NT APW添加新打印 缺省情况下,Samba在“打印机”文件夹中会提供smb.conf文件定义的所有共享打印机。同时, 如果满足以下条件,就会在该文件夹中提供添加打印机向导的图标: z 连接的用户可以用管理权限(如root账号或printer admin)调用OpenPrinterEx (\\server)。 z 指定选项show add printer wizard = yes (缺省值)。 要用APW在Samba服务器上添加打印机,必须定义add printer command选项,这个选项所指定的 程序也必须可以用来向系统(例如/etc/printcap或相应的文件)及smb.conf添加打印机。 当客户端使用APW图标添加的共享打印机不存在时,smbd会执行add printer command并重新分析 smb.conf文件,然后查找新的打印机共享。如果该共享还未定义,则向客户端返回“拒绝访 问”出错信息。注意,add printer program是以连接的用户身份执行的,它并不需要root来执 行。 $ rpcclient pogo -U root%secret -c "enumdrivers" Domain=[NARNIA] OS=[Unix] Server=[Samba 2.2.0-alpha3] [Windows NT x86] Printer Driver Info 1: Driver Name: [HP LaserJet 4000 Series PS] Printer Driver Info 1: Driver Name: [HP LaserJet 2100 Series PS] Printer Driver Info 1: Driver Name: [HP LaserJet 4Si/4SiMX PS] $ rpcclient pogo -U root%secret -c "enumprinters" Domain=[NARNIA] OS=[Unix] Server=[Samba 2.2.0-alpha3] flags:[0x800000] name:[\\POGO\hp-print] description:[POGO\\POGO\hp-print,NO DRIVER AVAILABLE FOR THIS PRINTER,] comment:[] $ rpcclient pogo -U root%secret \ > -c "setdriver hp-print \"HP LaserJet 4000 Series PS\"" Domain=[NARNIA] OS=[Unix] Server=[Samba 2.2.0-alpha3] Successfully set hp-print to driver HP LaserJet 4000 Series PS. 页码,17/40Samba计划文档 (初稿) 2012-8-9http://www.linuxforum.net/doc/Samba-HOWTO-Collection.html
本文档为【Samba-HOWTO-Collection】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_261421
暂无简介~
格式:pdf
大小:327KB
软件:PDF阅读器
页数:40
分类:互联网
上传时间:2012-08-09
浏览量:16