摘要:高職院校以培養(yǎng)應(yīng)用型、技術(shù)型、技能型、實用性人才為目標(biāo),在計算機(jī)學(xué)科教學(xué)過程中,項目驅(qū)動教學(xué)法最能體現(xiàn)其教學(xué)特點。通過設(shè)計實驗場景,讓學(xué)生在做中學(xué),做到理論與實際相結(jié)合,提高學(xué)生的動手能力和學(xué)習(xí)熱情、從而增強(qiáng)學(xué)生分析和解決問題的能力、進(jìn)一步加深對理論知識的理解。該文首先對Samba做了介紹,接著介紹了Samba服務(wù)器的配置,最后通過設(shè)計項目場景和具體實驗完成了Samba服務(wù)器的配置、管理及測試。
關(guān)鍵詞:Linux; Samba協(xié)議;共享資源;Windows;訪問安全
一、引言
Linux作為一種免費(fèi)使用和自由傳播的類UNIX操作系統(tǒng),具有開源、可靠、安全、穩(wěn)定、多平臺等特點。Linux服務(wù)器在各行各業(yè)中有廣泛的應(yīng)用,Linux服務(wù)可以提供數(shù)據(jù)庫管理和網(wǎng)絡(luò)服務(wù)等內(nèi)容,它不僅性能高,而且是一種開源且免費(fèi)的服務(wù)器[1]。目前,多家廠商通過修改源代碼以滿足實際需求,同時,由于Linux系統(tǒng)自身結(jié)構(gòu)的的優(yōu)勢,其數(shù)據(jù)和業(yè)務(wù)處理能力非常強(qiáng),其高安全性和穩(wěn)定性能夠提高服務(wù)器的可用性,從而能夠?qū)崿F(xiàn)業(yè)務(wù)的穩(wěn)定、高效運(yùn)行。因此,市場上大部分服務(wù)器均采用Linux 系統(tǒng)架構(gòu),作為最先連接Linux和Windows平臺之間的橋梁,Samba服務(wù)器的文件共享功能,使得 Linux操作系統(tǒng)和Windows操作系統(tǒng)之間的文件復(fù)制(大文件和小文件都適用)、資源共享、打印服務(wù)更加便利。
二、Samba 概述
(一)Samba簡介
Samba 是在linux /unix 系統(tǒng)上實現(xiàn)SMB( Session Message Block) 協(xié)議的一個免費(fèi)軟件, SMB是一個協(xié)議縮寫,Server Message Block是SMB的全拼,我們可以將其看作是局域網(wǎng)絡(luò)中共享文件和打印機(jī)的一種協(xié)議,我們可以將其架設(shè)成一個功能非常強(qiáng)大的文件服務(wù)器,其功能類似windows操作系統(tǒng)的網(wǎng)上鄰居。通過安裝Samba服務(wù),Windows可以在網(wǎng)上鄰居中瀏覽Linux操作系統(tǒng)。Windows和Linux客戶端的用戶可以通過用戶名和密碼登錄到Linux 系統(tǒng)中的Samba服務(wù)器中,在Linux 系統(tǒng)中實現(xiàn)瀏覽、創(chuàng)建、刪除、修改、復(fù)制文件等功能,從而實現(xiàn)Windows與Linux 、Linux與Linux系統(tǒng)之間的資源共享[2]。
Samba是一個免費(fèi)的軟件,這款軟件包含服務(wù)器端和客戶端。通過SMB協(xié)議,客戶端應(yīng)用程序無需將服務(wù)器端的文件下載到本地的情況下,可以在Windows 與 Unix-Like以及Linux與UNIX系統(tǒng)不同的平臺、局域網(wǎng)和廣域網(wǎng)等不同的網(wǎng)絡(luò)環(huán)境下讀、寫服務(wù)器上的文件,不同于FTP服務(wù),Samba在讀寫服務(wù)器上的文件時,無需將服務(wù)器上的文件下載到客戶端[3]。SMB協(xié)議功能強(qiáng)大,除了可以實現(xiàn)局域網(wǎng)絡(luò)中的文件共享服務(wù),本地客戶端通過應(yīng)用程序還可以實現(xiàn)訪問遠(yuǎn)程Samba服務(wù)器端的文件和打印機(jī)、Windows 網(wǎng)絡(luò)上的主機(jī)名稱解析、裝置的分享等功能。
Samba服務(wù)由2個核心守護(hù)進(jìn)程組成,分別是smbd和nmbd。Smbd命令(全稱為samba daemon),smbd 守護(hù)進(jìn)程處理來自 SMB 客戶機(jī)(如 Windows 客戶機(jī))的 CIFS/SMB 請求,可分享文件與打印機(jī)等網(wǎng)絡(luò)資源供Windows相關(guān)的用戶端程序存取服務(wù)等;nmbd守護(hù)進(jìn)程的作用是Samba服務(wù)器對Samba客戶端進(jìn)行名字解析和瀏覽服務(wù),瀏覽服務(wù)的主要作用是將服務(wù)器上可供訪問的共享資源以列表的方式顯示在客戶端。
(二)Samba服務(wù)工作原理
Samba服務(wù)的功能非常強(qiáng)大,這與它在Linux和UNIX系統(tǒng)上實現(xiàn)SMB協(xié)議有大的關(guān)系。SMB軟件能夠讓 Windows、Linux、Unix、 DOS 之間互相的分享數(shù)據(jù),SMB協(xié)議能夠提供目錄列表和打印服務(wù),支持客戶端認(rèn)證和授權(quán)功能、名稱解析等功能。
早期,SMB協(xié)議運(yùn)行于NBT協(xié)議上,通過設(shè)置相關(guān)協(xié)議,Samba軟件不但能夠訪問局域網(wǎng)中服務(wù)器的共享資源,還可以實現(xiàn)在廣域網(wǎng)上分享共享資源。
Samba軟件由服務(wù)器端和客戶端組成,客戶端可以是Windows系統(tǒng)或者Linux系統(tǒng)。通過SMB協(xié)議,被授權(quán)的Windows客戶端可以通過【網(wǎng)上鄰居】窗口查看到Linux服務(wù)器中指定的共享的資源列表,如果是Linux操作系統(tǒng),客戶端也能夠訪問到服務(wù)器上已授權(quán)的共享資源列表。Samba服務(wù)的具體工作流程如圖1所示。
1.建立會話
Samba服務(wù)工作流程的第一步是Samba客戶端向Samba服務(wù)器端發(fā)送一個請求數(shù)據(jù)報,數(shù)據(jù)報中包含客戶端已編碼的NETBIOS名字。針對有效的會話連接,Samba服務(wù)器在接收到客戶端請求數(shù)據(jù)報后,會響應(yīng)一個NETBIOS session確認(rèn)數(shù)據(jù)報,在雙方成功建立會話后,客戶才能進(jìn)行接下來的工作流程[4]。
2.協(xié)議協(xié)商
在客戶訪問服務(wù)器資源前,需要進(jìn)行協(xié)商,具體過程:Samba客戶端首先會發(fā)送一個SMB negprot指令作為請求數(shù)據(jù)報,此數(shù)據(jù)報的目的是告知服務(wù)器其所支持的SMB協(xié)議類型。服務(wù)器在接收到請求信息后,以SMB negprot指令作為響應(yīng)數(shù)據(jù)報,根據(jù)客戶端的請求信息,服務(wù)器選擇最合適通信的SMB類型。如果服務(wù)發(fā)現(xiàn)列表中沒有可以使用的SMB版本,在響應(yīng)信息中會返回oXFFFFH信息,從而結(jié)束此次通信。
3.建立連接
在服務(wù)器和客戶端完成協(xié)議協(xié)商后,會確定通信所使用的SMB協(xié)議版本。之后,客戶端向服務(wù)器發(fā)送一個名為SesssetupX的指令請求數(shù)據(jù)報,數(shù)據(jù)報中包含有客戶端作為認(rèn)證信息的賬號和密碼。服務(wù)器在收到請求數(shù)據(jù)報之后,會響應(yīng)一個SesssetupX數(shù)據(jù)報作為應(yīng)答,用來拒絕或運(yùn)行客戶端的請求,如果Samba客戶端的提交的請求數(shù)據(jù)報中的信息通過驗證,服務(wù)器會為客戶端用戶分配一個UID供雙方通信使用。
4.訪問共享資源
當(dāng)客戶端和服務(wù)器完成了協(xié)商和認(rèn)證之后,Samba客戶端就可以訪問Samba服務(wù)器中的共享資源,此時客戶具有訪問服務(wù)器的權(quán)限,但是沒有列明具體的資源名稱。客戶端會發(fā)送一個tree connect指令或SMB TconX指令數(shù)據(jù)報,數(shù)據(jù)報包含有客戶所訪問資源的具體名稱,服務(wù)器在接收到客戶端的請求信息后,會響應(yīng)一個SMB TconX的數(shù)據(jù)包作為應(yīng)答信息,以表示此次請求是接受或拒絕。如果客戶端請求成功,Samba服務(wù)器會對此次連接分配TID,此后便可以實現(xiàn)資源共享。
5.使用資源
連接到相應(yīng)資源后,Samba客戶端就可以通過向服務(wù)器發(fā)送響應(yīng)的指令打開、讀取、寫入和關(guān)閉文件。
6.斷開連接
完成共享操作后,客戶端需要結(jié)束共享并斷開與服務(wù)器的連接,以節(jié)省網(wǎng)絡(luò)資源。此時Samba客戶端首先會發(fā)送一個名為tree disconnect的請求數(shù)據(jù)報,用來結(jié)束與服務(wù)器的共享服務(wù),同時與服務(wù)器斷開連接。
三、Samba 實驗設(shè)計
(一)Samba 應(yīng)用場景
某學(xué)校計算機(jī)課室有Samba服務(wù)器管理員system、任課老師teacher、課室管理員manager、學(xué)生student共4個小組,Samba服務(wù)器使用Linux操作系統(tǒng),系統(tǒng)版本為RHEL 7,其他組成員使用的操作系統(tǒng)不做限制,此次實驗設(shè)計為建立在RHEL 7之上的安全文件共享方案。實驗中,在服務(wù)器上為每個用戶組分配對應(yīng)的共享空間,teacher組和manager組有共用的一個空間,其他組成員不能訪問;我們建立一個名為sucai的只讀權(quán)限的空間,供所有用戶(包括匿名用戶)訪問;另外再建立一個可供所有用戶(包括匿名用戶)讀寫的共享空間,用來存放公共或臨時性的文件。
(二)項目目標(biāo)
System組:用來管理和維護(hù)Samba服務(wù)器,具有全部權(quán)限,管理所有Samba空間的權(quán)限。
私有空間:用戶組的私有空間除了小組成員本身和system組以外,其他用戶不可訪問(包括列表、讀和寫)。
素材庫sucai:作為公共的資源存儲空間,為所有用戶讀設(shè)置讀取但不能寫入數(shù)據(jù)的權(quán)限。
teacher組和manager組的共享教學(xué)kejian空間,teacher組和manager組之外的用戶不能訪問。
public空間:供所有用戶讀取、寫入、刪除。
(三)Samba Server安裝與配置
1. Samba服務(wù)的安裝
配置SAMBA SERVER前的準(zhǔn)備步驟:安裝Linux操作系統(tǒng)(本文不做介紹)與SAMBA 服務(wù)。
第1步:檢測Linux系統(tǒng)是否已經(jīng)安裝了SAMBA 服務(wù),具體命令如下所示:
rpm -qa | grep samba
如查詢結(jié)果為空,則說明服務(wù)器暫未安裝SAMBA服務(wù)。
第2步:若系統(tǒng)未安裝SAMBA服務(wù),(本次實驗)使用yum命令安裝SAMBA服務(wù),具體步驟如下:
從網(wǎng)絡(luò)上下載Linux 的鏡像文件,掛載ISO安裝鏡像,命令如下:
mkdir /mnt/cdrom/
mount /dev/cdrom /mnt/cdrom/
第3步:制作用于安裝的yum源文件;編輯dvd.repo文件,具體操作如下:
編輯vim /etc/yum.repos.d/dvd.repo文件,添加以下內(nèi)容:
[dvd]
name=dvd
baseurl=file:///mnt/cdrom
gpgcheck=0
enable=1
第4步:使用yum命令查看Samba軟件包的信息,命令如下:
yum info samba;
第5步:使用yum命令在SAMBA服務(wù)器上安裝SAMBA服務(wù):
yum clean all
yum install Samba -y;
第6步:軟件包安裝完畢,再次進(jìn)行查詢;
rpm -qa | grep samba
samba-4.4.4-9.el7.x86_64
……
如出現(xiàn)以上內(nèi)容,說明Samba服務(wù)器已正常安裝Samba軟件。
2. Samba共享資源的配置
第1步:建立共享目錄,并在其下建立用戶組文件夾。
建立共享目錄:mkdir /classroom
創(chuàng)建用戶組system、 teacher、 manager 、student文件夾:
mkdir /classroom/system
……
第2步:創(chuàng)建用戶和組。
先使用groupadd命令添加用戶組,然后各用戶組添加對應(yīng)的用戶,執(zhí)行useradd命令和passwd命令,為的賬號及密碼:
groupadd system
……
創(chuàng)建系統(tǒng)用戶
useradd -G system system1
第3步:添加相應(yīng)的Samba賬號
為各組成員添加相應(yīng)Samba賬號:
smbpasswd -a system1
New SMB password:
Retype new SMB password:
Added user system1.
smbpasswd -a teacher1
smbpasswd -a manager1
smbpasswd -a student1
……
第4步:設(shè)置文件夾權(quán)限
chown system1:system /classroom/system/
……
chmod 770 /classroom/*
chmod 644 /classroom/sucai/
chmod 777 /classroom/public/
……
更改文件的訪問控制列表,設(shè)置特定目錄的權(quán)限
setfacl -m d:g:system:rwx *
……
指定特定目錄及其子目錄下新建的文件或目錄對于用戶system1都有讀寫執(zhí)行的權(quán)限
setfacl -m u:system1:rwx sucai/
……
3. Samba服務(wù)器端配置
第1步:編輯Samba服務(wù)器配置文件,配置文件為smb.conf。
編輯配置文件所使用的工具為vim,具體命令為:
vim /etc/samba/smb.conf,
在文件中須包含以下關(guān)鍵代碼內(nèi)容:
[classroom] ? #設(shè)置共享名稱,供網(wǎng)絡(luò)用戶訪問時使用;
comment = classroom? ?#備注信息,方便用戶識別;
path = /classroom #設(shè)置共享資源的原始完整路徑,此處的路徑為絕對路徑;
public = yes #允許匿名訪問;
writable = yes #設(shè)置目錄,允許用戶讀寫;
編輯完成后,保存并退出。
第2步:重啟服務(wù)器端的Samba 服務(wù)。
systemctl start smb #啟動smb服務(wù);
systemctl start nmb #啟動nmb服務(wù);
systemctl enable smb nmb #設(shè)置smb服務(wù)nmb服務(wù)為開機(jī)啟動;
第3步:配置防火墻及共享目錄的context值。
讓防火墻放行Samba服務(wù),
firewall-cmd --permanent --add-service=samba //讓防火墻放行Samba服務(wù);
success
firewall-cmd –reload //重新加載防火墻;
更改共享目錄的context值,
chcon -t samba_share_t /classroom/ -R
(四)測試
第1步 :Windows客戶端訪問Samba 共享
Samba共享服務(wù)器可以部署在linux系統(tǒng)上,也可以部署在Windows系統(tǒng)上。無論是哪一種部署方式,通過Windows系統(tǒng)進(jìn)行訪問時的操作步驟和方法是一樣的。此次實驗場景設(shè)計為在Linux系統(tǒng)上部署Samba共享服務(wù),下面我們通過Windows系統(tǒng)來訪問Samba服務(wù)。
選擇“開始”-“運(yùn)行”命名,使用UNC路徑直接進(jìn)行訪問,輸入\\192.168.1.3。打開“Windows安全”對話框,輸入system1的用戶名和密碼,登錄后可以正常訪問classroom共享文件夾。
第2步: Linux客戶端訪問Samba 共享
Samba服務(wù)程序不僅能實現(xiàn)Windows客戶端訪問Linux系統(tǒng)資源,還可以實現(xiàn)Linux系統(tǒng)之間的文件共享,Samba服務(wù)器主機(jī)的IP地址為192.168.1.3,在Linux系統(tǒng)中,我們需要安裝Samba客戶端需要用到的服務(wù)和支持文件共享服務(wù)的軟件包(cifs-utils)。
在Linux系統(tǒng)上安裝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
切換到用戶組所在文件夾,新建一個目錄進(jìn)行測試。
通過測試,Windows和linux客戶端成功訪問Samba服務(wù)器資源,權(quán)限測試正常。
四、結(jié)束語
通過實驗,實現(xiàn)Windows和linux客戶端訪問Samba服務(wù)器共享資源,本文設(shè)計了一個基本的實驗場景,給出了關(guān)鍵步驟的詳細(xì)截圖,結(jié)合文件夾、用戶以及相關(guān)權(quán)限的設(shè)置,通過Samba資源共享及相關(guān)權(quán)限的測試和分析,使學(xué)生更好地理解SMB相關(guān)概念以及Samba客戶端和服務(wù)器的工作流程及原理,為后續(xù)的Linux理論學(xué)習(xí)、實踐、實驗打下基礎(chǔ)。
作者單位:沈勁桐? ? 廣東省外語藝術(shù)職業(yè)學(xué)院
沈勁桐(1986-),男,湖南株洲,碩士,中級網(wǎng)絡(luò)工程師,研究方向:計算機(jī)網(wǎng)絡(luò)。
參? 考? 文? 獻(xiàn)
[1]任志遠(yuǎn).Linux服務(wù)器安全防護(hù)部署[J].軟件(教育現(xiàn)代化)(電子版),2019(4):36.
[2]李剛,唐江浪,郭麗華.基于人機(jī)交互解釋系統(tǒng)的Samba服務(wù)器研究與應(yīng)用[J].軟件,2012(07).
[3]趙麗.Linux案例教學(xué)之samba服務(wù)器配置[J].林區(qū)教學(xué),2012(03):79-80.
[4]文戈.中山火炬職業(yè)技術(shù)學(xué)院校園網(wǎng)安全技術(shù)研究與實施[D].重慶大學(xué),碩士(專業(yè):軟件工程);2009.