一、先惡狠狠地吐槽一下:
這篇随筆真是讓我折騰了2天2夜才敢下筆寫!!!為什麼呢?之前是通過去Samba的官網下載下傳的源碼包,也就是.tar.gz來進行安裝配置,不過這個讓我折騰來折騰去就是沒折騰出結果,還花了我整整1天1夜的時間,最後實在是熬不住了,想通過yum來重新進行Samba伺服器的安裝與配置,但是要使用yum首先必須是CentOS要聯網,而我又沒有找到Samba的rpm包,而之前一直沒有搞定在虛拟機中的CentOS上網的問題,是以新的糾結又開始了,首先得先想辦法讓虛拟機能上網,這段經曆已經記錄下來了,可以檢視上一篇随筆--Linux學習之CentOS(十)--虛拟機下的CentOS如何上網
在經過一番痛苦的搜尋、嘗試之後,虛拟機上的CentOS終于能夠上網了,當時我的那個熱淚盈眶啊。。。。。。在能上網之後,我迫不及待地準備使用yum來重新安裝我的Samba伺服器。。。。。。至此,才開始下筆記錄這段艱辛的曆程!!!!!
二、Samba的簡介:
Samba是一個能讓Linux系統應用Microsoft網絡通訊協定的軟體,而SMB是Server Message Block的縮寫,即為伺服器消息塊 ,SMB主要是作為Microsoft的網絡通訊協定,後來Samba将SMB通信協定應用到了Linux系統上,就形成了現在的Samba軟體。後來微 軟又把 SMB 改名為 CIFS(Common Internet File System),即公共 Internet 檔案系統,并且加入了許多新的功能,這樣一來,使得Samba具有了更強大的功能。
Samba最大的功能就是可以用于Linux與windows系統直接的檔案共享和列印共享,Samba既可以用于windows與Linux 之間的檔案共享,也可以用于Linux與Linux之間的資源共享,由于NFS(網絡檔案系統)可以很好的完成Linux與Linux之間的資料共享,因 而 Samba較多的用在了Linux與windows之間的資料共享上面。
SMB是基于客戶機/伺服器型的協定,因而一台Samba伺服器既可以充當檔案共享伺服器,也可以充當一個Samba的用戶端,例如,一台在 Linux 下已經架設好的Samba伺服器,windows用戶端就可以通過SMB協定共享Samba伺服器上的資源檔案,同時,Samba伺服器也可以通路網絡中 其它windows系統或者Linux系統共享出來的檔案。
Samba在windows下使用的是NetBIOS協定,如果你要使用Linux下共享出來的檔案,請确認你的windows系統下是否安裝了NetBIOS協定。
組成Samba運作的有兩個服務,一個是SMB,另一個是NMB;SMB是Samba 的核心啟動服務,主要負責建立 Linux Samba伺服器與Samba客戶機之間的對話, 驗證使用者身份并提供對檔案和列印系統的通路,隻有SMB服務啟動,才能實作檔案的共享,監聽139 TCP端口;而NMB服務是負責解析用的,類似與DNS實作的功能,NMB可以把Linux系統共享的工作組名稱與其IP對應起來,如果NMB服務沒有啟 動,就隻能通過IP來通路共享檔案,監聽137和138 UDP端口。
三、Samba伺服器安裝(.tar.gz源碼安裝篇)
1.擷取Samba的源碼包并且進行解壓縮
首先先記錄下自己折騰了一天一夜的源碼安裝Samba伺服器,雖然最後沒有成功,但是當中的辛酸苦辣自己可是吃了個透。。。。。
要下載下傳Samba的源碼包,當然得去Samba的官方網站,http://www.samba.org/samba/ ,目前最新版本已經是4.0.4了,我下載下傳的是3.6.13版本的。
在下載下傳好後通過ISO鏡像挂載到CentOS上,(因為我已經安裝了VMware-Tools,是以可以直接将下載下傳好的源碼包複制粘貼到虛拟機中的CentOS裡面)。
然後我們将samba-3.6.13.tar.gz拷貝到了/home目錄下,然我我們執行以下指令來進行解壓縮:
2.配置configure
我們在對源碼包進行解壓縮後,會在/home下看到一個/samba-3.6.13的目錄,也就是剛才解壓縮後的samba,我們進入到該目錄的source3目錄下:
然後執行以下指令,進行配置:
3.生成和安裝make && make install
在對samba進行configure以後,我們要對其源碼包進行編譯,在環境配置指令./configure成功執行後,可以運作指令
來生成二進制可執行檔案,這可能需要五分鐘。成功生成可執行檔案後,可以通過下面指令
來進行安裝。系統預設的安裝路徑是/usr/local/samba。
4.配置動态連結庫路徑
安裝完成後,我們需要配置動态連結庫路徑,因為運作samba的進行smbd和nmbd需要到目錄/usr/local/samba/lib下的動态連結 庫檔案。但是該目錄不是系統預設的動态連結庫檔案搜尋路徑,于是我們需要将該目錄添加到檔案ld.so.conf中。執行下面的指令
然後,打開ld.so.conf檔案,并在該檔案中加入下面這一行内容
然後執行指令
來更新動态連結庫緩沖。
5.samba配置檔案smb.conf
samba在運作過程中需要用到配置檔案smb.conf。smb.conf配置檔案是samba最重要的配置檔案,該檔案定義了samba的安全機制、檔案共享和列印共享的目錄和參數以及其他一些系統配置功能。
配置檔案smb.conf的預設路徑是/usr/local/samba/lib/smb.conf,我們可以在運作smbd程序時,通過-s選項 來執行特定的smb.conf檔案,一般不推薦使用-s選項,因為其配置工具,如smbclient、testparm等預設都是讀 取/usr/local/samba/lib/smb.conf檔案。
因為我們在samba的lib下還不存在smb.conf檔案,我們可以通過如下指令從samba的安裝目錄裡面copy一份到lib目錄下:
此時我們可以看看這個檔案,看看裡面都有什麼配置資訊:
6.主配置檔案smb.conf


