您現在的位置是:首頁 > 運動

Linux如何搭建Samba檔案共享服務

由 一米八是我呀 發表于 運動2022-08-11
簡介passwd backend:設定共享賬戶檔案的型別,預設使用tdbsam(TDB資料庫檔案)comment:對共享目錄的註釋、說明資訊valid users:有效使用者path:共享目錄在伺服器中對應的實際路徑browseable:該共享

伺服器拒絕訪問怎麼解決

Linux如何搭建Samba檔案共享服務

最近由於學習方面的原因,時間比較緊,只能用零碎時間來整理文件,所以發文章的頻率可能會沒那麼快了,希望親愛的你們多多體諒。然後,因為發文慢了,我有個想法就是把我上課的筆記分享給你們看,但我不知道你們會不會不喜歡,所以想徵求一下你們的意見,歡迎給我留言哦。

前言:隨著計算機網路的出現,各種各樣的伺服器和主機不再是一個單獨的個體。網路給我們帶來的最直接的好處,就是可以在主機之間快速分享資源及相互通訊。接下來就讓我們一起來了解一下跨平臺的檔案共享解決方案——Samba伺服器的構建。

一、Samba服務基礎

在windows網路環境中,主機之間進行檔案和印表機共享是透過微軟公司自己的SMB/CIFS網路協議實現的。SMB(Server Message Block,服務訊息塊)和CIFS(Common Internet File System,通用網際網路檔案系統)協議是微軟的私有協議,在Samba專案出現之前,並不能直接與Linux/UNIX系統進行通訊。

Samba是著名的開源軟體專案之一,它在Linux/UNIX系統中實現了微軟的SMB/CIFS網路協議,從而使得跨平臺的檔案共享變得更加容易。在部署Windows、Linux/UNIX混合平臺的企業環境時,選用Samba可以很好地解決不同系統之間的檔案互訪問題。

1.Samba軟體的組成

(1)Samba軟體包的構成

在系統的安裝光碟中可以找到與Samba相關的幾個軟體包,主要包括服務端軟體samba、客戶端軟體samba-client,用於提供服務端和客戶端程式的公共元件samba-common。大部分軟體包已經隨系統預設安裝好了,使用者可以查詢系統中samba相關軟體包的安裝情況。

圖示:檢視與samba相關的軟體包

Linux如何搭建Samba檔案共享服務

只需要從光碟中找到安裝包檔案samba-4。4。4-9。el7。x86_64。rpm,並進行安裝即可。(可以搭建本地yum安裝,有網的話可以直接yum安裝)

(2)Samba服務的程式元件

Samba伺服器提供smbd、nmbd兩個服務程式,分別完成不同的功能。其中,

smbd負責為客戶機提供伺服器中共享資源(目錄和檔案等)的訪問;nmbd負責提供基於NetBIOS協議的主機名稱解析,以便為Windows網路中的主機進行查詢服務。

安裝好samba軟體包以後,在系統中會新增名為smb和nmb的標準系統服務,管理員可以透過service(centos6)或systemctl(centos7)工具來控制Samba服務的啟動與終止。

圖示:

Linux如何搭建Samba檔案共享服務

其中smbd程式負責監聽TCP協議的139埠(SMB協議)、445埠(CIFS協議),而nmbd服務程式負責監聽UDP協議的137、138埠(NetBIOS協議)。

2.主配置檔案smb.conf

Samba服務的配置檔案位於/etc/samba/目錄,

其中smb。conf是主配置檔案。其中,以“#”號開始的行表示註釋性的文字,在配置共享資料夾時,使用者可以參考檔案中提供的樣例進行設定。

圖示:

Linux如何搭建Samba檔案共享服務

如上圖所示,smb。conf檔案中的配置內容預設包括三個部分

[global]全域性設定:這部分配置項的內容對整個samba伺服器都有效。

[homes]宿主目錄共享設定:設定Linux使用者的預設共享,對應使用者的宿主目錄。當用戶訪問伺服器中與自己使用者名稱同名的共享目錄時,透過驗證後將會自動對映到該使用者的宿主資料夾中。

[printers]印表機共享設定:若需要共享印表機裝置,可以在這部分進行配置。

