Linux 服務器之SAMBA

1,samba 服務的主要作用:讓windows 和 unix like 實現文件與設備的共享


2,samba的主要應用

  • 分享檔案與打印機服務;

  • 可以提供用戶登入 SAMBA 主機時的身份認證,以提供不同身份者的個別數據;

  • 可以進行 Windows 網絡上的主機名解析 (NetBIOS name)

  • 可以進行設備的共享(例如 Zip, CDROM...)


3,samba 使用的NetBIOS通信協議

   由於NetBIOS協議是無法跨路由的,所以samba主要工作在LAN中,但是通過NetBiOS over TCP/IP技術,可以跨路由使用samba服務


4,samba使用的daemon

  • nmbd :用來管理工作組、NetBIOS name 等的解析。主要利用 UDP 協議開啓 port 137, 138 來負責名稱解析的任務

  • smbd :用來管理 SAMBA 主機分享的目錄、檔案與打印機等等。 主要利用可靠的 TCP 協議來傳輸數據,開放的端口爲 139 及 445(不一定存在) 。

    啓動samba 服務時,會啓動137,138兩個UDP端口和139 TCP端口


5,samba服務器的配置

5.1  samba所需軟件

  • samba: 這個軟件主要提供了 SMB 服務器所需的各項服務程序 (smbd 及 nmbd)、 的文件檔、以及其他與 SAMBA 相關的 logrotate 配置文件及開機默認選項檔案等;

  • samba-client: 這個軟件則提供了當 Linux 做爲 SAMBA Client 端時,所需要的工具指令,例如掛載 SAMBA 文件格式的 mount.cifs

  • samba-common: 這個軟件提供的則是服務器與客戶端都會使用到的數據,包括 SAMBA 的主要配置文件 (smb.conf)、語法檢驗指令 (testparm) 等等;


5.2 samab主要配置文件

  • /etc/samba/smb.conf: 這是 Samba 的主要配置文件,基本上,咱們的 Samba 就僅有這個配置文件而已,且這個配置文件本身就是很詳細的說明文件了,請用 vim 去查閱它吧!主要的設定項目分爲服務器的相關設定 (global),如工作組、NetBIOS 名稱與密碼等級等, 以及分享的目錄等相關設定,如實際目錄、分享資源名稱與權限等等兩大部分

  • /etc/samba/lmhosts: 早期的 NetBIOS name 需額外設定,因此需要這個 lmhosts 的 NetBIOS name 對應的 IP 。 事實上它有點像是 /etc/hosts 的功能!目前 Samba 預設會去使用你的本機名稱 (hostname) 作爲你的 NetBIOS name,因此這個文件不設定也無所謂

  • /etc/sysconfig/samba: 提供啓動 smbd, nmbd 時,你還想要加入的相關服務參數

  • /etc/samba/smbusers: 由於 Windows 與 Linux 在管理員與訪客的賬號名稱不一致,例如: administrator (windows) 及 root(linux), 爲了對應這兩者之間的賬號關係,可使用這個文件來設定

  • /var/lib/samba/private/{passdb.tdb,secrets.tdb}: 管理 Samba 的用戶賬號/密碼時,會用到的數據庫文件

  • /usr/share/doc/samba-<版本>: 這個目錄包含了 SAMBA 的所有相關的技術手冊


