1. 程式人生 > >SAMBA服務的搭建和訪問

SAMBA服務的搭建和訪問

作用 .com 讀寫 先來 日誌級別 為我 級別 inux 檔案

SAMBA服務的產生

在早期的網絡世界中,檔案數據在不同主機之間的傳輸大多是使用FTP服務,但是FTP服務傳輸檔案有一些小小的問題,那就是我們無法直接修改主機上面的檔案數據,也就是說我們如果想要修改某個檔案的數據時,就必須將該檔案的服務器下載後才能修改,這樣就很麻煩了。其實解決這個問題也很簡單,NFS服務就很好的解決檔案數據不能直接修改的問題,因為NFS服務是直接將共享目錄掛載到客戶端的機器上,那麽共享目錄就好像成了自己的目錄一樣,共享數據的使用自然就很方便,但是,NFS也有一些小小的問題,它僅能使Unix Like的機器相互分享。那麽我要是需要Windows與Unix-Like這兩個不同的平臺相互分享呢?那該怎麽辦?也就是說,FTP服務實現了跨平臺分享,卻無法修改共享數據;NFS解決了共享數據的修改問題,卻沒辦法實現跨平臺的共享。所以,SAMBA服務也就隨著需要產生了。 它綜合了FTP和NFS的有點,既實現了跨平臺的傳輸,還滿足了修改數據的功能。



SAMBA服務的配置文件

samba的設定流程

  1. 服務器整體設定方面:在smb.conf當中設定好工作組、NetBIOS主機名、密碼使用狀態(無密碼分享或 本機密碼)等等;
  2. 規劃準備分享的目錄參數:在smb.conf內設定好預計要分享的目錄或裝置以及可供使用的賬號數據;
  3. 建立所需要的文件系統:根據步驟2的設定,在linux文件系統當中建立好分享出去的檔案或裝置,以及相關的權限參數
  4. 建立可用samba的賬號:根據步驟2的設定,建立所需的linux實體賬號,再一pdbedit建立使用的samba的密碼
  5. 啟動服務:啟動samba的smbd,nmbd服務,開始運轉。

samba服務的配置文件


由上述的設定流程,可以看出samba服務的配置文件為服務搭建起到了導向的作用,那麽我就先來了解以下samba的基礎配置。

  • smb.conf繼承了.ini文件的格式,用[ ]分成了不同的部分
  • 全局設置:[global] 服務器通用或全局設置的部分
  • 特定共享設置:[homes] 用戶的家目錄共享;[printers] 定義打印機資源和服務;[sharename] 自定義的共享目錄配置。
  • 宏定義:
符號 釋義 符號 釋義
%m 客戶端主機的NetBIOS名 %M 客戶端主機的FQDN
%H 當前用戶家目錄路徑 %U 當前用戶的用戶名
%g 當前用戶所屬組 %h samba服務器的主機名
%L samba服務器的NetBIOS名 %I 客戶端主機的IP
%T 當前的日期和時間 %S 可登錄的用戶名

samba服務器全局配置

  • workgroup 指定工作組名稱
  • server string 主機註釋信息
  • netbios name 指定NetBIOS名
  • interfaces 指定服務偵聽接口和ip
  • hosts allow 可用“,”,空格,或tab分隔,默認允許所有主機訪問,也可在每個共享獨立配置。
  • hosts deny 拒絕指定主機訪問
  • config file = /etc/samba/conf.d/%U 用戶獨立的配置文件
  • Log level = 2 日誌級別,默認為0,不記錄日誌
  • max log size = 50 日誌文件達到50k,將輪循rotate,單位KB
  • passdb backend = tdbsam 密碼數據庫格式

“samba服務共享目錄配置”

  • 每個共享目錄應該有獨立的[ ]部分
  • [共享名稱] 遠程網絡看到的共享名稱
  • comment 註釋信息
  • path 所共享的目錄路徑
  • public 能否被guest訪問的共享,默認為no,和guest ok類似
  • browsable 是否允許所有用戶瀏覽此共享,默認為yes,no為隱藏
  • writeable = yes 可以被所有用戶讀寫,默認為no
  • read only = no 和 writeable = yes 等價,如與以上設置發生沖突,放在後面的設置生效,默認只讀
  • write list 三種形式:用戶,@組名(如writeable=no,列表中用戶或組可讀寫,不在列表中用戶只讀)
  • valid users 特定用戶才能訪問該共享,如為空,將允許所有用戶訪問,用戶名之間用空格分隔

SAMBA服務的搭建

基礎的SAMBA服務搭建
要求: 在現有的linux上搭建一個samba服務,共享/app下的smbtest目錄。
在搭建服務之前,我們需要預先安裝我們需要的軟件

  • samba:這個軟件主要提供了SMB服務器所需的各項服務程序(smbd及nmbd)以及其他與SAMBA相關的logrotate配置文件及開機默認選項檔案等
  • samba-common:這個軟件提供的則是服務器與客戶端都會使用到的數據,包括SAMBA的主要配置文件(smb.conf)、語法檢驗指令(testparm)等等;

安裝完所需的軟件之後,我們便可以正式開始搭建SAMBA服務了

  1. 在samba服務器上安裝samba包
    yum - y install samba
  2. 創建samba用戶和組
    groupadd -r team
    useradd -s /sbin/mologin -G team lsy
    smbpasswd -a lsy
    useradd -s /sbin/nologin qjc
    smbpasswd -a qjc

    技術分享圖片

  3. 創建samba共享目錄,並設置SElinux
    mkdir ./app/smbtest
    chgrp team /app/smbtest
    setfacl -m g:team:rwx /app/smbtest/
    setfacl -m u:qjc:rwx /app/smbtest/
    chcon -Rt samba_share_t  /app/smbtest
  4. samba服務器配置
    vim /etc/samba/smb.conf

    技術分享圖片
    啟動samba服務


windows客戶端訪問

我在上面的配置文件中簡單的設置了,使得team組的用戶對共享目錄有寫權限,而其他用戶則只可以瀏覽共享目錄,不能修改共享數據,具體訪問如下圖:

  1. 客戶端登陸
    技術分享圖片
    技術分享圖片
    技術分享圖片
  2. 以team組成員lsy身份進入共享目錄, 則可以在目錄中創建,編輯文件
    技術分享圖片
  3. 再以qjc的身份進入共享目錄,因為沒有寫權限,所以只能訪問,創建文件會被拒絕
    技術分享圖片
    技術分享圖片
    技術分享圖片
    嘗試創建新文件時
    技術分享圖片
  4. 同時我們再服務器端共享目錄下,可以查看到lsy用戶創建的文件
    技術分享圖片

SAMBA服務實現多用戶掛載(僅centos7支持)

我們仍利用上面已經創建好的共享目錄lishuyang來進行操作(ps:: 在生產環境中,創建共享目錄,建議使用LVM)。
服務端:
在服務端, 我們還需要創建一個普通samba用戶smbbase, 作為我們在客戶端登陸的擁有較小權限的用戶(實現多用戶的掛載目的就在於對共享目錄獲取更大的權限),用戶smbbase只有瀏覽共享目錄的權限

useradd -s /sbin/nologin smbbase
smbpasswd -a smbbase

客戶端

  1. 安裝客戶端需要的軟件 cifs-utils(系統一般默認安裝)
  2. 編輯文件,將權限較低的smbbase用戶的賬戶信息寫入
    技術分享圖片
  3. 創建掛載目錄並將共享目錄掛載到本地掛載目錄上
    技術分享圖片
    技術分享圖片
    技術分享圖片
    技術分享圖片
  4. 進入/app/mnt目錄下,可以發現已經進入到了共享目錄下,嘗試用smbbase用戶修改文件(smbbase沒有寫權限,所以一定被拒絕寫入)
    技術分享圖片
    技術分享圖片
  5. 切換到用戶lsy,執行如下操作
    cifscreds add 192.168.100.127

    技術分享圖片

  6. 嘗試修改文件(用戶lsy擁有寫權限,若能修改,則多用戶掛載實驗成功)
    技術分享圖片
    技術分享圖片

ps:有幾個只需要註意的問題:

  1,防火墻要關閉, # service iptables stop

  2,註意共享目錄的權限設置

  3,要設置成不需要用戶名密碼直接訪問,需要修改配置文件,將security設置成security = share。

SAMBA服務的搭建和訪問