若需要在smb。conf檔案中設定新的共享檔名,只需要增加一段如“[myshare]”開始共享設定即可,其中“myshare”為使用者自定義的共享名。新的共享資料夾設定可以參考“[homes]”和“[printers]”部分的內容。

下面我們一起了解一下smb。conf檔案中常見的一些配置項及其含義說明。

workgroup:所在工作組名稱

security:安全級別,centos6之前可用值有share、user、server、domain,centos7之後不再支援share,如果配置匿名共享時,需要在全域性引數中新增“map to guest = bad user”這一行內容。

passwd backend:設定共享賬戶檔案的型別,預設使用tdbsam(TDB資料庫檔案)

comment:對共享目錄的註釋、說明資訊

valid users:有效使用者

path:共享目錄在伺服器中對應的實際路徑

browseable:該共享目錄在“網路上的芳鄰”中是否可見

guest ok:是否允許所有人訪問,等效於“public”

writable:是否可寫,與 read only 的作用相反

inherit acls:是否繼承acl(訪問控制列表)

注:Samba 服務設定的讀取、寫入許可權,優先順序要低於檔案系統中設定的許可權

Samba伺服器提供了一個配置檔案檢查工具——testparm程式,使用testparm工具對smb。conf配置檔案的正確性進行檢查,如果發現錯誤將會進行提醒。

圖示:使用testparm工具檢查smb。conf配置檔案

Linux如何搭建Samba檔案共享服務

二、構建檔案共享伺服器

上面我們瞭解了samba服務的基本知識,並瞭解了主配置檔案smb。conf檔案中常用的一些配置項。接下來我們一起了解如何設定資料夾共享,包括匿名訪問和使用者驗證的共享設定,以及賬戶對映和客戶機訪問控制等常見配置。

1.可匿名訪問的共享

設定匿名訪問共享資料夾時,在主配置檔案中主要調整兩個地方即可:其一,由於centos7之後不再支援share,所以,需要在全域性引數中新增“map to guest = bad user”這一行內容,表示允許匿名訪問(如下圖所示);其二,新增一段共享目錄配置。其他配置項可根據實際需要進行更改(如下圖所示)。

圖示:

Linux如何搭建Samba檔案共享服務

Linux如何搭建Samba檔案共享服務

配置完成後,重啟smb服務就可以從Windows客戶機或Linux客戶機匿名訪問此共享了,關於在Linux主機中訪問共享資料夾的方法,將在下文中講解。

千萬注意共享檔案在系統本地的許可權,不然會拒絕訪問,本地許可權規則優先於共享許可權。

2.需要使用者驗證的共享

匿名共享雖然用起來非常方便,但因為任何人都可以訪問到共享的檔案資料,在某些時候可能會導致資訊的洩露。

設定使用者驗證的共享檔案時,只需在新增共享目錄配置時,指定使用者許可權,在此之前,還需要先建立授權的共享賬戶。

(1)建立samba使用者資料庫

為了區別於Linux主機中的系統使用者,通常將用於訪問samba共享資源的使用者稱為共享使用者。Samba伺服器使用獨立的共享賬號資料庫檔案,其中的賬號名稱必須有與它同名的系統使用者想對應,以便主機對共享訪問的讀寫許可權進行控制,但共享使用者的密碼是額外設定的,可以與系統使用者的密碼不一樣。

Samba共享使用者的賬號資料庫檔案預設位於/var/lib/samba/private/passdb。tdb,是一個經過加密的檔案,其中儲存了samba使用者的賬號名稱、登入密碼、賬號可用狀態等資訊。使用pdbedit工具可以對共享使用者進行管理。如下圖

圖示:

Linux如何搭建Samba檔案共享服務

然後執行“pdbedit -L”命令可以列出所有的samba共享使用者,若只想檢視某個使用者的資訊,可以指定使用者名稱稱作為引數,結合“-v”選項可以輸出更詳細的內容。如下圖

圖示:

Linux如何搭建Samba檔案共享服務

當指定的samba使用者不再需要時,可以透過pdbedit工具進行刪除,只要結合“-x”選項並指定samba使用者名稱稱即可。例如:執行“pdbedit -x -u zhangsan”命令可以刪除名為張三的samba賬號。

(2)設定使用者訪問授權

