APP下载

项目驱动法在Linux系统安装Samba服务课程中的应用

2022-05-25沈劲桐

中国新通信 2022年7期

摘要:高职院校以培养应用型、技术型、技能型、实用性人才为目标,在计算机学科教学过程中,项目驱动教学法最能体现其教学特点。通过设计实验场景,让学生在做中学,做到理论与实际相结合,提高学生的动手能力和学习热情、从而增强学生分析和解决问题的能力、进一步加深对理论知识的理解。该文首先对Samba做了介绍,接着介绍了Samba服务器的配置,最后通过设计项目场景和具体实验完成了Samba服务器的配置、管理及测试。

关键词:Linux; Samba协议;共享资源;Windows;访问安全

一、引言

Linux作为一种免费使用和自由传播的类UNIX操作系统,具有开源、可靠、安全、稳定、多平台等特点。Linux服务器在各行各业中有广泛的应用,Linux服务可以提供数据库管理和网络服务等内容,它不仅性能高,而且是一种开源且免费的服务器[1]。目前,多家厂商通过修改源代码以满足实际需求,同时,由于Linux系统自身结构的的优势,其数据和业务处理能力非常强,其高安全性和稳定性能够提高服务器的可用性,从而能够实现业务的稳定、高效运行。因此,市场上大部分服务器均采用Linux 系统架构,作为最先连接Linux和Windows平台之间的桥梁,Samba服务器的文件共享功能,使得 Linux操作系统和Windows操作系统之间的文件复制(大文件和小文件都适用)、资源共享、打印服务更加便利。

二、Samba 概述

(一)Samba简介

Samba 是在linux /unix 系统上实现SMB( Session Message Block) 协议的一个免费软件, SMB是一个协议缩写,Server Message Block是SMB的全拼,我们可以将其看作是局域网络中共享文件和打印机的一种协议,我们可以将其架设成一个功能非常强大的文件服务器,其功能类似windows操作系统的网上邻居。通过安装Samba服务,Windows可以在网上邻居中浏览Linux操作系统。Windows和Linux客户端的用户可以通过用户名和密码登录到Linux 系统中的Samba服务器中,在Linux 系统中实现浏览、创建、删除、修改、复制文件等功能,从而实现Windows与Linux 、Linux与Linux系统之间的资源共享[2]。

Samba是一个免费的软件,这款软件包含服务器端和客户端。通过SMB协议,客户端应用程序无需将服务器端的文件下载到本地的情况下,可以在Windows 与 Unix-Like以及Linux与UNIX系统不同的平台、局域网和广域网等不同的网络环境下读、写服务器上的文件,不同于FTP服务,Samba在读写服务器上的文件时,无需将服务器上的文件下载到客户端[3]。SMB协议功能强大,除了可以实现局域网络中的文件共享服务,本地客户端通过应用程序还可以实现访问远程Samba服务器端的文件和打印机、Windows 网络上的主机名称解析、装置的分享等功能。

Samba服务由2个核心守护进程组成,分别是smbd和nmbd。Smbd命令(全称为samba daemon),smbd 守护进程处理来自 SMB 客户机(如 Windows 客户机)的 CIFS/SMB 请求,可分享文件与打印机等网络资源供Windows相关的用户端程序存取服务等;nmbd守护进程的作用是Samba服务器对Samba客户端进行名字解析和浏览服务,浏览服务的主要作用是将服务器上可供访问的共享资源以列表的方式显示在客户端。

(二)Samba服务工作原理

Samba服务的功能非常强大,这与它在Linux和UNIX系统上实现SMB协议有大的关系。SMB软件能够让 Windows、Linux、Unix、 DOS 之间互相的分享数据,SMB协议能够提供目录列表和打印服务,支持客户端认证和授权功能、名称解析等功能。

早期,SMB协议运行于NBT协议上,通过设置相关协议,Samba软件不但能够访问局域网中服务器的共享资源,还可以实现在广域网上分享共享资源。

Samba软件由服务器端和客户端组成,客户端可以是Windows系统或者Linux系统。通过SMB协议,被授权的Windows客户端可以通过【网上邻居】窗口查看到Linux服务器中指定的共享的资源列表,如果是Linux操作系统,客户端也能够访问到服务器上已授权的共享资源列表。Samba服务的具体工作流程如图1所示。

1.建立会话

Samba服务工作流程的第一步是Samba客户端向Samba服务器端发送一个请求数据报,数据报中包含客户端已编码的NETBIOS名字。针对有效的会话连接,Samba服务器在接收到客户端请求数据报后,会响应一个NETBIOS session确认数据报,在双方成功建立会话后,客户才能进行接下来的工作流程[4]。

2.协议协商

在客户访问服务器资源前,需要进行协商,具体过程:Samba客户端首先会发送一个SMB negprot指令作为请求数据报,此数据报的目的是告知服务器其所支持的SMB协议类型。服务器在接收到请求信息后,以SMB negprot指令作为响应数据报,根据客户端的请求信息,服务器选择最合适通信的SMB类型。如果服务发现列表中没有可以使用的SMB版本,在响应信息中会返回oXFFFFH信息,从而结束此次通信。

3.建立连接

在服务器和客户端完成协议协商后,会确定通信所使用的SMB协议版本。之后,客户端向服务器发送一个名为SesssetupX的指令请求数据报,数据报中包含有客户端作为认证信息的账号和密码。服务器在收到请求数据报之后,会响应一个SesssetupX数据报作为应答,用来拒绝或運行客户端的请求,如果Samba客户端的提交的请求数据报中的信息通过验证,服务器会为客户端用户分配一个UID供双方通信使用。

4.访问共享资源

当客户端和服务器完成了协商和认证之后,Samba客户端就可以访问Samba服务器中的共享资源,此时客户具有访问服务器的权限,但是没有列明具体的资源名称。客户端会发送一个tree connect指令或SMB TconX指令数据报,数据报包含有客户所访问资源的具体名称,服务器在接收到客户端的请求信息后,会响应一个SMB TconX的数据包作为应答信息,以表示此次请求是接受或拒绝。如果客户端请求成功,Samba服务器会对此次连接分配TID,此后便可以实现资源共享。

5.使用资源

连接到相应资源后,Samba客户端就可以通过向服务器发送响应的指令打开、读取、写入和关闭文件。

6.断开连接

完成共享操作后,客戶端需要结束共享并断开与服务器的连接,以节省网络资源。此时Samba客户端首先会发送一个名为tree disconnect的请求数据报,用来结束与服务器的共享服务,同时与服务器断开连接。

三、Samba 实验设计

(一)Samba 应用场景

某学校计算机课室有Samba服务器管理员system、任课老师teacher、课室管理员manager、学生student共4个小组,Samba服务器使用Linux操作系统,系统版本为RHEL 7,其他组成员使用的操作系统不做限制,此次实验设计为建立在RHEL 7之上的安全文件共享方案。实验中,在服务器上为每个用户组分配对应的共享空间,teacher组和manager组有共用的一个空间,其他组成员不能访问;我们建立一个名为sucai的只读权限的空间,供所有用户(包括匿名用户)访问;另外再建立一个可供所有用户(包括匿名用户)读写的共享空间,用来存放公共或临时性的文件。

(二)项目目标

System组:用来管理和维护Samba服务器,具有全部权限,管理所有Samba空间的权限。

私有空间:用户组的私有空间除了小组成员本身和system组以外,其他用户不可访问(包括列表、读和写)。

素材库sucai:作为公共的资源存储空间,为所有用户读设置读取但不能写入数据的权限。

teacher组和manager组的共享教学kejian空间,teacher组和manager组之外的用户不能访问。

public空间:供所有用户读取、写入、删除。

(三)Samba Server安装与配置

1. Samba服务的安装

配置SAMBA SERVER前的准备步骤:安装Linux操作系统(本文不做介绍)与SAMBA 服务。

第1步:检测Linux系统是否已经安装了SAMBA 服务,具体命令如下所示:

rpm -qa | grep samba

如查询结果为空,则说明服务器暂未安装SAMBA服务。

第2步:若系统未安装SAMBA服务,(本次实验)使用yum命令安装SAMBA服务,具体步骤如下:

从网络上下载Linux 的镜像文件,挂载ISO安装镜像,命令如下:

mkdir /mnt/cdrom/

mount /dev/cdrom /mnt/cdrom/

第3步:制作用于安装的yum源文件;编辑dvd.repo文件,具体操作如下:

编辑vim /etc/yum.repos.d/dvd.repo文件,添加以下内容:

[dvd]

name=dvd

baseurl=file:///mnt/cdrom

gpgcheck=0

enable=1

第4步:使用yum命令查看Samba软件包的信息,命令如下:

yum info samba;

第5步:使用yum命令在SAMBA服务器上安装SAMBA服务:

yum clean all

yum install Samba -y;

第6步:软件包安装完毕,再次进行查询;

rpm -qa | grep samba

samba-4.4.4-9.el7.x86_64

……

如出现以上内容,说明Samba服务器已正常安装Samba软件。

2. Samba共享资源的配置

第1步:建立共享目录,并在其下建立用户组文件夹。

