網站伺服器建置與管理上課補充教材
- 最新消息:
- 每週都有可能會有上機實作,要等老師檢查完畢才能夠下課!否則就不算有來上課!
- 回首頁
- 舊版進度介紹
Chapter 08:網路芳鄰伺服器 (SMB server)
- 常見的檔案伺服器
- 非同步的檔案伺服器 (在 Server/client 各保留一份)
- 同步的檔案伺服器 (只保留在 Server 端,但用戶端看起來就跟本機的檔案系統沒兩樣)
- NFS (Linux <--> Linux)
- CIFS (Common Internet Filesystem)(Windows <--> Windows)
- SMB (Server Message Block):事實上就是 CIFS 囉!透過逆向工程解析出來的一個通訊協定
- Samba ? SMB ? NetBIOS
- CIFS 最早的前身為使用 NetBIOS 這個辦公室內的通訊協定
- 區域網路裡面透過 NetBIOS 的名稱解析功能,可以取得每一部網路主機的 NetBIOS 名稱 (就是 windows 上設定的名稱)
- 每一個具有 NetBIOS 主機名稱的網路主機,就可以直接透過 NetBIOS 進行檔案的傳輸
- 但是 NetBIOS 不能跨路由器 (不可在不同的網段間溝通)
- 早期的 PC 不需要 IP 也能夠進行網芳溝通,就是透過這個機制!
- NetBIOS over TCP/IP
- 後來因為 TCP/IP 的熱門,每一部主機上面都會有 IP,因此開發出讓 NetBIOS 跑在 TCP/IP 上面的通訊協定,就稱為 NetBIOS over TCP/IP
- 因為這個協定開發出來的關係,所以網芳就能夠跨路由了!
- SMB ? Samba
- Andrew Tridgell 在念博士班時,為了要解決 DOS, 與兩部 Unix 之間檔案傳輸的問題,考慮使用 CIFS 這個協定
- 直接透過逆向工程,取得封包的資訊後,重新撰寫一個新的相容於 CIFS 的通訊協定,就稱為 Server Message Block (SMB)
- 想要去註冊,但是被註冊局說 SMB 沒意義!不可以~所以就翻出字典,找到 SaMBa 這個字~
- 於是,Samba 是註冊商標、是軟體名稱,但是通訊協定為 SMB,其實就是相容於 CIFS 的另一個通訊協定!
- Samba 所需要的服務
- smb:
- 就是 Samba 的主要服務,管理分享的目錄、傳輸檔案與身份驗證等等重要功能 (只要這個即可)
- 因為涉及檔案傳輸,需要 TCP 封包,主要埠口為 port 139, 445
- nmb:
- 相容於 NetBIOS,會去搜尋區網內的各個 NetBIOS name 來進行網路主機名稱的列表等。
- 透過 UDP 封包的 port 137, 138 來進行 NetBIOS name 的網路主機名稱搜尋~
- 開始前測試 Windows 的網芳 (共享) 功能
- 通常的設定方式:
- 打開檔案總管,移動到你想要分享的目錄上
- 按下右鍵,選擇『共用對象』,選擇『特定人員』
- 選擇『Everyone』定為讀取
- 最終按下『共用』後,螢幕就會出現你的資料夾共用名稱
- 資料夾名稱與共用名稱 (dir_name 與 share_name)
- 資料夾共用名稱通常為『 \\netbios_name\share_name 』
- 一般來說,預設 dir_name 會相等於 share_name
- 若需要設定不同的 share_name ,就得要修改囉!也就是說,目錄名稱與共用名稱可以不同!
- 常用的,取得 server 的可用目錄共享名稱 (share_name) 的方式:
- 請在檔案總管的網址列輸入 \\127.0.0.1,看看你的資料出現什麼?
- Samba 所需要的軟體與相關的設定檔
- 所需要的軟體:
- samba:主要的 smb, nmb 等服務以及文件檔與開機設定檔等
- samba-client:提供 Samba 用戶端掛載相關的功能,包括查詢 server 分享的資料等指令
- samba-common:提供 server/client 都會使用到的資料,包括設定檔與語法檢驗指令等
- 設定檔與基本語法:
- 練習:
- 安裝並檢查 samba 相關的軟體與軟體所含的檔名資料
- 查看 smb.conf 設定檔的基礎內容
- 基礎的 samba 設定項目
- 針對整個 samba 的伺服器設定主要的項目有底下這些:
- workgroup = 工作群組名稱
- netbios name = 現在預設為主機名稱喔!
- server string = 主機的簡易說明
- display charset = 自己伺服器上面的顯示編碼
- unix charset = 在 Linux 伺服器上面所使用的編碼
- dos charset = 就是 Windows 用戶端的編碼
- security = user 透過 samba 伺服器本身的帳號密碼資料庫
- 針對一般用戶家目錄的分享大致是這樣的
[homes]
comment = Home Directories
browseable = no
writable = yes
; valid users = %S
; valid users = MYDOMAIN\%S
除非已經登入 (login 到 Samba 的使用權當中),否則由於 browseable 設定為 no,你的家目錄並不會被查看到!
- 讓一般用戶可以開始使用 Samba
- 練習 (Server 端)
- 假設工作群組為 DIC,主機名稱為 stationXX,主機說明寫你的學號,所有顯示的編碼為 utf8,其他保留預設值
- 觀察設定檔的前幾行關於 SELinux 的問題,請放行 Samba 的家目錄使用權限!
- 使用 testparm 檢測一下是否設定語法有問題
- 啟動 smb 服務,且開機自動啟動喔!
- 建立一個名為 teacher 的用戶,這個用戶可以使用 Samba ,且密碼為 mypass
- 使用 teacher 的身份瀏覽本機的可用資源為何?
- 請確認用戶端可使用本機網芳的防火牆規則是否放行
- 練習 (client 端)
- 使用 teacher 查詢 server 網芳所分享的資源
- 掛載來自 server 的資源到本機的 /home/samba/teacher 目錄中
- 若此目錄需要開機即掛載,該如何處理?
- 若 client 為 windows 時,又該如何處理掛載的事宜
- 額外資源的設定
- 假如要分享的目錄為 /srv/share 而分享的名稱為 myshare,則通常設定的項目有:
[myshare] 資源名稱
comment = Just share my directory 一些簡易說明
path = /srv/share 實際放行的目錄
public = no 要不要開放訪客進入 (當然不要)
browseable = yes 要不要能夠被瀏覽到名稱 (不是查看內容)
writable = yes 能否寫入 (smb 控制的)
create mode = 0664 建立檔案的預設權限
directory mode = 0775 建立目錄的預設權限
write list = teacher, @teacher 哪個帳號或群組的用戶可以寫入
但最終能否寫入還是與目錄的權限有關喔!
- 練習:嘗試分享 /srv/share 給 teacher 群組使用,假設分享的資源名稱為 for_teacher
- 先建立 /srv/share 目錄,且注意該目錄必須要能夠讓 teacher 群組的所有用戶共用 (應該是需要 SGID 才對喔!)
- 同時需要參考 smb.conf 內關於 SELinux 的說明,請設定好 SELinux 的 type 喔!
- 修改 smb.conf 的內容,比較需要注意的是中括號 [] 內的名稱與路徑 (path) 喔!
- 設定完成依舊使用 testparm 檢查語法,若無問題請重新啟動 smb 服務。
- 再次以 smbclient -L //your.host.ip -U teacher 檢查看看可用的資源
- 若有個名為 teachertwo 用戶也想要使用這個目錄,該如何設定?
- 練習:嘗試掛載來自 server 的 for_teacher 資源到 /home/samba/forteacher 目錄喔!
- 使用 teacher 查詢 server 網芳所分享的資源
- 掛載來自 server 的資源到本機的 /home/samba/forteacher 目錄中
- 若此目錄需要開機即掛載,該如何處理?
- 簡易防火牆控制
- 最簡單的方式為透過 iptables 控制 port 139 與 port 445 是否放行即可。
- 另外, smb.conf 裡面也提供了『 hosts allow 』這個設定項目來給予處理。亦即你可以針對內網開放 iptables,
但可以透過 hosts allow 來指定某個 IP 或某段 IP 的設定喔!