您的位置:首页 > 运维架构 > Linux

Linux系列-Red Hat5平台下的Samba服务搭建

2010-01-17 13:43 761 查看
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]——用于设置打印机。
对上面所说的概念了解之后,配置就变的相对简单了,下面我们通过建立可匿名访问的文件共享和建立带验证的文件共享来看一下具体的配置步骤。
一. [/b]建立可匿名的文件共享[/b]
建立匿名共享时,在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路径访问即可。



二. [/b]建立带验证的文件共享[/b]
匿名共享虽然用起来非常方便,但由于任何人都可以访问到共享的文件数据,在某些时候可能导致信息泄漏。如果希望只有指定的合法用户才能访问共享的数据,就需要对共享目录添加授权设置。必要的时侯,还可以对访问共享的客户端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[/b],的客户机使用映射帐户hello[/b]可以成功的访问到samba服务器上的资源。



从下图可以看到,在客户机上使用hello帐户成功挂载共享目录//192.168.1.1/dir后,它只有读取的权限,并没有创建目录及文件的权限。



从下图可以看到,在客户机上使用root帐户成功挂载共享目录//192.168.1.1/dir后,他不但可以读取samba服务器上的共享资源,同时具有创建目录及文件的权限。



最后,值得注意的是可匿名访问的文件共享只适用于安全性不高的情况下,如果对安全性有更高的要求,建议使用带用户验证的文件共享。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息