7.啟動Samba伺服器
samba有兩個主要的程序smbd和nmbd。smbd程序提供了檔案和列印服務,而nmbd則提供了NetBIOS名稱服務和浏覽支援,幫助SMB客戶定位伺服器,處理所有基于UDP的協定。
配置smb.conf檔案後,在開始運作samba的服務程序之前。我們需要先做一些準備工作。運作smbpasswd指令(在目錄/usr/local/samba/bin下)
然後運作指令
下面是運作samba的服務程序smbd和nmbd
此時我們可以通過如下指令來進行檢視服務是否已經啟動:
上面的-D選項指定smbd和nmbd以守護程序的方式啟動.以守護程序 方式啟動smbd和nmbd的優勢是響應速度快,但是要關閉的話隻能kill掉。
8.對Samba伺服器進行測試檢查
在啟動samba之後,我們可以在本機使用smbclient(目錄/usr/local/samba/bin下)來進行測試。下面指令
正常情況下會列出如下的資訊:


但是!!!我一直沒能出現這個,折騰了我好久都沒有搞定。。。。。是以在實在無法忍受後換了yum來進行安裝。
我們也可以通過smbclient來通路samba伺服器提供的服務,其指令格式如下:
其中serverAddress是要通路的samba伺服器的IP位址,aservice指定samba伺服器上提供的某個服務名稱,選項-U username指定要以哪個使用者名來通路samba伺服器。例如:
上面個smb: \>表明了通路成功,此時我們可以輸入一些指令來在samba伺服器上進行操作,比如ls、mkdir等。q或quit指令執行退出,并斷開連接配接。
如果我們需要在windows上來通路CentOS上的共享檔案夾,可以在網路上的芳鄰中通過建立網路上的芳鄰來通路,或者在【開始】——【運作】中輸入\\192.168.113.128\來通路samba伺服器192.168.113.128上面提供的服務。
/********************************************這是一條華麗的分界線************************************************/
四、Samba伺服器安裝(通過yum來進行安裝)
在上面的源碼安裝失敗未果後,我果斷選擇了放棄,于是想着采用yum來進行安裝,直接經曆的艱辛過程就不再多陳述了。。。。。。。。。
有關yum的各種指令詳解将會在後續的Linux學習中記錄出來,這裡隻是簡單的通過使用yum來進行Samba的安裝。
1.通過yum來進行Samba伺服器,注意,如果通過yum方式來下載下傳軟體,格式都是rpm的格式(有關rpm的指令詳解也會在後續的Linux學習中記錄下來)
在等待了一番時間後,我們可以看到如下界面(通過yum方式安裝時,有依賴關系的包samba-common、samba-winbind-clients、libsmbclient将自動安裝上去。):
安裝包的說明:
經過一番下載下傳、安裝等待以後,如果出現以下界面,則表示Samba以及與Samba相關的包以及安裝成功了
2.檢視安裝結果
我們可以通過如下指令來檢視Samba的安裝結果
得到的結果如下:
3.啟動Samba伺服器
啟動Samba伺服器可以通過 /etc/init.d/smb start/stop/restart 來啟動、關閉、重新開機Samba服務,啟動SMB服務如下所示:
例如:
4.檢視Samba服務的啟動情況
我們可以通過 service smb status 指令來檢視服務啟動情況,如:
5.設定smb、nmb服務開機自啟動
通過 chkconfig --list | grep smb 指令我們可以檢視smb服務在各個啟動級别的啟動情況,通過 chkconfig --level 35 smb on 指令可以使的smb服務在3、5啟動級别時随着系統啟動而自動啟動,如:
6.關閉防火牆
如果不關閉防火牆,Samba伺服器可能就通路不了
五、配置Samba伺服器
Samba的主配置檔案為/etc/samba/smb.conf


下面我們通過兩個例子來驗證一下Samba伺服器是否可以正常通路
執行個體一:現有一個工作組workgroup,需要添加samba伺服器作為檔案伺服器,并釋出共享目錄/share,共享名為public,此共享目錄允許所有員工通路。
1.首先我們要修改一下我們的smb.conf檔案,(我們最好先将這個檔案備份一下)


2.因為上面設定了共享目錄為/share,下面就需要建立/share目錄:
然後在該目錄下建立兩個空檔案:
由于要設定匿名使用者(也就是所有的使用者)可以下載下傳或上傳共享檔案,是以要給/share目錄授權為nobody權限。
3.重新開機smd、nmd服務:
4.測試smb.conf是否配置成功
我們可以通過testparm來驗證剛修改的smb.conf是否配置有錯


5.通路Samba伺服器的共享檔案
a.在Linux下通路Samba伺服器的共享檔案


【注意】如果在出現smb: \>時,則表示Samba伺服器已經配置成功,我們可以通過 ls 指令來檢視該分享檔案夾下面的檔案清單資訊,如果是第一次通路可能會在輸入ls 以後出現以下錯誤:
解決方法如下:關閉SELIUNX
SELINUX幾種狀态表示:
是以我們通過以下指令将SELIUNX設定成disabled或者permissive就行了
這時我們再在上面的smb: \> 輸入 ls指令時,就可以看到我們共享檔案夾裡面的東西了
b.在windows系統中通路Samba伺服器的共享檔案
通過【開始】——【運作】中輸入\\192.168.113.128\來通路samba伺服器192.168.113.128上面提供的服務。
執行個體二:一個公司現有多個部門,因工作需要,将hr部的資料存放在samba伺服器的/hr 目錄中集中管理,以便hr人員浏覽,并且該目錄隻允許hr部員工通路。
1.首先我們需要添加hr組以及hr組的組員
建立使用者的同時加入到相應的組中的方式:useradd -g 組名 使用者名
2.在根目錄下建立/hr 檔案夾
3.将剛才建立的兩個帳戶添加到samba的賬戶中,通過 smbpasswd -a USER姓名 指令
4.修改主配置檔案如下:


5.重新加載主配置檔案smb.conf,通過service smb reload 指令
6.到windows用戶端驗證,通路\\192.168.113.128,提示輸入使用者名和密碼,在此輸入chris驗證,如下圖:
7.通路成功,可以看到公共的public目錄,使用者chris的宿主目錄,和其有權限通路的hr目錄
六、Linux用戶端通路操作
上面介紹了windows用戶端通路Samba伺服器的操作,那麼在Linux作為用戶端時,檢視其它Linux Samba伺服器共享的檔案時,我們通過可以對其伺服器共享的檔案進行操作,這時用到smbclient這個工具,系統預設自帶了這個指令,Smbclient常見用法介紹如下:
1、檢視Samba伺服器的共享資料
"-L"即為list的含義,"-U"是user的意思,如果Samba伺服器是無密碼通路的話,可以省略"-U Samba使用者名"。
例如:samba需要密碼登陸時,檢視共享方法如下:
Samba無密碼通路時,執行如下指令:
password: 直接回車即可。
2、登陸Samba伺服器
如果需要在Linux用戶端登陸Samba伺服器,用法如下:
例如下面執行的操作:
操作過程與登陸FTP伺服器很類似,登陸Samba伺服器後,就可以進行檔案的上傳與下載下傳,如果有足夠的權限,還可以進行修改檔案操作。
大概花了兩個小時的時間來整理寫出了這篇博文,直接也參考了許多其他朋友寫的博文,給了我很多幫助,這裡隻是Samba伺服器的安裝配置第一篇,萬事開頭難,花了兩天兩夜終于過了第一個難關,在以後學習Linux的道路上時将會繼續記錄自己的學習心得!!!!!!
學習時的痛苦是暫時的 未學到的痛苦是終生的