若要使用使用者驗證的samba共享,security安全級別設為“user”。共享目錄的使用者授權設定主要由“valid users”和“write list”配置項指定。當需要授權多個共享使用者時,以逗號或空格進行分隔。如果需要授權一個使用者組,可以使用“@組名”的形式,但需要為組內的每個系統使用者都建立對應的samba共享使用者。

示例:將本地目錄/opt/mytools/釋出為共享資料夾,共享名為tools,要求只有共享使用者wangwu、zhaoliu能夠訪問,其中wangwu使用者具有寫入的許可權。

a。建立共享使用者wangwu、zhaoliu,確認共享目錄。如下圖

Linux如何搭建Samba檔案共享服務

b。修改smb。conf配置檔案,新增名為tools的共享目錄配置段。如下圖

Linux如何搭建Samba檔案共享服務

c。重新載入smb。conf檔案中的配置,或重啟smb服務。

Linux如何搭建Samba檔案共享服務

(3)確定目錄訪問授權

透過samba伺服器共享本地的檔案時,使用者最終是否擁有讀取、寫入許可權,除了需要設定使用者授權以外,還要滿足一個前提條件——即在本地與共享使用者同名的系統使用者對釋出為共享的本地資料夾必須有相應的讀取和寫入的許可權。(上面也有提及到)

設定目錄許可權:chmod 777 /opt/mytools

另外,當透過共享目錄上傳文件時,對於共享使用者所上傳的檔案,建立子目錄的預設許可權可以分別使用配置項“directory mask”、“create mask”進行指定。

示例:若要使用者訪問tools共享檔案時,所上傳的目錄的預設許可權為755,檔案的預設許可權為644,可在配置檔案中新增如下圖所示的內容。

Linux如何搭建Samba檔案共享服務

三、訪問共享資料夾

1.使用smbclient訪問共享資料夾

在系統中,samba-client軟體包提供的smbclient工具可以用於查詢、訪問共享資源。

(1)查詢目標主機的共享資源列表

使用smbclient命令查詢共享資源時,新增“-L”選項,並指定目標主機的IP地址或主機名,新增“-U”選項,並指定使用者名稱稱,在工作組環境中查詢共享資源時,一般不需要使用者驗證,提示輸入密碼時直接按Enter即可。如下圖

Linux如何搭建Samba檔案共享服務

(2)登入並訪問共享資源

透過“//主機地址/共享名”的形式指定共享資料夾的位置。對於允許匿名使用者訪問的共享資料夾,提示輸入密碼時直接按Enter鍵即可。對於需要使用者驗證的共享資料夾,則輸入對應的密碼即可。如下圖

Linux如何搭建Samba檔案共享服務

成功登入samba伺服器後,會出現“smb:\>”提示符,提供一個類似於ftp命令程式的環境。在“smb:\>”環境中,使用特定的命令可以對共享目錄進行列表、上傳、下載等操作。例如:ls用於列表目錄,pwd檢視當前路徑,get和mget用於下載檔案,put和mput用於上傳檔案,使用“?”或“help”命令可以檢視各種互動命令線上幫助資訊。

2.使用mount掛載共享資料夾

Smbclient客戶端工具可以非常方便地登入到samba伺服器,但是隻有將檔案下載到本地以後才能檢視檔案內容,若使用mount工具將共享資料夾掛載到本地,則透過本地的掛載點目錄即可直接使用共享資料夾的內容,使檔案共享更加方便。

使用mount命令掛載共享資源時,只需透過“//主機地址/共享名”的形式指定共享資料夾的位置(視為裝置資源),並指定本地的掛載點目錄即可。

示例:將samba伺服器192。168。4。11中的tools共享目錄掛載到本地的/media/smbdir/資料夾,以共享使用者wangwu進行驗證,可以在客戶機中執行如下圖的操作。

Linux如何搭建Samba檔案共享服務

因為文章有點長我怕好多人都不看完就划過去了,所以文章開頭囉嗦一遍,在這再囉嗦一遍。由於最近學習方面的問題,幾乎沒時間總結文件了,所以只能用零碎時間去整理文件,這樣發文章的頻率可能就沒那麼快了,希望親愛的你們多多體諒。改天有時間我想發一下我上課時的筆記,不知道你們會不會想看,可以給我留言哦。

推薦文章