linux之samba使用
工作中,很多時候,我匯出檔案,或者上傳檔案的時候經常失敗,報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目錄下新建一個檔案,然後再客戶端檢視,是否能看到,如果能就可以了