许使用明文口令并不会禁止客户参与加密验证的能力。
-------------------------------------------------------------------------------- 2.3.1. SMB加密的好处
不通过网络传送明文口令。使用网络嗅探器无法记录传输的口令。
NT必须使用SMB加密口令同服务器进行通信。如果该服务器还在使用用户级安全模式,它会拒绝浏览服务器。它在每次连接时坚持要用户输入口令,当然这很烦人,而唯一的解决方法就是使用SMB加密。
-------------------------------------------------------------------------------- 2.3.2. 非加密口令的好处 明文口令不保存的磁盘上。
可以使用与其它UNIX服务一样的口令,如login和ftp。
你可能已经使用了发送明文口令的其它服务(如telnet和ftp),所以多加一个也无关紧要。 -------------------------------------------------------------------------------- 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文件的格式如下(这里已被换行,在文件中应该是每项占一行):
username:uid:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:\\
[Account type]:LCT-:Long name
其中,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的口令清除之后,他的账号项应该如下:
bob:100:NO
PASSWORDXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:\\
[U ]:LCT-00000000:Bob's full name:/bobhome:/bobshell
如果你想让用户用smbpasswd命令设置他们自己的口令,就可以用NO PASSWORD来初始化他/她的口令项,这样他们在更改新口令时就不必输入旧口令了(不推荐,这不安全)。不过,必须让用户不提供口令也可以用
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,然后更改用户口令。所以,它就有下面这些优点:
smbpasswd不再被setuid到root身份 - 消除了大部分的安全问题。
现在,smbpasswd可以更改Windows NT服务器上的口令(在更改NT域用户口令时只能将请求发给NT主域控制器)。
普通用户运行smbpasswd程序只要打:
$ smbpasswd
Old SMB password: New SMB Password:
Repeat New SMB Password:
如果旧口令输入有问题,或者两个新口令不匹配,就无法更改口令。 如果是以普通用户调用该程序,只能更改其自身的Samba口令。
如果是以root用户运行,就可以使用选项来指定要更改口令的用户。注意,smbpasswd不会提示或检查旧口令,因此可以用它来为忘记口令的用户重新分配口令。 对于熟悉UNIX的用户来说,smbpasswd的工作方法与使用passwd或yppasswd命令类似。
关于这个程序的详情请参见它的手册页。
-------------------------------------------------------------------------------- 2.6. 设定Samba支持LanManager加密
下面简要描述一下如何来设定Samba,使它支持LanManager加密: 先编译安装好Samba。
在smb.conf文件的[global]段中加入encrypt passwords = yes选项,打开口令加密功能。
在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
在/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. 说明
如果Windows客户端已经装载的非DFS共享现在被用作了DFS根目录的话,就需要重新启动,反之亦然。其实,你应该用一个新的共享项作为DFS根目录。 当前,DFS符号链接名必须全部使用小写字母。
出于安全目的,作为DFS根的目录应该设置合适的权限,只允许指定的用户修改目录中的
符号链接。
-------------------------------------------------------------------------------- Chapter 4. Samba 2.2.x中的打印支持 4.1. 介绍
在2.2.0版本中,Samba使用MS-RPC(例如SPOOLSS命名管道)实现了本地Windows NT打印机制。以前的版本只支持LanMan打印调用。 新的SPOOLSS还提供了以下的额外功能:
根据需要,支持Windows 95/98/NT/2000客户端下载打印机驱动程序。
使用Windows NT添加打印机向导(APW)或Imprints工具包(参考http://imprints.sourceforge.net)上传打印机驱动程序。
支持本地MS-RPC打印调用,如StartDocPrinter、numJobs()等等(关于Win32打印API的详情请参考MSDN文档http://msdn.microsoft.com/)。 支持打印对象的访问控制表(ACL)。
通过使用内部信息数据库来保存脱机任务信息,更好地支持打印队列操作。 注意,Windows
NT/2000客户端要求Samba服务器为打印机分配一个合法的驱动程序。为此,就要考虑支持MSRPC打印调用以;而Windows
9x客户端无须Samba主机安装打印机的驱动程序。而且,Samba也不使用这些驱动程序来处理假脱机文件,驱动程序完全是客户端使用的。
-------------------------------------------------------------------------------- 4.2. 配置
[print$] 与 [printer$]
在以前的版本中,Samba推荐使用一个名为[printer$]的共享,它来自于Windows 9x共享打印机时所创建的printer$服务。Windows 9x打印服务器总是用这个printer$服务来让用户不用口令就可以下载打印机驱动程序。
另外,在那些版本中还有两个与此有关的选项:printer driver location、printer driver。前者用于指定保存打印机驱动程序的目录,后者定义打印机驱动程序名。
现在它们已被忽略,所以请别再用了。关于如何进行更新,请参考移植部分。
-------------------------------------------------------------------------------- 4.2.1. 建立[print$]项
为了上传打印机驱动程序文件,你必须先配置共享项[print$]。注意,它的名称很重要(print$是Windows
NT打印服务器用来提供打印机驱动程序下载的服务项),别写错了。你可以参考一下下面这个例子(当然,有些选项值,如?path'是任意的,可以用适当的 值进行替换):
[print$]
path = /usr/local/samba/printers guest ok = yes browseable = yes read only = yes
; 由于把它配置为只读,所以需要一个?write list'。检查文件
; 系统权限以确保该账号可以向这个共享拷贝文件。如果这个账号 ; 不是root账号,则应该作为?printer admin'。 write list = ntadmin
相关推荐: