赵大伟+陈刚
摘要:Samba是通过消息块协议使网络上的互联计算机共享文件和共享打印服务的应用程序。通过Samba服务器可以容易地实现异构环境下Windows与Linux之间的资源共享与访问。通过对SMB协议的分析, 在Linux系统下搭建完整的Samba服务器管理体系, 对Samba的配置文件进行了详细的分析,以实现在不同的要求下完成Samba服务器的配置和应用。
关键词:Linux;Samba;网络;协议
中图分类号:TP301 文献标识码:A 文章编号:1009-3044(2017)32-0050-03
Enterprise Application of Samba Server under Linux Environment
ZHAO Da-wei,CHEN Gang
(Department of Computer,College of Humanities & Sciences of Northeast Normal University, Changchun 130117, China)
Abstract: Samba is through the server message block (SMB) application file and print services sharing agreement between computers on the network. The Samba server can conveniently realize between Windows and Linux in heterogeneous network environment resource sharing. Through the analysis of SMB protocol, Samba server set up complete management system in the Linux system, the configuration of the Samba file is analyzed in detail, in order to achieve the complete configuration and application of Samba server in different requirements.
Key words: Linux; Samba; network; protocol
1 概述
随着网络应用的发展, 各企业单位都纷纷进行资源共享的网络平台建设, 但不同软件之间的兼容性问题, 阻碍了网络资源共享平台的建设, 解决平台之间数据互访成为网络应用研究的一个基本问题,在局域网中,有许多计算机使用的是Windows操作系统,也有一部分计算机使用的是Linux操作系统,如何在两个不同的系统之间实现文件的共享是经常遇到的问题, 利用在Linux系统里的Samba 組件可以方便地实现文件共享, 使Windows 用户可直接访问Linux 系统或服务器的文件。
2 Samba介绍
2.1 Samba服务器
Samba是可以使Linux操作系统应用微软的网络通讯协议的软件。其中,服务器消息块 (SMB)原来是Microsoft的一种网络通讯协议,Samba软件是指将SMB通信协议被移植并应用到了Linux操作系统中。微软公司在Samba中添加了很多新的功能,并将 SMB 改名为公共 Internet 文件系统(Common Internet File System),现在的Samba具有了更丰富的功能和应用[1]。
Samba突出应用是用于实现Linux系统与windows系统之间的文件共享和打印共享,使用Samba服务可以实现windows系统与Linux系统间的文件共享,同样可以用于它们之间的资源共享,因为网络文件系统(NFS)已经很好地解决了Linux与Linux之间的数据共享,因而 Samba更多的用在实现Linux系统与windows系统的的资源共享上。
2.2 SMB协议
SMB(Server Messages Block)中文名为服务器消息块,属于客户机/服务器协议,是实现在局域网上共享文件和共享打印服务的协议,客户通过该协议能够访问服务器上的共享文件、打印机等资源。如果在Linux系统中已经架设好了Samba服务器,Windows客户端能够使用SMB协议共享Samba服务器上的资源,并且,通过Samba服务器也可以访问网络中的Windows系统或者Linux系统所共享的资源文件。
Samba运行需要两个服务, SMB服务和NMB服务。其中,SMB是Samba 的核心服务,主要任务是建立Linux系统下Samba服务器与客户机之间的联系, 验证用户身份同时提供对共享文件和打印服务的访问, SMB服务启动后,可以实现文件的共享; NMB服务与DNS服务的功能类似,用来实现解析,NMB服务的任务是把Linux系统共享的工作组名称与其IP对应起来,如果没有NMB服务,用户必须要通过IP来访问共享文件,性能很差[2]。
3 安装Samba服务
3.1 利用yum工具安装
如果你的系统已经连接到互联网可以使用yum工具安装,如果未联网,则需要挂载系统光盘进行安装。使用yum工具来安装Samba有效、方便,在提示符下执行命令 # yum install samba 。使用yum工具安装Samba时,有相关依赖关系的包samba-common、samba -clients、samba-winbind-clients将会自动安装上去。如果是手动安装通常先安装samba-common软件包,再按任意顺序安装客户端和服务器软件包。
3.2 查看安装状态
在Linux系统中,安装完Samba服务器后,会生成samba可执行命令工具以及对应配置文件目录/etc/samba,在这个目录下的/etc/samba/smb.conf是samba的核心配置文件,/etc/init.d/smb文件可以实现samba的启动和关闭文件。可以通过rpm —qa|grep samba来查看本机的samba服务是否安装成功,查看的结果如下图2所示,表示samba服务已经安装成功。
3.3 启动Samba服务器
Samba服务器安装成功后,就可以启动它,完成配置,实现Windows与Linux系统之间的资源的共享。通常有两种方法可以启动Samba服务器,使用命令/etc/init.d/smb start/stop/restart 或者使用service smb start/stop/restart 来启动、关闭、重启Samba服务
4 配置Samba服务
4.1 常用的配置文件
Samba服务的配置文件是目录/etc/samba下的smb.conf文件,主要分为两部分,第一部分是全局设置,包括一个[global]配置段。可以配置Samba服务整体运行环境有关的选项,它的设置项目是针对所有共享资源的。第二部分是共享定义,包括home、printers、tem等多个配置段。该部分主要针对的是共享目录的设置[3]。
4.1.1 [global]段中常用的配置项
workgroup = WORKGROUP 含义:指定 Samba Server 要加入的工作组或域。
server string = Samba Server 含义:设置 Samba Server 的注释,可以不填,值为字符串类型。
hosts allow = 含义:设置允许连接到Samba Server的客户端,参数与参数之间用空格隔开。可以使用IP表示或者网段表示。
max log size = 100 含义:表示Samba Server日志文件的最大容量,单位为KB。
log file = /var/log/samba/log.%m 含义: Samba Server日志文件的名称及存储位置。
security = 含义: 用户访问Samba Server的验证方式,可以使用以下四个值。
(1) share:安全性低,用户访问Samba Server不需要使用用户名和口令。
(2) user:此项为默认设置,表示共享目录只能被授权的用户访问,账号和密码要在Samba Server中设置。
(3) server:代理验证。这种模式下,系统管理员能够将所有的Windows用户和口令集中到一个NT系统中,利用 NT系统进行Samba认证,认证失败,Samba将启動用户级安全模式。
(4) domain:使用主域控制器(PDC)来完成认证。
4.1.2 共享段配置项
comment =字符串 含义:对该共享的描述。
path = 共享目录 含义:设置共享目录的路径。
writable = 含义:说明共享路径是否可写,两个值yes或no。
valid users =用户名 含义:设置允许访问该共享资源的用户。
write list = 用户名 含义:设置在该共享下写入文件的用户。
4.2 Samba的实际应用
在实际的工作中,Samba服务根据不同的需求有很多的不同的应用,现在就来介绍一下在两种最常用的配置,
4.2.1 允许Linux用户通过Windows客户端访问自己的宿主目录
允许Linux用户通过Windows客户端访问自己的宿主目录,是Samba服务中最常见的一种应用,需要进行以下步骤[4]:
1) 安装Samba后默认的功能,如果linux系统中启用了SELinux,需要执行以下命令:setsebool —P samba_enable_home_dirs on
2) 通过命令设置用户在Samba下的密码:smbpasswd —a 用户名
3) 最后,启动Samba服:/etc/rc.d/init.d/smb start
完成以上操作后,Linux用户就可以通过Windows客户端利用Samba服务器访问Linux系统中的宿主目录了,方法就是通过Windows开始菜单-运行,输入\\Samba服务器所在系统的IP地址就可以了。
4.2.2 允许特定的用户通过Windows客户端访问Linux系统下特定的目录
Samba服务应用最广泛的是允许特定的用户访问特定的目录,在用Linux做服务器管理时,我们往往需要对一些特定的用户,设置特定的权限来对我们服务器中的某些文件或目录进行管理,假设Samba共享目录/share,允许zhangsan与lisi两个用户通过Windows访问该目录,并对该目录有读写权限,配置步骤如下[5]。
(1) 在Linux中,建立目录/share,添加用户zhangsan和lisi;
(2) 系统中如果安装了SELinux,则需要通过命令设置用户可访问的系统目录:
chcon —t samba_share_t /software
(3) 编辑Samba的配置文件/etc/samba/smb.con,增加以下信息:
[software]
Path=/share
Valid users= zhangsan lisi
Writable=yes
(4) 设置用户zhangsan和lisi的Samba 密码,启动samba服务,zhangsan和lisi就可以通过windows客户端访问Linux下的共享目录/software了。
4.2.3 Samba服务在企业管理中的实际应用
假如公司有网络、技术和管理3个部门, 3个部门对应的用户组分别为network,technology和manage。三个部门里各有2个用户,分别为network01,network02,technology01,technology02,manage01,manage02。在Linux系统中公司要利用Samba服务建立目录并设置对应的权限,要求如下:
(1) 服务器使用用户验证,每个用户只允许访问自己的宿主目录,同时对该目录具有完全的权限,而其他用户不能够看到你的宿主目录。
(2) 建立一个work的目录,允许network组和manage组访问,technology02也可以访问,只给network01对该目录写的权限。
(3) 建立一个most的目录,要求只有manage组能够访问并具有读写权限,同时允许network02访问,其他人对该目录不可见。
完成以上的企业管理中的应用需要以下的步骤:
(1) 首先利用“smbpasswd -a 用户名”的命令将以上6个用户分别添加到samba用户中。然后建立管理中所需要的目录:
#mkdir /home/samba
#mkdir /home/samba/network
#mkdir /home/samba/manage
(2) 設置Samba服务的配置文件smb.conf
1) 设置配置文件smb.conf的[global]段:
workgroup = myhome
server string = Samba File Server
security = user
其他的设置采用默认。
2) smb.conf的配置文件中的[ [homes]的设置:
comment = Home Directories
browseable = no
writable = yes
valid users = %S
directory mode = 0775
create mode = 0664
3) smb.conf配置文件中增加#network段并做如下设置满足要求(2):
[network]
comment =network
path = /home/samba/network
public = no
valid users = @network,@manage,technology02
write list = network01
4) smb.conf配置文件中增加#manage段做如下设置满足要求(3):
[manage]
comment = manage
path = /home/samba/manage
public = no
browseable = no
valid users = @mangage,network02
完成以上的设置就可以实现以上企业中的共享文件要求。
5 结束语
通过对Linux 系统中Samba 服务器的安装和设置, 可以使用企业用户实现Linux 系统与Windows 系统之间的文件共享, 企业中的Windows用户可以直接通过网络来访问Linux 文件服务器, 实现了两个系统中文件的共享问题,在实际应用中, 还有其他方式可以配置Samba 服务以实现更多的功能和更好的共享。
参考文献:
[1] 崔继.基于SELinux的Samba服务器的设计[J].计算机安全,2011(04).
[2] 刘海燕,荆涛.Linux系统应用与开发[M].北京:机械工业出版社,2011:135-141.
[3] 黄震.Windows与Linux互连技术[J].电脑知识与技术,2006(05).
[4] 周海光.基于Samba的UNIX与Windows互联技术[J].微型电脑应用,2011(8).
[5] 钟志文.Linux和Windows下统一服务器管理初探[J].计算机应用与软件,2010(27-1).