SAMBA 服務配置


Samba文件共享服務

  • Linux系統中一種文件共享程序
  • 在Windows網絡環境中,主機之間進行文件和打印機共享是通過微軟公司自己的SMB/CIFS網絡協議實現的。SMB(Server Message Block,服務消息塊)和CIFS(Common Internet File System,通過互聯網文件系統)協議是微軟的私有協議,在Samba項目出現之前,並不能直接與linux/UNIX系統進行通信。
  • Samba是著名的開源軟件項目之一,它在linux/UNIX系統中實現了微軟的SMB/CIFS網絡協議,從而使得跨平台文件共享變得更加容易。在部署Windows、linux/UNIX混合平台的企業環境時,選用Samba可以很好地解決不同系統之間的文件互訪問題。

Samba軟件包的構成:

  • Samba服務的程序組件
    • smbd負責為客戶機提供服務器中共享資源(目錄和文件等)的訪問
    • nmbd負責提供基於NetBIOS協議的主機名稱解析,以便為Windows網絡中的主機進行查詢服務
  • 使用netstat命令可以驗證服務進程狀態,其中smbd程序負責監聽TCP協議的139端口(SMB協議)、445端口(CIFS協議),而nmbd服務程序負責監聽UDP協議的137-138端口(NetBIOS協議)
  • netstat -anptu | grep "mbd" 查看Samba運行狀態
  • 主配置文件smb.conf
  • Samba服務idea服務的文件位於/etc/samba/目錄中,其中smb.conf是主配置文件
  • 在smb.conf文件中,以"#"號開始的行表示注釋性的文字,以";"開始的行表示是配置樣例
  • grep -v "#" /etc/samba/smb.conf | grep -v ";" | grep -v "$" -->過濾標識符

/etc/samba/smb.conf 文件概述

  • 主配置文件smb.conf
  • [global]全局設置:對整個Samba服務器都有效
  • [homes]宿主目錄共享設置:設置Linux用戶默認共享,對應用戶的宿主目錄
  • [printers]打印機共享設置

Samba服務器的常見配置項及含義說明

security = user //安全級別,可用值如下:
share、user、server、domain。

[global]
workgroup = MYGROUP //所在工作組名稱
server string = Samba Server Version %v //服務器描述信息

; netbios name = WORKGROUP  //網絡主機名
; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24  //接口地址
; hosts allow = 127. 192.168.12. 192.168.13.    //允許主機地址

# logs split per machine
log file = /var/log/samba/log.%m //日志文件位置,//"%m" 變量表示客戶機地址
# max 50KB per log file, then rotate
max log size = 50   //日志文件的最大容量,單位為KB

[homes]
comment = Home Directories //對共享在服務器中對應的實際路徑
browseable = no //該共享目錄在"網上鄰居"中是否可見
writable = yes  //是否可寫,與read only的作用相反
; valid users = %S
; valid users = MYDOMAIN\%S

[printers]
comment = All Printers
path = /var/spool/samba //共享目錄在服務器中對應的真實路徑
browseable = no
guest ok = no   //是否允許所有人訪問,等效於"public"
writable = no
printable = yes //是否允許打印機

testparm程序

Samba服務器提供了一個配置文件檢查工具---testparm程序,使用testparm工具可以對smb.conf配置文件的正確性個進行檢查,如果發現有錯誤將會進行提醒。

可匿名訪問的共享

  • 可匿名訪問的共享適用於公開的資源分享,一般只建議提供只讀訪問
  • 設置匿名共享文件夾時,在主配置文件smb.conf中主要調整兩個地方即可
    1. 可以將默認的安全級別修改為share
    2. 添加一段共享目錄配置

