工作中,很多時候,我導出文件,或者上傳文件的時候經常失敗,報samba fail,但我並不知道samba是干什么用的,也老是聽同事說什么samba沒有掛載,但我基本上不知道什么是samba,更不要說什么是掛載了,於是乎,我就各種找資料,終於知道什么是samba了。在我經歷的三個項目中,都是用samba來實現多台服務器之間的文件共享,而且挺好用的,所以今天寫下這篇博客,正所謂好記性不如爛筆頭。
一、什么是samba
samba 是基於SMB協議(ServerMessage Block,信息服務塊)的開源軟件,samba也可以是SMB協議的商標。SMB是一種Linux、UNIX系統上可用於共享文件和打印機等資源的協議,這種協議是基於Client\Server型的協議,Client端可以通過SMB訪問到Server(服務器)上的共享資源。當Windows是 Client,CentOS是服務器時,通過Samba就可以實現window訪問Linux的資源,實現兩個系統間的數據交互。samba服務程序已經成為在Linux系統和Windows系統之間共享文件的最佳選擇,當然在Linux系統與Linux系統之間的文件共享也選擇samba。
二、安裝samba
我使用的是centos7,直接用yum安裝就可以
yum install samba
三、配置smb.conf
smb.conf是服務端的配置文件,剛安裝的就自帶smb.conf文件,里面有很多注釋的行,但實際工作是用不了,所以我們把自帶的文件備份一個,復制一個簡潔的主配置文件
mv /etc/samba/smb.conf /etc/samba/smb_bak.conf cat /etc/samba/smb_bak.conf | grep -v "#" | grep -v ";" > /etc/samba/smb.conf
編輯smb.conf文件,刪除homes、printers、print$三項配置,實際工作用不了,然后再后面加上你的共享文件配置,最后內容如下:
[global] workgroup = SAMBA #設定 Samba Server 所要加入的工作組或者域。 security = user #設置用戶訪問Samba Server的驗證方式,一共有四種驗證方式 passdb backend = tdbsam printing = cups printcap name = cups load printers = yes cups options = raw [database] comment = share database #這個是共享文件的描述 path = /data/share #設置共享文件夾的路徑 public = no #設置是否允許匿名訪問 writable = yes
四、創建samba登錄用戶
這個用戶可以直接用Linux用戶,但密碼也需要設置,所以我在這里新建一個samba專用用戶
useradd smb_root
smbpasswd -a smb_root #然后輸入兩次密碼就可
五、創建共享路徑
mkdir -p /data/share
cd /data chmod -R 775 share chown -R smb_root:smb_root share
六、Windows下訪問共享文件
在Windows資源管理器地址上輸入 \\+ip
(比如我的samba服務器IP地址是192.168.1.14
,則輸入\\192.168.1.14
),登陸samba服務
輸入的剛才新增的samba用戶及密碼就行,比如我的就是smb_root和smb_root,這樣就可以訪問了
可以把這個文件映射為一個盤符,選中database,點擊右鍵,選中映射網絡驅動器
點擊確定就可
七、Linux下共享文件
首先在客戶端安裝支持文件共享服務的軟件包cifs-utils
yum install cifs-utils
在Linux客戶端,按照samba服務端的用戶名和密碼、共享域的順序將相關的信息寫入到一個認證文件中
vim auth.smb 寫入如下內容: username = smb_root password = smb_root domain = ZIJIN
在客戶端創建共享目錄,把掛載信息寫入/etc/fstab文件中
mkdir -p /data/share vim /etc/fstab 在最后追加一下信息: //192.168.1.14/data/share /data/share cifs credentials=/root/auth.smb 0 0
掛載文件系統
mount -a
測試,在服務端的/data/share目錄下新建一個文件,然后再客戶端查看,是否能看到,如果能就可以了