1. 程式人生 > >簡單的Samba檔案共享服務搭建

簡單的Samba檔案共享服務搭建

我們知道windows間是通過CIFS(Common Internet File System),即網路上的芳鄰實現檔案共享,unix like間通過NFS(Network File System)通過實現檔案共享。那麼我們如何實現unix和windows之間的檔案共享呢?我們可以通過sshclient,和VNC遠端登入和管理Linux主機,這兩種都支援ftp協議。我們通過FTP協議進行檔案更新時,可能因為更改的檔案過多而導致混亂,以至於不確定檔案是否全部都更新。而Samba支援檔案的直接修改,而不是通過拷貝檔案進行更新。下面我們來詳細瞭解Samba服務的基礎配置。

samba主要通過兩個程序smbd和nmbd來提供服務
smbd:管理smb主機共享目錄、檔案、印表機等.主要是針對網路上的共享資源進行管理的服務
nmbd:管理群組,域和NETBIOS NAME解析.提供瀏覽服務,顯示網上絡上的共享資源列表.
可以檢視這兩個程序:
#ps

 首先我們要***重點內容**安裝Samba的客服端和服務端

切換到root使用者下:
#yum -y install Samba
#service smbd restart 重啟服務

這裡寫圖片描述

因為我之前已經安裝好了,所以它提示我無需處理。安裝好了Samba,我們還是老規矩,來看一下它的配置檔案,samba的配置檔案在/etc/samba/目錄下的smb.conf檔案中,我們切換到/etc/samba目錄下:
#cd /etc/samba
#ls

這裡寫圖片描述

我們看到了smb.conf檔案,在更改配置檔案之前我們先做好備份:
#cp /etc/samba/smb.conf /etc/samba/smb.conf.raw
執行完上述命令:

這裡寫圖片描述
我們開啟smb.conf
#vim samba.conf
這裡寫圖片描述
這裡寫圖片描述

我們發現有很多的配置描述資訊,我們過濾掉那些資訊,只看上圖所示的兩部分,GlobalSetings全域性設定,Share Definitions共享設定。
首先看全域性設定:

這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述

首先是使用者基本設定:
workgroup = kellen samba server 所要加入的組或域,是你windows主機所屬的域或者組,這個協議定義的方式是通過WINDOWS相同工作組中獲取到共享資訊。
server string = 對samba server 的註釋,可以隨便填
netbios name = kellenservice 設定Netbios name不可以和workgroup相同。Netbios name用於在Linux和windows之間使用者名稱登入時,提供驗證。
關於語言編碼的設定:
unix charset = utf8 UNIX系統上的編碼
dos charset = cp950 Windows上的編碼
這裡不囉嗦,知道這麼配就好。

日誌檔案設定:
日誌檔案目錄,我們使用預設,其中m%表示客戶端的主機名:
log file = /var/log/samba/log.m%
max log size = 50 表示日誌檔案可以儲存的最大值,單位為KB

現在軟體日新月異,單是samba的配置就有2百多條,想要把所有的配置全部都講清楚是很困難的一件事,所以要分清主次。

這裡寫圖片描述
然後我們來了解下標準伺服器選項:
sercurity = user 設定使用者訪問samba伺服器的安全級別,有5個選項
share:不需要使用者名稱和密碼就可以訪問samba伺服器
user :需要提供使用者名稱和密碼,身份驗證有samba伺服器來完成
server :需要提供使用者名稱和密碼,可以指定其它伺服器來驗證身份
domain :需要提供使用者名稱和密碼,指定windows域控制器做身份驗證,samba只是域的成員客戶機。
ads : 需要提供使用者名稱和密碼,指定Windows域控制器做身份驗證。具有domain級別的所有功能,samba可以成為域控制器。
passbd backend =tdbsam 表示如果使用加密密碼,請指定加密密碼的資料庫型別。這裡用了tdbsam型別。

samba還可以提供列印共享服務。自己瞭解,我就不配了。

下面我們來看一下共享設定:
這裡寫圖片描述
首先是homes共享目錄,它是一個特殊的目錄,它不指定某個目錄,而只是表示samba使用者的宿主目錄。就是說每個samba使用者,samba都為他建立了一個家目錄。
comment = Home Directories 表示對目錄的基本描述,隨便描
browseable = no 在瀏覽資源時是否顯示共享目錄
writable = yes 使用者是否具有寫許可權
create mode = 0664 設定預設建立的檔案許可權
directory mode = 0775 設定預設建立的目錄許可權
valid users = %S 表示當前登入的使用者可以訪問
關於0664 和0775代表的含義,可以去學習下ACL許可權就會明白了

[public]是我們自己設定的共享目錄,你可以取名public,share,只要你喜歡,什麼單詞都可以
其中 path = /home/public 表示我們要共享的目錄
guest ok = yes 表示是否允許匿名使用者訪問共享資源,只有安全級別為share時,此項才起作用。
valid users = @users 我們設定只有users組內的成員才能訪問共享目錄
(截圖這一項少了,請注意)

關於配置檔案我就說這麼多了,更詳細的引數配置,就靠各位仁兄自己啦。

儲存配置檔案的更改。
我們可以用
#testparm
來檢查配置檔案有沒有語法錯誤

接下來,我們開始搭建服務:
1.關閉防火牆和SELinux
#service iptables stop
#getenforce
#setenforce (1 | 0)

2.在home目錄下建立public目錄
#mkdir -p public

3.遞迴更改目錄的訪問許可權
#chmod -R 775

4.我們新增一個samba使用者,這時就請出我室友李煒啦,哈哈
#useradd LiWei
#passwd LiWei
設定密碼
#groupadd users 增加一個users使用者組
#usersadd -G users LIWei 把LiWei加入users使用者組

5.為LiWei註冊samba賬號
#smbpasswd -a LiWei
設定samba賬戶密碼

6.把/home/public的所屬組改為users
#chgrp -R users /home/public

這樣我們的samba伺服器就搭建完成啦,來讓我們測試一下:
#ifconfig
這裡寫圖片描述

我們看到我的LInux伺服器地址是10.202.89.219

然後我們切換到windows下,在網路的條目中直接輸入 \\10.202.89.219 回車
這裡寫圖片描述
這裡寫圖片描述

然後就讓我們輸入使用者名稱和密碼啦。使用者名稱就是LiWei,密碼是samba賬戶密碼。這裡寫圖片描述

然後我們就看到了李煒這個使用者個人目錄啦,咦?我們的public呢?
哈哈,原來在設定browseable時我們設定的是no,它就不會顯示共享目錄,現在我們回去改回yes,重啟samba服務。
這裡寫圖片描述

現在我們就看到了public了。
下面測試下檔案共享功能:
這裡寫圖片描述
我們在windows下建立了一個名叫LiWei的空的txt檔案,然後切換到linux中,我們在public目錄下可以看到已經有一個名為LiWei的txt檔案了。
這裡寫圖片描述
然後我們在windows下直接在LiWei.txt檔案中執行寫操作,會發生什麼呢?
這裡寫圖片描述

然後我們來看一下linux下的LiWei.txt的空檔案發生了什麼變化。
這裡寫圖片描述

我們看到,這個空檔案已經有了內容,但是漢字的部分亂碼啦。。

時間不多,這個問題就留給你們自己解決啦。。