Samba文件共享服務器

Samba介紹

在早期網絡世界當中,檔案數據在不同主機之間的傳輸大多是使用 FTP 這個好用的服務器軟件來進行傳送。不過,使用FTP 傳輸檔案卻有個小小的問題,那就您無法直接修改主機上面的檔案數據!也就是說您想要更改Linux 主機上的某個檔案時,必需要由 Server 端將該檔案下載到 Client端後才能修改,也因此該檔案在 Server 與 Client 端都會存在。

既然有這樣的問題,可不可以在 Client 端的機器上面直接取用Server 上面的檔案,如果可以在 Client 端直接進行 Server 端檔案的存取,那麼在Client 端就不需要存在該檔案數據,也就是說,只要有 Server 上面的檔案資料存在就可以!有沒有這樣的檔案系統( File System )?很高興的是,NFS(NetworkFile System)就是這樣的檔案系統之一!我只要在 Client 端將 Server所提供分享的目錄掛載進來,那麼在 Client 的機器上面就可以直接取用 Server上的檔案數據,而且,該數據就像 Client 端上面的partition 一般!而除了可以讓 Unix Like 的機器互相分享檔案的NFS 服務器之外,在微軟 ( Microsoft ) 上面也有類似的檔案系統,那就是 CommonInternet File System, CIFS 這個咚咚啦!CIFS 最簡單的想法就是目前常見的『網上鄰居』。Windows 系統的計算機可以透過桌面上『網上鄰居』來分享別人所提供的檔案數據。不過,NFS僅能讓 Unix 機器溝通, CIFS 只能讓 Windows 機器溝通。傷腦筋,那麼有沒有讓Windows 與 Unix-Like 這兩個不同的平臺相互分享檔案數據的檔案系統?

1991 年一個名叫Andrew Tridgwell 的大學生就有這樣的困擾,他手上有三部機器,分別是跑DOS 的個人計算機、DEC公司的 Digital Unix 系統以及 Sun 的 Unix 系統。在當時,DEC 公司發展出一套稱爲 PATHWORKS 的軟件,這套軟件可以用來分享 DEC 的Unix 與個人計算機的 DOS 這兩個操作系統的檔案數據,可惜讓 Tridgwell 覺得較困擾的是,Sun的 Unix 無法藉由這個軟件來達到數據分享的目的。這個時候 Tridgwell 就想着既然這兩部系統可以相互溝通,沒道理Sun 就必需這麼苦命吧?可不可以將這兩部系統的運作原理找出來,然後讓 Sun這部機器也能夠分享檔案數據呢?爲了解決這樣的的問題,這老兄就自行寫了個程序去偵測當 DOS 與 DEC 的 Unix 系統在進行數據分享傳送時所使用到的通訊協議信息,然後將這些重要的信息擷取下來,並且基於上述所找到的通訊協議而開發出ServerMessage Block (SMB) 這個系統,而就是這套 SMB軟件能夠讓 Unix 與 DOS 互相的分享數據!

因此 Tridgwell就去申請了 SMBServer ( Server Message Block 的簡寫 ) 這個名字來做爲他撰寫的這個軟件的商標,可惜的是,因爲SMB 是沒有意義的文字,因此沒有辦法達成註冊。既然如此的話,那麼能不能在字典裏面找到相關的字詞可以做爲商標來註冊呢?翻了老半天,呵呵!這個SAMBA剛好含有 SMB ,又是熱情有勁的拉丁舞蹈的名稱,不如就用這個名字來做爲商標好了。如此,這成爲我們今天所使用的SAMBA 的名稱由來。

安裝Samba
$ yum install samba samba-client samba-common

Samba-common:這個套件則主要提供了 SAMBA 的主要設定檔(smb.conf) 、 smb.conf 語法檢驗的測試程序 ( testparm )等等。

samba:這個套件主要包含了 SAMBA 的主要 daemon檔案 ( smbd 及 nmbd )、 SAMBA 的文件檔 ( document )、以及其它與 SAMBA 相關的logrotate 設定文件及開機預設選項檔案等。

samba-client:這個套件則提供了當 Linux 做爲SAMBA Client 端時,所需要的工具指令,例如掛載 SAMBA 檔案格式的執行檔 smbmount等等。

Samba用戶

Samba用戶必須是系統用戶但密碼是Samba密碼。

$ useradd wode
$ smbpasswd -a wode
$ pdbedit -a -u wode

Samba賬戶設置別名(/etc/samba/smbusers)

$ vim /etc/samba/smbusers
root = administrator admin
nobody = guest pcguest smbguest
wode = hehe

Samba配置文件

$ cat /etc/samba/smb.conf
[global]
workgroup = WORKGROUP                 #工作組;
server string = Samba Server          #顯示名稱;
security = user                       #安全級別;
load printers = YES                   #加載打印機;
username map = /etc/samba/smbusers    #指定名稱映射文件;

[home]
comment = Home Directories
browseable = no
writable = yes

[wode]                 #提供一個共享名稱,下面都是爲這個共享目錄提供的可選擇參數,根據需求搭配即可,注意參數之間不可相互矛盾;
comment = share        #描述信息;
path = /wode           #共享文件路徑;
public = yes           #是否公開;
browseable = yes       #是否可瀏覽;
writable = yes         #可寫;
read only = no         #是否只讀;
writable_list = user1  #定義哪些用戶可寫;
valid_users = user2    #定義哪些用戶可以使用;
invalid_users = user3  #定義哪些用戶不可以訪問;

[public]
path = /public
public = yes
read only = yes

啓動服務

$ service smb restart
Starting SMB services: [  OK  ]
Starting NMB services: [  OK  ]
Linux掛載Samba共享

需要注意的是掛在端也需要安裝cifs相關的文件系統包

$ yum install cifs*
$ mount -t cifs -o username=username,password=password //IP/share /mnt

Linux開機自動掛載samba共享

$ vim /etc/fstab.conf
//IP/share    /mnt     cifs    credentials=/etc/samba/cred.passwd  0  0
$ vim /etc/samba/cred.passwd
username=user
password=redhat
chmod og=-- /etc/samba/cred.passwd

Linux掛載windows共享

$ mount -o username=administrator //IP/share /mnt
免密碼版

上面都是設置密碼,安全訪問模式。有時候你可能需要免密碼訪問,本人是碰到不同Linux內核版本導致有用戶密碼模式下總是無法掛載成功,後來就使用免密碼模式。共享目錄基本配置如下:

[global]
workgroup = SAMBA
security = user
map to guest = Bad User  

[mysql_data]
comment = mysql data backup
path = /data/backup
public = yes
browseable = yes 
writable = yes
read only = no
guest ok= yes

然後客戶端掛載的時候需要注意,比如:

$ mount -t cifs -o rw //172.18.201.6/mysql_data /mnt          
Password for root@//172.18.201.6/mysql_data:

還是會出現讓輸入密碼的交互模式,你一回車就會掛載上了。有沒有辦法去掉這個輸出呢?再加一個password參數就ok了。

$ mount -t cifs -o password,rw //172.18.201.6/mysql_data /mnt

CIFS協議在我的使用過程中還是比較穩當和性能不錯的,我經常拿來作爲數據庫備份目錄掛載。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章