SAMBA Team于2001年4月17日发布了Samba最新正式版2.2.0。增强的地方包括:增强了两种操作系统文件交互功能,当Unix和Windows共享某个文件的时候,可以保证数据的完整性;能够为Windows 2000和Windows NT客户机提供认证资源。这样可以节省购买Microsoft 客户接入许可证的费用; 支持自动下载Windows 2000/NT打印机驱动程序,首次独立于Microsoft的代码实现Windows NT点对点功能; 将Windows 2000 / Windows NT和UNIX 的接入控制列表统一起来。允许Windows客户机直接操作UNIX接入控制实体; 允许UNIX 服务器使用Windows 2000/Windows NT 域控制器 支持Microsoft分布式文件系统(Microsoft Distributed File System :MDFS)。 Samba 2.2.0 能够在Microsoft 的网络中扮演DFS 服务器的角色。
同时该开发小组还发布了2.0.8版对先前的2.0.7版进行升级,这次的升级修正了老版本上用户可以通过SHELL账号破坏本地磁盘设备(如RAW设备)的安全漏洞。当然Samba 2.2.0已经包含了所有的安全补丁,如果不想升级到2.0.8就可以直接下载这个最新版了。既然这样,那我们立马就来试装这个新东东。
首先从http://us1.samba.org/samba/ftp/samba-2.2.0.tar.gz得到源代码包,放到/tmp目录里后把它解开:(哦,我的系统是FreeBSD 4.3,也是最新的版本哦!)
bsd# cd /tmp ; tar zxvf samba-2.2.0.tar.gz
然后进入源代码子目录进行自动配置过程:
bsd# cd /tmp/samba-2.2.0/source ; ./configure
如没有什么错误就可以开始编译了:
bsd# make ; make install
完了以后就会在系统的/usr/local/samba中创建以下目录:
bsd# ls /usr/local/samba
bin lib man private swat var
在试运行前需要完成两件事,首先就是拷贝一份smb.conf,接着产生smbpasswd口令数据库:
bsd# cp /tmp/samba-2.2.0/examples/smb.conf.default /usr/local/samba/lib/smb.conf
bsd# cat /etc/passwd | /usr/local/samba/bin/mksmbpasswd.sh /usr/local/samba/private/smbpasswd
编辑smbpasswd文件从中删除不必要的账号以防止安全隐患,然后用以下命令添加新samba用户:
bsd# /usr/local/samba/bin/smbpasswd -a sambauser
好,我们现在就可以用这份缺省的配置文件进行试运行:
bsd# /usr/local/samba/bin/smbd -D ; /usr/local/samba/bin/nmbd -D
这时请查看/usr/local/samba/var/log.smbd文件有没有出错信息,运气好的话开始测试连接:
bsd# /usr/local/samba/bin/smbclient //bsd/sambauser -U sambauser
added interface ip=192.168.0.2 bcast=192.168.0.255 nmask=255.255.255.0
added interface ip=192.168.1.2 bcast=192.168.1.255 nmask=255.255.255.0
Password:
#在这里输入该用户的samba口令
Domain=[DOMAIN] OS=[Unix] Server=[Samba 2.2.0]
smb: \>
哈哈,我们已经以sambauser的身份连接到他/她的主目录了,以后可以做的事请参考smbclient.1的man吧。
接下来就可以来试2.2分支的最新特性,我们以把它配置成windows 2000客户机的域控制器为例。以下是实现必须的配置:
[global]
基本服务器设定
netbios name = bsd
workgroup = unixdomain
以域及本地主浏览器方式运作
os level = 64
preferred master = yes
domain master = yes
local master = yes
安全性设定
security = user
加密口令
encrypt passwords = yes
||||||支持域登录
domain logons = yes
存放用户简档的目录
logon path = \\%N\profiles\%u
指定用户的主目录及映射盘符
logon drive = H:
logon home = \\bsd\%u
为所有用户指定通用登录脚本并使用[netlogon]共享项的相对路径
logon script = logon.cmd
域控制器必须的共享项
[netlogon]
path = /usr/local/samba/lib/netlogon
writeable = no
write list = ntadmin
存放用户简档的共享项
[profiles]
path = /export/smb/ntprofile
writeable = yes
create mask = 0600
directory mask = 0700
接下来就需要为加入进来的客户机建立它们的机器信任账号了。有手工及自动两种方法可以达到目的,如果用前者则必须为每一台客户机分别建立,我们采用后者以减轻系统管理负担,不过只有root账号可以做此项工作,所以需要在smbpasswd口令数据库中为root建立账号(smbpasswd -a root),为安全起见最好不要用系统root的口令。然后在smb.conf中加入下面这一行:
add user script = /usr/sbin/adduser -n -g machines -c Machine -d /dev/null -
||||||用下面这个脚本(BSD风格)启动samba服务器:
#!/bin/sh
smbspool=/usr/local/samba/var/spool
pidfiledir=/usr/local/samba/var/locks
smbd=/usr/local/samba/bin/smbd
nmbd=/usr/local/samba/bin/nmbd
# start
if [ "x$1" = "x" -o "x$1" = "xstart" ]; then
if [ -f $smbd ]; then
if [ -d $smbspool ]; then
rm -f $smbspool/*
fi
echo -n ' Samba'
$smbd -D
$nmbd -D
fi
# stop
elif [ "x$1" = "xstop" ]; then
kill `cat $pidfiledir/smbd.pid`
kill `cat $pidfiledir/nmbd.pid`
fi
然后在windows 2000客户机上以Administrator登录,进入"控制面板"双击"系统",选择"网络标识"书签并点击"属性",在"隶属于"项中选"域",并输入域名(unixdomain),按"确定",在确认时输入samba的root账号及其相应口令(别用系统口令哦!)然后重启就可以换登录进该域控制器了。
另外这里还有一些系统性能及安全方面的建议,由于我用的是FreeBSD系统,在内核配置文件中加入以下选项并重编译内核:
options SUIDDIR
maxusers 128
前者的作用是使文件服务器上所有用户的主目录都以suiddir选项装载,这样用户产生的新文件同目录具有相同的所有权。不过如果你让用户运行程序的话这就是个安全漏洞了,所以最好只限于在文件服务器上使用此选项,当然这个选项可以解决很多头痛问题,因为它支持很多文件服务器该有的调用,而用户希望"我的目录里只有我的文件"。
而后者的作用就是提高系统表格尺寸,以提升系统对高负载的支持能力,原因是用Samba作文件服务器在大量连接请求会产生大量进程及文件句柄数。128这个值在一般情况下应该够了,请以实际经验取值。