Chinaunix首页 | 论坛 | 博客
  • 博客访问: 432132
  • 博文数量: 77
  • 博客积分: 2948
  • 博客等级: 少校
  • 技术积分: 912
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-16 15:34
文章分类

全部博文(77)

文章存档

2014年(9)

2013年(9)

2011年(26)

2010年(33)

分类: LINUX

2010-12-21 12:44:13

Samba是著名的开源软件项目,在Linux/UNIX系统中实现了SMB/CIFS网络协议,因此使得跨平台的文件共享变得容易。在部署Windows、Linux/UNIX混合平台的企业环境时,使用Samba可以很好地解决不同系统之间的文件互访问题。
在配置Samba服务之前我们必须对其做一个了解,现在主要向大家说明以下几个方面:
首先说Samba服务的组成。Samba服务至少需要安装samba、samba-client、samba-common这三个软件包,其中samba和samba-client软件包分别用于提供服务器和客户机端程序文件,samba-common软件包提供了服务器和客户端都要使用的公共文件。Samba服务器主要提供smbd服务程序和nmbd服务程序,前者是为客户机提供服务器中共享资源的访问,后者则用于提供基于NetBIOS主机名称的解析,为Windows网络中的主机进行名称解析。
其次,说一下Samba服务的主配置文件。Samba服务的配置文件位于“/etc/samba”目录下,主配置文件为smb.conf。在该文件中,注释行以“#”开始,配置样例以“;”开始。样例行是对配置内容的举例。用户可以参考样例行进行服务器的配置。无论是注释行还是样例行,Samba服务器都将予以忽略。Smb.conf配置文件包括三个部分。[global]——这部分内容对整个Samba服务器有效。[homes]——设置对应Samba用户宿主目录的默认共享。[printers]——用于设置打印机。
 

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%]

 

{

有的时候错误提示的应该是没有安装这个文件:perl-Convert-ASN1-0.21-3.fc9.noarch.rpm ,装之:
rpm -ivh perl-Convert-ASN1-0.21-3.fc9.noarch.rpm

有没装的在装上就可以了

}

同理,另外三个包也采用同样的方式进行安装:

[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文件中主要设置两个地方即可:将安全级别调整为share,添加共享目录配置段。其它配置根据具体需要更改。
1.       创建共享目录并发布
 
说明:创建共享目录/var/public/dir,并创建一个文件file1以便测试。
 
说明:修改默认工作组为与windows主机同一默认的工作组,以便windows主机能够访问资源,将安全级别修改为share.添加共享文件夹的描述信息、路径、权限待内容。
2.       启动服务
 
说明:启动服务之后,通过命令netstat –anptu | grep mbd可以看到,smbd服务程序监听TCP协议的139端口(SMB)、445端口(CIFS),nmbd服务程序监听UDP协议的137-138端口(NetBIOS)。
3.       验证
 
通过上图可以看到客户端主机已经可以看到samba服务器上的共享资源,直接访问,不需要用户验证就可以访问了,如下图所示,windows主机直接使用UNC路径访问即可。
 
二.             建立带验证的文件共享
匿名共享虽然用起来非常方便,但由于任何人都可以访问到共享的文件数据,在某些时候可能导致信息泄漏。如果希望只有指定的合法用户才能访问共享的数据,就需要对共享目录添加授权设置。必要的时侯,还可以对访问共享的客户端IP地址进行限制。下面就来看看建立带用户及客户端验证的文件共享是如可的配置。
1.       建立Samba用户数据库
为了区别于系统用户,通常将用于访问共享的用户称为Samba用户。Samba服务器使用独立的帐号数据文件,但是在建立Samba用户帐号时需要确保有对应的系统用户帐号存在,Samba用户的密码可以与系统用户的密码不同。
1>.为Samba服务添加一个帐户,并将roote用户添加为Samba用户。
 
说明:此处添加了一个名为zpp的用户帐号,同时将root用户也加入了samba用户。Smbpasswd命令除了可以添加samba用户帐号外,还可以结合不同的命令选项完成不同的帐号维护工作。例如:-h:显示smbpasswd命令的帮助信息;-a:添加指定的samba用户帐号;-d:禁用指定的用户帐号;-x:删除指定的用户帐号;不使用任何命令选项时可以用于修改samba用户的密码。
2>.查看Samba服务器默认的用户名称映射内容。
    基于windows客户端主机的特点和用户安全性考虑,samba服务器提供了用户名称映射(usernamemap)功能,即可以将多个不同的用户名对应为同一个samba用户,起到隐藏对应的系统用户帐号的效果,减少密码穷举攻击的风险。用户名称映射文件位于“/etc/samba/smbusers”,文件中默已经添加了两条兼容windows客户机的用户名称映射,如图:
 
说明:当客户端主机以administrator用户名访共享时,samba服务器将其映射为root用户;同样地,guest用户名映射为nobody。当然,若要正常使用,还需要添加并启用对应的samba用户(在“/etc/samba/smbpasswd”文件中有root、nobody)。
3>.为Samba用户zpp设置到名称hello的映射
 
说明:此处将zpp映射为hello是为了安全性考虑,由于samba用户zpp对应有同名的系统用户,而映射的名称hello只相当于一个别名(而非实际存在的用户),为了安全起见,可以不将zpp帐户名称告诉共享用户,而只告诉其名为hello的用户帐户和密码(也就是zpp帐户的密码)。注意不要望了在samba主配置文件的全局设置中添加username map = /etc/samba/smbusers以此指定名称映射文件。
2.       添加用户授权设置
在smb.conf主配置文件中,共享目录的用户授权设置主要由“valid users”、“write list”配置项指定,同时要取消公开访问的设置(即设为“public=no”).
 
说明:此处设置共享的目录为“/var/public”取消了公开的访问的设置。合法访问者为用户zpp及root组内的用户,并设置只有root用户可有写入的权限。当需要授权多个用户时以空格或逗号分隔开,注意不能使用帐户别名。授权一个组时使用“@groupname”的形式,组内的每个用户都需要有对应的Samba用户。上图中的“directory mask”、“create mask”配置项用于给samba用户设置在共享目录中建立子目录、文件等权限。
另外,控制samba用户访问共享目录的读取、写入权限时,注意要满足一个前提条件,即与该samba用户同名的系统用户对服务器中的共享目录(如:“/etc/public/dir”)也必须有相应的读取、写入权限。
3.       添加客户端地址授权设置
在smb.conf文件中,使用“host allow”配置项可设设置仅允许访问共享的客户机地址,使用“host deny”配置项可以设置仅拒绝访问共享的客户机地址,两者选其一。配置参数可以使用主机名或IP地址、网络地址的形式,多个地址之间以空格或逗号分隔。
 
说明:此处在host allow配置项中设置仅允许192.168.1.0/24、172.16.0.0/16网段的客户机访问samba服务器。
4.       重新启动Smb 服务。
 
建立好Samba用户数据库,并为共享目录添加好用户授权设置、客户端地址授权设置、重新启动smb服务之后,我们就可以来测试了。
从下图可以看到,IP地址为192.168.1.2/24,的客户机使用映射帐户hello可以成功的访问到samba服务器上的资源。
 
从下图可以看到,在客户机上使用hello帐户成功挂载共享目录//192.168.1.1/dir后,它只有读取的权限,并没有创建目录及文件的权限。
 
从下图可以看到,在客户机上使用root帐户成功挂载共享目录//192.168.1.1/dir后,他不但可以读取samba服务器上的共享资源,同时具有创建目录及文件的权限。
 
    最后,值得注意的是可匿名访问的文件共享只适用于安全性不高的情况下,如果对安全性有更高的要求,建议使用带用户验证的文件共享。
阅读(7011) | 评论(0) | 转发(0) |
1

上一篇:skyeye/u-boot

下一篇:DM365开发环境搭建

给主人留下些什么吧!~~