为了实现Windows主机与Linux服务器之间的资源共享,Linux操作系统提供了Samba服务,Samba服务为两中不同的操作系统架起了一座 桥梁,使Linux系统和Windows系统之间能够实现互相通信,为广泛的Linux爱好者提供了极大的方便,本章将以Redhat 5为例,简要介绍如何在Linux操作系统上搭建Samba服务器,本章只对Samba的安装及配置过程进行简要讲解。

1. 服务查询

    默认情况下,Linux系统在默认安装 中已经安装了Samba服务包的一部分,为了让大家对整个过程有一个完整的了解,在此先将这部分卸载掉。可以在“/”下输入命令rpm –qa samba*,或者rpm –qa |grep samba,默认情况下可以查到两个已经存在的包:

samba-client-3.0.33-3.7.el5

samba-common-3.0.33-3.7.el5

将rpm –e两个包卸载掉。对于samba-common-3.0.33-3.7.el5,因为与其它rpm包之间存在依赖关系,所以必须加参数-f和 --nodeps,-f是指强制,--nodeps是指不检查依赖关系,具体完整命令为rpm –e –f –nodeps samba-common-3.0.33-3.7.el5,这样可以将此包顺利卸载。

2. 安装Samba

a) 挂载系统安装盘

使用命令mount /dev/cdrom /mnt/cdrom完成系统安装盘的挂载,完成之后进入/mnt/cdrom/Server,使用命令find samba*查询和samba服务相关的rpm包,可以查到如下4条记录:

[root@localhost /]# rpm -qa |grep samba
samba-client-3.0.33-3.7.el5
samba-3.0.33-3.7.el5
samba-common-3.0.33-3.7.el5
samba-swat-3.0.33-3.7.el5
samba-3.0.33-3.7.el5.i386.rpm:为Samba服务的主程序包。后面的数字为此包的版本号,要搭建Samba服务器,必须安装此软件包; 
samba-client-3.0.33-3.7.el5.i386.rpm:为连接服务器和连接网上邻居的客户端的Samba客户端工具;
samba-common-3.0.33-3.7.el5.i386.rpm:存放通用的工具和库文件,通常此包必须安装;
samba-swat-3.0.33-3.7.el5.i386.rpm:为服务器图形化管理工具,此包安装完成之后,用户可以通过IE或其它浏览器来对Samba服务器进行图形化管理。
b) 安装Samba服务包
对于上面查询出来的4个Samba服务安装包进行逐一安装。如果直接用rpm –ivh安装samba-3.0.33-3.7.el5.i386.rpm包,将会报错,提示如下:
[root@localhost Server]# rpm -ivh samba-3.0.33-3.7.el5.i386.rpm 
warning: samba-3.0.33-3.7.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
error: Failed dependencies:
perl(Convert::ASN1) is needed by samba-3.0.33-3.7.el5.i386
samba-common = 0:3.0.33-3.7.el5 is needed by samba-3.0.33-3.7.el5.i386
这是因为包之间存在依赖关系,所以正确安装方式应该是:
[root@localhost Server]# rpm -ivh -f --nodeps samba-3.0.33-3.7.el5.i386.rpm 
warning: samba-3.0.33-3.7.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:samba ########################################### [100%]
同理,另外三个包也采用同样的方式进行安装:
[root@localhost Server]# rpm -ivh -f --nodeps samba-client-3.0.33-3.7.el5.i386.rpm
warning: samba-client-3.0.33-3.7.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:samba-client ########################################### [100%]
[root@localhost Server]# rpm -ivh -f --nodeps samba-common-3.0.33-3.7.el5.i386.rpm 
warning: samba-common-3.0.33-3.7.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:samba-common ########################################### [100%]
[root@localhost Server]# rpm -ivh -f --nodeps samba-swat-3.0.33-3.7.el5.i386.rpm 
warning: samba-swat-3.0.33-3.7.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:samba-swat ########################################### [100%]

    四个包安装完成之后,使用命令rpm -qa | grep samba进行查询,发现搭建samba服务器所依赖的所有服务器都已经安装好了。

    另外,必须保证系统安装了xinetd服务包,如果没有,需要自行安装。使用命令rpm –ivh xinetd-2.3.14-10.el5.i386.rpm。

3. 配置smb.conf文件

Samba的配置文件一般就放在/etc/samba目录中,主配置文件名为smb.conf,该文件中记录着大量的规则和共享信息,所以是samba服务非常重要的核心配置文件,完成samba服务器搭建的大部分主要配置都在该文件中进行。

    Samba服务器的工作原理是:客户端 向Samba服务器发起请求,请求访问共享目录,Samba服务器接收请求,查询smb.conf文件,查看共享目录是否存在,以及来访者的访问权限,如 果来访者具有相应的权限,则允许客户端访问,最后将访问过程中系统的信息以及采集的用户访问行为信息存放到日志文件中。

    下面简要介绍smb.conf配置文件的内容,用vi /etc/samba/smb.conf打开该配置文件,可以看到该配置文件按照功能不同分成了三部分:

a) 配置项说明

    这里主要对smb.conf文件的作用及相关信息进行简要说明,以“#”、“;”开头的行都是Samba的解释信息以及格式规范,默认是不生效的,可以通过去掉前面的符号来进行设置并使之生效。

b) 全局设置

全局设置区是从[global]行开始,主要完成一些对所有共享资源都生效的设置,比较有用的设置具体如下:

# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH
# Hosts Allow/Hosts Deny lets you restrict who can connect, and you can
# specifiy it as a per share option as well
#
workgroup = MYGROUP
server string = Samba Server Version %v
; netbios name = MYSERVER
; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
; hosts allow = 127. 192.168.12. 192.168.13.

其中,“workgroup = MYGROUP”行可以完成对samba服务器所在工作组的设置;server “string = Samba Server Version %v”行可以对服务器的描述进行设置,这主要用途是通过不同的描述,可以使用户能够对工作组中不同的Samba服务器进行区分。

c) Samba安全模式

以“Standalone Server Options”行开始为Samba服务器的安全级别设置区域,如下:

# ----------------------- Standalone Server Options ------------------------
#
# Security can be set to user, share(deprecated) or server(deprecated)
#
# Backend to store user information in. New installations should
# use either tdbsam or ldapsam. smbpasswd is available for backwards
# compatibility. tdbsam requires no further configuration.
security = user
passdb backend = tdbsam

其中,“security = user”为系统默认的安全级别, 在Samba服务器中,为了适应不同企业的安全需求,共有五种安全级别,分别是:

1) share模式:不用进行权限匹配检查即可访问共享资源,安全性比较差;

2) user模式:需要对用户名和密码进行验证,通过后才能访问共享资源,具有一定的安全性;

3) server模式:通过指定的服务器对用户名和密码进行验证,如果不通过,客户端会用user级别访问;

4) domain模式:domain级别的Samba服务器只作为域的成员客户端加入Windows域中,由Windows域控制器来完成对用户名和密码的验证;

5) ads模式:如果Samba服务器以ads方式加入Windows域中,将具备domian级别的所有功能,并且可以完成对用户名和密码的验证工作。

一般系统安装之后默认是的user级别。

d) 日志文件

    日志文件的设置在Samba服务器的搭 建过程中同样非常重要,Samba服务器会为每个客户端分别建立日志文件,通过日志文件,可以了解到客户端访问的基本信息以及系统的包错信息等,方便对于 系统的维护。日志文件默认保存在log file = /var/log/samba/%m.log。当启动Samba服务以后,会在/var/log/samba中看到nmbd.log和smbd.log两 个日志文件。其中,nmbd.log记录nmbd进程的解析信息;smbd.log记录系统的错误信息以及用户的访问信息。当客户端访问时,这里会自动添 加客户端的相关日志。

e) 共享设置

    在Samba服务器中,我们一般需要手工设置Samba的共享文件路径、访问规则等,下面进行简要说明。我们可以在 smb.conf 文件的最下面加上一段:

[public]
comment = jianw
path = /usr/share/jw
public = yes 
readonly = yes

    加上之后保存smb.conf文件。其 中,“[public]”为共享目录名,共享资源发布以后,存放共享资源的目录成为共享目录,必须为共享目录定义一个共享名;“comment”为共享资 源的描述,方便用户访问时对共享文件进行区分,在这里定义设置为“jianw”;“path”为共享文件存放的绝对路径,例如可以在/usr/share 中mkdir一个“jw”目录存放共享文件,那么这里的路径设置为“path = /usr/share/jw”;“public”行可以设置共享资源是否允许匿名访问,设置为“yes”表示允许匿名访问,设置为“no”表示禁止匿名访 问;“readonly”行为对文件读取进行设置,设置为“yes”表示只读,设置为“no”表示可以读和写。

4. 设置访问用户

     对于访问Samba服务器的帐号,需要首先在系统中建立同名系统帐号,如想要建立一个名为“jianw”的Samba帐号,需首先在系统中建立名为 “jianw”的系统用户。建立Samba帐号的命令为“smbpasswd -a 用户名”。输入命令之后,还需要设置Samba帐号密码,Samba帐号密码与系统帐号密码可以不一致。如下:

[root@localhost /]# smbpasswd -a jianw
New SMB password:
Retype new SMB password:

    用户名和密码信息通常存放在/etc /samba/smbpasswd中,Samba服务器在每次用户进行访问时,会将用户提交的信息与smbpasswd保存的信息进行对比,通过后才与客 户端建立连接,允许客户端访问。如果在/etc/samba中找不到smbpasswd文件,是因为samba启用了tdbsam验证,可以修改 smb.conf文件的“passdb backend = tdbsam”行,然后加上“smb passwd file = /etc/samba/smbpasswd”。

5. 开启Samba服务

OK,现在通常基本的配置已经完成,可以开启Samba服务器的服务了,用命令service smb start 或 /etc/rc.d/init.d/smb start,如下:

[root@localhost /]# service smb start

启动SMB服务: [确定]

启动SMB服务: [确定]

    这样,Samba服务就已经开启好了,现在还需要关闭系统防火墙,用命令iptables –F。