建立共享目录:mkdir /classroom

创建用户组system、 teacher、 manager 、student文件夹:

mkdir /classroom/system

……

第2步:创建用户和组。

先使用groupadd命令添加用户组,然后各用户组添加对应的用户,执行useradd命令和passwd命令,为的账号及密码:

groupadd system

……

创建系统用户

useradd -G system system1

第3步:添加相应的Samba账号

为各组成员添加相应Samba账号:

smbpasswd -a system1

New SMB password:

Retype new SMB password:

Added user system1.

smbpasswd -a teacher1

smbpasswd -a manager1

smbpasswd -a student1

……

第4步:设置文件夹权限

chown system1:system /classroom/system/

……

chmod 770 /classroom/*

chmod 644 /classroom/sucai/

chmod 777 /classroom/public/

……

更改文件的访问控制列表,设置特定目录的权限

setfacl -m d:g:system:rwx *

……

指定特定目录及其子目录下新建的文件或目錄对于用户system1都有读写执行的权限

setfacl -m u:system1:rwx sucai/

……

3. Samba服务器端配置

第1步:编辑Samba服务器配置文件,配置文件为smb.conf。

编辑配置文件所使用的工具为vim,具体命令为:

vim /etc/samba/smb.conf,

在文件中须包含以下关键代码内容:

[classroom]   #设置共享名称,供网络用户访问时使用;

comment = classroom   #备注信息,方便用户识别;

path = /classroom #设置共享资源的原始完整路径,此处的路径为绝对路径;

public = yes #允许匿名访问;

writable = yes #设置目录,允许用户读写;

编辑完成后,保存并退出。

第2步:重启服务器端的Samba 服务。

systemctl start smb #启动smb服务;

systemctl start nmb #启动nmb服务;

systemctl enable smb nmb #设置smb服务nmb服务为开机启动;

第3步:配置防火墙及共享目录的context值。

让防火墙放行Samba服务,

firewall-cmd --permanent --add-service=samba //让防火墙放行Samba服务;

success

firewall-cmd –reload //重新加载防火墙;

更改共享目录的context值,

chcon -t samba_share_t /classroom/ -R

(四)测试

第1步 :Windows客户端访问Samba 共享

Samba共享服务器可以部署在linux系统上,也可以部署在Windows系统上。无论是哪一种部署方式,通过Windows系统进行访问时的操作步骤和方法是一样的。此次实验场景设计为在Linux系统上部署Samba共享服务,下面我们通过Windows系统来访问Samba服务。

选择“开始”-“运行”命名,使用UNC路径直接进行访问,输入\\192.168.1.3。打开“Windows安全”对话框,输入system1的用户名和密码,登录后可以正常访问classroom共享文件夹。

第2步: Linux客户端访问Samba 共享

Samba服务程序不仅能实现Windows客户端访问Linux系统资源,还可以实现Linux系统之间的文件共享,Samba服务器主机的IP地址为192.168.1.3,在Linux系统中,我们需要安装Samba客户端需要用到的服务和支持文件共享服务的软件包(cifs-utils)。

在Linux系统上安装samba-client和cifs-utils,具体命令如下:

yum install samba-client -y

yum install cifs-utils –y

使用smbclient命令行共享访问模式浏览共享资料,此时我们使用teach组的teach1用户登录,具体命令如下:

smbclient  //192.168.1.3/classroom  -U teacher1%teacher1

切换到用户组所在文件夹,新建一个目录进行测试。

通过测试,Windows和linux客户端成功访问Samba服务器资源,权限测试正常。

四、结束语

通过实验,实现Windows和linux客户端访问Samba服务器共享资源,本文设计了一个基本的实验场景,给出了关键步骤的详细截图,结合文件夹、用户以及相关权限的设置,通过Samba资源共享及相关权限的测试和分析,使学生更好地理解SMB相关概念以及Samba客户端和服务器的工作流程及原理,为后续的Linux理论学习、实践、实验打下基础。

作者单位:沈劲桐    广东省外语艺术职业学院

沈劲桐(1986-),男,湖南株洲,硕士,中级网络工程师,研究方向:计算机网络。

参  考  文  献

[1]任志远.Linux服务器安全防护部署[J].软件(教育现代化)(电子版),2019(4):36.

[2]李刚,唐江浪,郭丽华.基于人机交互解释系统的Samba服务器研究与应用[J].软件,2012(07).

[3]赵丽.Linux案例教学之samba服务器配置[J].林区教学,2012(03):79-80.

[4]文戈.中山火炬职业技术学院校园网安全技术研究与实施[D].重庆大学,硕士(专业:软件工程);2009.