5.3 samba主要腳本

  • /usr/sbin/{smbd,nmbd}:服務器功能,就是最重要的權限管理 (smbd) 以及 NetBIOS name 查詢 (nmbd) 兩個重要的服務程序;

  • /usr/bin/{tdbdump,tdbtool}:服務器功能,在 Samba 3.0 以後的版本中,用戶的賬號與密碼參數已經轉爲使用數據庫了!Samba 使用的數據庫名稱爲 TDB (Trivial DataBase)。 既然是使用數據庫,當然要使用數據庫的控制指令來處理。tdbdump 可以察看數據庫的內容,tdbtool 則可以進入數據庫操作接口直接手動修改帳密參數。不過,你得要安裝 tdb-tools 這個軟件才行;

  • /usr/bin/smbstatus:服務器功能,可以列出目前 Samba 的聯機狀況, 包括每一條 Samba 聯機的 PID, 分享的資源,使用的用戶來源等

  • /usr/bin/{smbpasswd,pdbedit}:服務器功能,在管理 Samba 的用戶賬號密碼時, 早期是使用 smbpasswd 這個指令,不過因爲後來使用 TDB 數據庫了,因此建議使用新的 pdbedit 指令來管理用戶數據;

  • /usr/bin/testparm:服務器功能,這個命令主要在檢驗配置文件 smb.conf 的語法正確與否,當你編輯過 smb.conf 時,請務必使用這個指令來檢查一次,避免因爲打字錯誤引起的困擾啊!


  • /sbin/mount.cifs:客戶端功能,在 Linux 上面,透過 mount (mount.cifs) 來將遠程主機分享的文件與目錄掛載到自己的 Linux 主機上面!

  • /usr/bin/smbclient:客戶端功能,查看主機所分享出來的目錄與設備。這個指令也可以使用在自己的 SAMBA 主機上面,用來查看是否設定成功!

  • /usr/bin/nmblookup:客戶端功能,有點類似 nslookup !重點在查出 NetBIOS name 就是了。

  • /usr/bin/smbtree:客戶端功能,這玩意就有點像 Windows 系統的網上鄰居顯示的結果, 能夠查到工作組與計算機名稱的樹狀目錄分佈圖!


6,smb.conf的常規設置

    [ global options ]    

  • workgroup = 工作組的名稱:注意,主機羣要相同

  • netbios name = 主機的 NetBIOS 名稱,每部主機均不同

  • server string = 主機的簡易說明


   [ logging options ]

  • log file =日誌文件,文件名可能會使用變量處;

  • max log size =日誌最大僅能到多少 Kbytes ,若大於該數字,則會被 rotate 掉


   [ Standalone Server options ]

  • security = share, user, domain:三選一,這三個設定值分別代表:

    • share:共享的數據不需要密碼,大家均可使用 (沒有安全性)

    • user :使用 SAMBA 服務器本身的密碼數據庫,密碼數據庫與下面的 passdb backend 有關

    • domain:使用外部服務器的密碼,亦即 SAMBA 是客戶端之意,如果設定這個項目, 你還得要提供『password server = IP』的設定值才行

  • passdb backend = 數據庫格式,爲了加快速度, 目前密碼文件已經轉爲使用數據庫了!默認的數據庫格式是 tdbsam ,而預設的文件則放置到 /var/lib/samba/private/passwd.tdb


  [ Share definitions ]

  • [homes] :共享目錄的名稱

  • comment:只是目錄的說明而已

  • path :主機要共享的目錄

  • browseable:是否讓所有的用戶看到這個項目

  • writable :是否可寫。需要注意一下 read only 與 writable 兩個設定值,如果 writable設爲 yes ,亦即可以寫入,如果 read only 同時設爲 yes , 那不就互相抵觸了!哪個纔是正確的設定?答案是:最後出現的那個設定值爲主要的設定

  • create mode directory mode都與權限有關

  • writelist = 使用者, @羣組,這個項目可以指定能夠進入到此資源的特定使用者。 如果是 @group 的格式,則加入該羣組的使用者均可取得使用的權限,設定上會比較簡單!


7,smb.conf 中的可用變量

  • %m:代表 Client 端的 NetBIOS 主機名

  • %M:代表 Client 端的 Internet 主機名,就是 HOSTNAME

  • %L:代表 SAMBA 主機的 NetBIOS 主機名

  • %H代表用戶的家目錄

  • %U:代表目前登入的使用者的使用者名稱

  • %g:代表登入的使用者的組名

  • %h:代表目前這部 SAMBA 主機的 HOSTNAME ,注意是 hostname 不是 NetBIOS name

  • %I:代表 Client 的 IP

  • %T:代表目前的日期與時間

  • %S:取代目前設置的項目值,就是在 [共享文檔] 裏面的內容。因爲 valid users 是允許的登入者,設定爲 %S 表示任何可登入的使用者都能夠登入的意思~今天如果bence 這個使用者登入之後,那個 [homes] 就會自動的變成 [bence] 了, %S 的用意就是在替換掉目前 [ ] 裏面的內容


8,簡單的samba 服務搭建流程< security = share 模式>

   a, 查詢軟件是否安裝


  b,更改smb.conf,配置相關參數


 c,testparm 測試語法是否正確


   d,啓動nbd 和 smb 服務


   e,本機檢測samba服務是否成功


   f,windows 客戶端驗證













發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章