需用戶驗證的共享

  • 匿名共享雖然用起來非常方便,但因為任何人都可以訪問到共享的文件數據,在某些時候可能會導致信息的泄露
  • 實現步驟:
    1. 建立Samba用戶數據庫,使用pdbedit工具可以對共享用戶進行管理
    2. 設置用戶訪問授權,將security安全級別提升為"user"
    3. 確定目錄訪問授權
      通過Samba服務器共享本地的文件夾時,用戶最終是否擁有讀取、寫入權限,除了需要設置用戶授權以外,還需要滿足一個前提條件---在服務器本機中,與共享用戶同名的系統用戶對發布為共享的本地文件夾(如/opt/mytools/)必須有相應的讀取、寫入權限。//另外,當通過共享目錄上傳文檔時,對於共享用戶所上傳的文件,創建子目錄的默認權限,可以分別使用配置項"directory mask"、"create mask"進行指定

命令

  • pdbedit -a -u 添加一個Samba用戶
  • pdbedit -x -u 刪除一個Samba用戶
  • pdbedit -L 列表查看Samba用戶
  • pdbedit -Lv 詳細查看Samba用戶
  • smbpasswd -a 用戶名: 是指給現有用戶設置密碼。而非建立用戶
  • 創建用戶是:useradd 用戶名
  • 搜索/etc/samba/smbpasswd里面存放了SAMBA所有的用戶。

使用命令

  • cat /etc/samba/smbpasswd
  • vim /etc/samba/smbpasswd
  • /etc/samba/ 下沒有smbpasswd
    如果沒有的話你就使用SMB用戶創建命令來創建,這樣SMBpasswd文件會自動生成。
    需要注意的是,在/etc/samba/smb.conf文件對權限的設置,優先級低於Linux系統中的文件系統權限,也就是說,想要實現共享目錄或者文件具有某種權限,首先必須保證該目錄或者文件在文件系統中具有該權限。

共享賬號映射(別名)

  • 為了進一步提高Samba共享服務的安全性,除了可以對指定的共享目錄設置用戶授權以外,還可以采取用戶映射、訪問地址限制等措施
  • 在使用Samba共享賬號時,通常情況下,一個共享用戶賬號都有一個同名的系統用戶賬號。
  • Samba服務器提供了"用戶名稱映射"(Username Map)機制,可以將一個共享用戶映射為多個不同的名稱(別名)
  • Samba共享賬號的映射文件默認位於/etc/samba/smbusers
  • 設置好共享用戶的別名記錄以后,若要正常啟用賬號映射功能,需要修改主配置文件/etc/samba/smb.conf,添加全局配置項"username map=/etc/samba/smbusers",然后重新加載配置即可生效

訪問地址限制

  • 針對訪問Samba服務器的客戶機,可以通過"hosts allow"、"host deny"配置項進行訪問限制,前者英語指定僅允許訪問共享的客戶機地址,后者用於指定僅拒絕訪問共享的客戶機地址,兩種方式任選其一即可
  • 訪問地址限制一般應用於[global]全局配置部分,也可以應用於某個具體的共享配置段部分。限制的對象可以是主機名、IP地址或者網絡段地址(省去主機部分),多個地址之間以逗號或空格進行隔離

使用smbclient訪問共享文件夾

  • WINDOWS: \SAMBA服務器地址
  • LINUX : smbclient 命令,查看及登陸使用共享
  • smbclient -U sunboy //192.168.4.11/tools
  • smbclient //192.168.1.108/public -N 【匿名訪問】
  • 改配置文件之后就檢查語法,重啟服務。

使用mount 掛載共享目錄

mkdir /media/smbdir
mount -o username=hunter //192.168.4.11/tools /media/smbdir/
Passwd:
mount | tail -n 1

【知識補充】

  • Windows中登錄過共享服務器輸入的用戶名和密碼會有記錄,實驗時可以在dos界面輸如下命令以清除記錄
  • net use * /del
  • 若window客戶機正常訪問,但linux客戶機訪問不了samba服務器時,查看客戶機是否安裝samba4-libs包
  • 若linux客戶機出現:mount: block device //192.168.1.108/share is write-protected, mounting read-only
  • mount: cannot mount block device //192.168.1.108/share read-only 的報錯信息,則要安裝cifs-utils包

網絡鄰居是個網站還是問題出現了錯誤?!

  • 如果是網上鄰居的話,清除方式是:
    1. 依次點擊“開始”——“運行”;
    2. 在打開的窗口中鍵入“control keymgr.dll”,回車。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM