1
Linux服务器配置与应用
1.8.1.1 5.1.1 samba介绍
5.1.1 samba介绍

Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

在早期网络世界当中,档案数据在不同主机之间的传输大多是使用 FTP 这个好用的服务器软件来进行传送。不过,使用FTP传输档案却有个小小的问题,那就是无法直接修改主机上面的档案数据!也就是说想要更改Linux 主机上的某个档案时,必须由Server 端将该档案下载到 Client端后才能修改,也因此该档案在 Server 与Client 端都会存在。如此,若有一天修改了某个档案,却忘记将数据上传回主机,那么等过了一阵子之后,就不容易分清哪个档案才是最新的。

既然有这样的问题,可不可以在 Client 端的机器上面直接取用Server 上面的档案,如果可以在 Client 端直接进行 Server 端档案的存取,那么在Client 端就不需要存在该档案数据,也就是说,只要有 Server 上面的档案资料存在就可以!有没有这样的档案系统( File System )?很高兴的是,NetworkFile System, NFS 就是这样的档案系统之一!我只要在 Client 端将 Server所提供分享的目录挂载进来,那么在Client 的机器上面就可以直接取用 Server上的档案数据,而且,该数据就像 Client端上面的分区一般!而除了可以让 Unix Like 的机器互相分享档案的NFS 服务器之外,在微软 ( Microsoft )也有类似的档案系统,那就是 CommonInternet File System, CIFS!CIFS 最简单的想法就是目前常见的『网上邻居』。Windows 系统的计算机可以透过桌面上『网上邻居』来分享别人所提供的档案数据。不过,在当时NFS仅能让 Unix 机器沟通,CIFS 只能让 Windows 机器沟通。那么有没有让Windows与 Unix-Like 这两个不同的平台相互分享档案数据的档案系统呢?

1991 年一个名叫Andrew Tridgwell 的大学生,他手上有三部机器,分别是跑DOS的个人计算机、DEC公司的 Digital Unix 系统以及 Sun 的 Unix 系统。在当时,DEC 公司又发展出一套称为 PATHWORKS 的软件,这套软件可以用来分享 DEC 的Unix与个人计算机的 DOS 这两个操作系统的档案数据,可惜让 Tridgwell 觉得较困扰的是,Sun的 Unix 无法由这个软件来达到数据分享的目的。这个时候 Tridgwell 就想:“既然这两部系统可以相互沟通,为什么Sun 不能够分享档案数据呢?可不可以将这两部系统的运作原理找出来,从而让 Sun这部机器也能够分享档案数据呢?”为了解决这一问题,Tridgwell就自行写了个程序去侦测当 DOS 与 DEC 的 Unix 系统在进行数据分享传送时所使用到的通讯协议信息,然后将这些重要的信息撷取下来,并且基于上述所找到的通讯协议而开发出ServerMessage Block (SMB)这个档案系统,而就是这套SMB软件能够让 Unix 与 DOS 互相地分享数据!

Tridgwell去申请了 SMBServer ( Server Message Block 的简写 ) 这个名字来作为他撰写的这个软件的商标,可惜的是,因为SMB 是没有意义的文字,而没有成功注册。而后他在字典里面找到SAMBA这个词,刚好含有 SMB ,又是热情有劲的拉丁舞蹈的意义,于是就用这个名字来作为商标好。如此,这成为我们今天所使用的SAMBA 的名称由来。

Samba由两个主要程序组成,它们是smbd和nmbd。这两个守护进程在服务器启动到停止期间持续运行,功能各异。Smbd和nmbd使用的全部配置信息全都保存在smb.conf文件中。Smb.conf向smbd和nmbd两个守护进程说明输出什么以便共享,共享输出给谁及如何进行输出。Samba提供了基于CIFS的四个服务:文件和打印服务、授权与被授权、名字解析、浏览服务。前两项服务由smbd提供,后两项服务则由nmbd提供。