Samba的核心是两个守护进程smbd和nmbd,服务器启动到停止期间持续运行。smbd监听139 TCP端口;nmbd监听137和138 UDP端口。smbd和nmbd使用的全部配置信息全都保存在smb.conf文件中。smb.conf向smbd和nmbd两个守护进程说明输出什么、共享输出给谁及如何进行输出以便共享。smbd进程的作用是处理到来的SMB数据包,为使用该数据包的资源与Unix 进行协商,nmbd进程使其他主机(或工作站)能浏览Unix服务器。
一、Samba的应用环境
图1是一个使用Samba 服务器的网络结构图。在此环境中,运行Samba服务器的Solaris 10系统为所有的Windows 客户提供文件服务器和打印服务器的功能。当Samba服务器在Unix计算机上运行以后,Unix 计算机在Windows 上的网上邻居中看起来如同一台Windows计算机。另外,Samba还可以被配置成为WINS名字服务器、Windows NT/2000/2003的域控制器等。Samba可以取代Windows“网络邻居”的文件及打印机共享功能,Samba也可以完全取代NT PDC(Primary Domain Controler)成为NT网域主控者管理NT网域;若是在同一台Server架设Samba及Apache,则在办公室或校园环境内,使用者可用自己的账号及密码从Windows登入网域,再由“网络上的芳邻”进入使用者个人账号下放置网页的目录,进行编辑个人网页(传统的方式是先在个人计算机上编辑网页,再使用FTP上传)。

图1 使用Samba 服务器的网络结构
二、Solaris 10 配置Samba
Solaris 10 下已经包括Samba软件包,也可以下载源代码安装。如果在系统安装的时候已经包含了 SAMBA,只需要简单的配置就可以使用了。
1 Samba文件服务器的四个安全级别:
共享级别安全机制
当security参数设置为share时,Samba服务器执行共享级别的安全操作。用户不需要账户及密码即可登入Samba服务器。
用户级别安全机制
当security参数设置为user时,Samba服务器执行用户级别的安全操作。由提供服务的Samba服务器负责检查账户及密码(是Samba默认的安全等级)。
服务器级别安全机制
当security参数设置为server时,Samba服务器执行服务器级别安全机制的安全操作。检查账户及密码的工作指定由另一台Windows NT/2000 或Samba 服务器负责。
域级别安全机制
当security参数设置为Domain,Samba服务器执行域级别安全机制的安全操作。指定Windows NT/2000域控制服务器来验证用户的账户及密码。域级别安全机制和服务器级别安全机制的不同之处:
Samba服务器不维持和密码服务器的专用连接。只要在需要时才连接到远程的验证服务器,平时断开连接。这对密码服务器是好的, 因为Windows2000/NT是根据用户连接数量来决定发放访问许可的。
Samba服务器可以利用Windows2000/NT的诸如信任域特征的域约束性能。
2 配置共享级别
#cp /etc/sfw/smb.conf-example /etc/sfw/smb.conf
说明:samba的配置文件是smb.conf,该文件默认应该被放置在 /etc/sfw/ 目录下,默认情况下/etc/sfw/目录下有一个名为 smb.conf-example 的文件,该文件是Solaris系统提供给用户的一个配置例子。
用文本编辑工具编辑,输入以下内容:
[global]
workgroup = hust
netbios name = W1Q
server string = Solaris Samba Server TestServer
security = share
![]()
log file =/var/log/samba/%m.log
max log size = 50
[home]
path = /mnt/samba
writeable = yes
browseable = yes
guest ok = yes
参数说明:
[global]这段是全局配置,是必段写的。其中有如下的几行;
workgroup 就是Windows中显示的工作组;
netbios name 就是在Windows中显示出来的计算机名;
server string 就是Samba服务器说明,可以自己来定义;这个不是什么重要的;
security 这是验证和登录方式,这里我们用了share ;验证方式有好多种,这是一种;
另外一种常用的是user的验证方式;如果用share呢,就是不用设置用户和密码了;
[home] 这个在Windows中显示出来是共享的目录;
path = 可以设置要共享的目录放在哪里;
writeable 是否可写,这里我设置为可写;
browseable 是否可以浏览,可以;
guest ok 匿名用户以guest身份是登录;
建立共享目录
# mkdir -p /mnt/samba
再建立一个文件,便于测试
# touch /mnt/samba/cjh.txt
# chmod 777 /mnt/samba
启动smbd和nmbd服务器
# /etc/init.d/samba start
下面是关闭命令
#/etc/init.d/samba stop
或者使用其他启动命令 : # svcadm enable samba
查看smbd进程,确认Samba 服务器是否运行起来了,分别使用netstat和ps命令检查服务器进程情况,和端口使用情况,见图2。

看到了相关的进程号,说明samba服务器已经在工作了。也可以所有命令:svcs | grep samba 查看。
修改 smb.conf的[global]节,加上:
这样可以解决中文显示是乱码问题。unix charset = GBK
dos charset = GBK
display charset = GBK
访问Samba 服务器的共享;
在 Solaris 中您可以用下面的命令来测试;
# /usr/sfw/bin/smbclient -L //192.168.0.2
说明:192.168.0.2是Samba 服务器IP,或者是Samba服务器的计算机别名。 如图3 。

让Samba服务随服务器自动启动
在/etc/rc3.d/下创建S38samba
vi /etc/rc3.d/S38samba
/etc/init.d/samba start
后存盘
chmod 755 /etc/rc3.d/S38samba
这样就可以省去每次手动开启Samba服务了
三、客户端访问Samba服务器
1 Windows Server 2003 R2访问Samba服务器
要让Windows Server 2003 R2使用Samba,就要采取下面几个简单步骤:
在“管理工具”的“本地安全策略”中选择“网络安全:LAN Manager 身份验证级别”如图 4 。

这里要选择:发送 LM & NTLM—如果协商,那么还使用 NTLMv2 会话安全:客户端使用 LM 和 NTLM 身份验证,如果服务器支持,还使用 NTLMv2 会话安全;域控制器接受 LM、NTLM 以及 NTLMv2 身份验证。
然后在运行栏目输入: \\192.168.0.2 , 可以看到已经连接到samba上了。如图5 。

图5 Windows Server 2003 R2访问连接到samba
2 Vista工作站访问Samba
Vista工作站访问Samba的步骤:
按下“Win+R”组合键,即可打开疑似消失的运行对话框,输入“secpol.msc”。
点击“本地策略(Local Policies)”-->“安全选项(Security Options)”。如图6 。

图6 Vista工作站的本地安全
找到“网络安全:局域网管理器身份验证级别(Network Security: LAN Manager authentication level)”,打开它。如图7 。

这里同样选择:发送 LM & NTLM—如果协商,那么还使用 NTLMv2 会话安全:客户端使用 LM 和 NTLM 身份验证,如果服务器支持,还使用 NTLMv2 会话安全;域控制器接受 LM、NTLM 以及 NTLMv2 身份验证。
然后在运行栏目输入: \\192.168.0.2 , 可以看到已经连接到samba上了。如图8。

3 Solaris 10 访问Windows 计算机
使用Samba的命令,可以很方便地对Windows主机共享目录进行查询和其它操作。但是,大家已经习惯了Windows图形界面,使用命令总感觉不太方便。其实在Unix里面,也一样可以使用图形界面对Windows共享目录进行操作。这里介绍一位“幕后英雄”——Nautilus,它可算是GNOME环境里的Shell(相当于Windows下的Explorer)。Nautilus既是Unix的文件管理器,又可以充任浏览器,还可以播放多媒体文件、浏览图片等。它现在又多了一个职责,就是担当Unix下的网络邻居。要打开Nautilus窗口,只需双击GNOME桌面上的主目录图标即可。要查询Windows工作组里的主机,可以在Nautilus窗口的地址栏(Location)里输入“smb://工作组名称”,然后回车即可。如图9 。

然后出现对话框如图910

通过口令认证后,由于Nautilus本身就是Unix的文件管理器,所以可以任意往Windows共享目录里拷贝文件、删除文件、创建目录等。要访问 UNIX 共享位置,请双击“Unix 网络 (NFS)”对象。文件管理器窗口中会显示您可以使用的 UNIX 共享位置的列表。
4 添加网络邻居的步骤
要添加网上邻居,请执行以下步骤:
1. 打开文件管理器,选择“转到”→“网上邻居”。或在桌面背景上的网上邻居对象上双击。
2. 双击“添加网上邻居”对象。即可显示“添加网上邻居”对话框。在对话框中输入该服务器的详细信息,如下所示:
3 单击“确定”添加网上邻居。如图11

图11添加网上邻居
总结:至此一个Solaris10系统上最简单也最实用的Samba服务器架设并配置成功了,后边笔者会介绍一下Samba的高级应用,敬请关注。