1 / 31

檔案伺服器之二: SAMBA 伺服器

16. 檔案伺服器之二: SAMBA 伺服器. 如果想要共用檔案,在 Linux 對 Linux 的環境下,最簡單的方法就是透過 NIS 這玩意兒了!至於 Windows 對 Windows 的環境下,最簡單的方法則是 『 網路上的芳鄰 』 啊。那如果你的區網中有 Windows 也有 Linux 而且想要共用檔案系統的話,那該怎辦?那就使用 Samba 伺服器吧! Samba 可以讓 Linux 加入 Windows 的網芳支援,讓異質平台可以共用檔案系統!非常好用的呦!. 什麼是 SAMBA SAMBA 的發展歷史與名稱的由來

farrah
Download Presentation

檔案伺服器之二: SAMBA 伺服器

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 16 • 檔案伺服器之二:SAMBA 伺服器 • 如果想要共用檔案,在 Linux 對 Linux 的環境下,最簡單的方法就是透過 NIS 這玩意兒了!至於 Windows 對 Windows 的環境下,最簡單的方法則是『網路上的芳鄰』啊。那如果你的區網中有 Windows 也有 Linux 而且想要共用檔案系統的話,那該怎辦?那就使用 Samba 伺服器吧!Samba 可以讓 Linux 加入 Windows 的網芳支援,讓異質平台可以共用檔案系統!非常好用的呦!

  2. 什麼是 SAMBA • SAMBA 的發展歷史與名稱的由來 • 讓檔案在兩部主機之間直接修改:NFS 與 CIFS • 而除了可以讓 Unix Like 的機器互相分享檔案的 NFS 伺服器之外,在微軟 (Microsoft) 作業系統上面也有類似的檔案系統,那就是 Common Internet File System, CIFS 這個咚咚啦!CIFS 最簡單的想法就是目前常見的『網路上的芳鄰』咯! • P.16-2 請參閱書籍

  3. 利用封包偵測逆向工程發展的 SMB Server • 在 1991 年一個名叫 Andrew Tridgell博士班研究生就有這樣的困擾,他手上有三部機器,分別是跑 DOS 的個人電腦、DEC 公司的 Digital Unix 系統以及 Sun 的 Unix 系統。在當時,DEC 公司有發展出一套稱為 PATHWORKS 的軟體,這套軟體可以用來分享 DEC 的 Unix 與個人電腦的 DOS 這兩個作業系統的檔案資料,可惜讓 Tridgell覺得較困擾的是,Sun 的 Unix 無法藉由這個軟體來達到資料分享的目的 (註 1)。 • 這個時候 Tridgell就想說:『咦!既然這兩部系統可以相互溝通,沒道理 Sun 就必需這麼苦命吧?可不可以將這兩部系統的運作原理找出來,然後讓 Sun 這部機器也能夠分享檔案資料呢?』,為了解決這樣的的問題,他老兄就自行寫了個 program 去偵測當 DOS 與 DEC 的 Unix 系統在進行資料分享傳送時所使用到的通訊協定資訊,然後將這些重要的資訊擷取下來,並且基於上述所找到的通訊協定而開發出 Server Message Block (SMB) 這個檔案系統,而就是這套 SMB 軟體就能夠讓 Unix 與 DOS 互相的分享資料囉! • P.16-2~3 請參閱書籍

  4. 取名 SAMBA 的主因 ^_^ • 既然寫成了軟體,想一想,總是需要註冊一下商標吧!因此 Tridgell就去申請了 SMBServer (Server Message Block 的簡寫) 這個名字來做為他撰寫的這個軟體的商標,可惜的是,因為 SMB 是沒有意義的文字,因此沒有辦法達成註冊。既然如此的話,那麼能不能在字典裡面找到相關的字詞可以做為商標來註冊呢?翻了老半天,呵呵!這個 SAMBA 剛好含有 SMB ,又是熱情有勁的拉丁舞蹈的名稱,不然就用這個名字來做為商標好了!這成為我們今天所使用的 SAMBA 的名稱由來啦!^_^ • P.16-3 請參閱書籍

  5. SAMBA 常見的應用 • 分享檔案與印表機服務; • „可以提供使用者登入 SAMBA 主機時的身份認證,以提供不同身份者的個別資料; • „可以進行 Windows 網路上的主機名稱解析 (NetBIOS name) • „可以進行裝置的分享 (例如 Zip, CDROM...) • P.16-3 請參閱書籍

  6. SAMBA 使用的 daemons • 取得對方主機的 NetBIOS name 定位該主機所在 • 利用對方給予權限存取可用資源 • nmbd:這個 daemon 是用來管理工作群組啦、NetBIOS name 啦等等的解析。主要利用 UDP 協定開啟 port 137, 138 來負責名稱解析的任務; • smbd:這個 daemon 的主要功能就是用來管理 SAMBA 主機分享的目錄、檔案與印表機等等。主要利用可靠的 TCP 協定來傳輸資料,開放的埠口為 139 及 445(不一定存在) 。 • P.16-5~6 請參閱書籍

  7. SAMBA 伺服器的基礎設定 • Samba 所需軟體及其軟體結構 • samba:這個軟體主要提供了 SMB 伺服器所需的各項服務程式 (smbd及 nmbd)、 的文件檔、以及其他與 SAMBA 相關的 logrotate設定檔及開機預設選項檔案等; • samba-client:這個軟體則提供了當 Linux 做為 SAMBA Client 端時,所需要的工具指令,例如掛載 SAMBA 檔案格式的 mount.cifs、 取得類似網芳相關樹狀圖的 smbtree等等; • samba-common:這個軟體提供的則是伺服器與用戶端都會使用到的資料,包括 SAMBA 的主要設定檔 (smb.conf)、語法檢驗指令 (testparm) 等等; • P.16-9 請參閱書籍

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

  9. /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, 分享的資源,使用的用戶來源等等,讓你輕鬆管理 Samba 啦; 續下頁 • P.16-10 請參閱書籍

  10. /usr/bin/{smbpasswd,pdbedit}:伺服器功能,在管理 Samba 的使用者帳號密碼時,早期是使用 smbpasswd這個指令,不過因為後來使用 TDB 資料庫了,因此建議使用新的 pdbedit指令來管理用戶資料; • /usr/bin/testparm:伺服器功能,這個指令主要在檢驗設定檔 smb.conf的語法正確與否,當你編輯過 smb.conf時,請務必使用這個指令來檢查一次,避免因為打字錯誤引起的困擾啊! • /sbin/mount.cifs:用戶端功能,在 Windows 上面我們可以設定『網路磁碟機』來連接到自己的主機上面。在 Linux 上面,我們則是透過 mount (mount.cifs) 來將遠端主機分享的檔案與目錄掛載到自己的 Linux 主機上面哪! • /usr/bin/smbclient:用戶端功能,當你的 Linux 主機想要藉由『網路上的芳鄰』的功能來查看別台電腦所分享出來的目錄與裝置時,就可以使用 smbclient來查看啦!這個指令也可以使用在自己的 SAMBA 主機上面,用來查看是否設定成功哩! • P.16-10 請參閱書籍

  11. 立刻實作 • P.16-11~12 • 假設你打開 Windows XP 的檔案總管,在 D:\VBird\Data 這個目錄下,你按下右鍵選『共用與安全性』,之後,在出現的視窗中,你選擇:『你瞭解這個安全風險,但仍不要執行精靈而共用檔案,請按這裡』,然後勾選:『在網路上共用這個資料夾』,最後共用的名稱你輸入了:『VBGame』,請問,假設你的 IP 是 192.168.100.20 ,那麼你的用戶會看到什麼網址列? • 答:網芳的資源名稱通常的寫法是:『 \\IP\分享資源名稱』,我們的分享資源名稱為 VBGame,因此最終這個分享的資源名稱應該是:『 \\192.168.100.20\VBGame 』才對!很多朋友都會寫成:『 \\192.168.100.20\VBird\Game 』那錯得很離譜喔! • 基礎的網芳分享流程與 smb.conf的常用設定項目 請參閱書籍

  12. 伺服器整體設定方面:在 smb.conf當中設定好工作群組、NetBIOS 主機名、密碼使用狀態 (無密碼分享或本機密碼) 等等; • 規劃準備分享的目錄參數:在 smb.conf內設定好預計要分享的目錄或裝置以及可供使用的帳號資料; • 建立所需要的檔案系統:根據步驟 2 的設定,在 Linux 檔案系統當中建立好分享出去的檔案或裝置,以及相關的權限參數; • 建立可用 Samba 的帳號:根據步驟 2 的設定,建立所需的 Linux 實體帳號,再以 pdbedit建立使用 Samba 的密碼; • 啟動服務:啟動 Samba 的 smbd, nmbd服務,開始運轉哩! • 在 smb.conf當中,井字號與分號 (# 跟 ;) 都是註解符號; • „ 在這個設定檔中,大小寫是沒關係的!因為 Windows 沒分大小寫! • P.16-12 請參閱書籍

  13. workgroup = 工作群組的名稱:注意,主機群要相同; • „netbios name = 主機的 NetBIOS 名稱啊,每部主機均不同; • „server string = 主機的簡易說明,這個隨便寫即可。 • P.16-12~13 請參閱書籍

  14. display charset = 自己伺服器上面的顯示編碼,例如你在終端機時所查閱的編碼資訊。一般來說,與底下的 unixcharset會相同。 • „ unixcharset = 在 Linux 伺服器上面所使用的編碼,一般來說就是 i18n 的編碼囉!所以你必須要參考 /etc/sysconfig/i18n 內的『預設』編碼。 • „dos charset = 就是 Windows 用戶端的編碼了!一般來說我們的繁體中文 Windows 使用的是 big5 編碼,這個編碼在 Samba 內的格式被稱為『 cp950 』喔! • P.16-13 請參閱書籍

  15. security = share, user, domain:三選一,這三個設定值分別代表: • share:分享的資料不需要密碼,大家均可使用 (沒有安全性); • „user:使用 SAMBA 伺服器本身的密碼資料庫,密碼資料庫與底下的 passdb backend 有關; • „domain:使用外部伺服器的密碼,亦即 SAMBA 是用戶端之意,如果設定這個項目,你還得要提供『password server = IP』的設定值才行; • encrypt passwords = Yes 代表密碼要加密,注意那個 passwords 要有 s 才對! • passdb backend = 資料庫格式,如前所述,為了加快速度,目前密碼檔已經轉為使用 資 料 庫 了 ! 預 設 的 資 料 庫 格 式 微 tdbsam, 而 預 設 的 檔 案 則 放 置 到 /var/lib/samba/private/passwd.tdb。 • P.16-14 請參閱書籍

  16. 分享資源的相關參數設定 [分享的名稱] • [分享名稱]:這個分享名稱很重要,它是一個『代號』而已。記得回去看看 16.2.2 裡面提到的那個範例; • comment:只是這個目錄的說明而已! • „path:這個分享名稱實際會進入的 Linux 檔案系統 (目錄)。也就是說,在網芳當中看到的是 [分享] 的名稱,而實際操作的檔案系統則是在 path 裡頭所設定的。 • „browseable:是否讓所有的使用者看到這個項目? • „writable:是否可以寫入?這裡需要注意一下喔!那個 read only 與 writable 不是兩個蠻相似的設定值嗎?如果 writable 在這裡設定為 yes ,亦即可以寫入,如果 read only 同時設定為 yes ,那不就互相抵觸了!那個才是正確的設定?答案是:最後出現的那個設定值為主要的設定! • create mode 與 directory mode 都與權限有關的咯! • writelist = 使用者, @群組,這個項目可以指定能夠進入到此資源的特定使用者。如果是 @group 的格式,則加入該群組的使用者均可取得使用的權限,設定上會比較簡單! • P.16-14~15 請參閱書籍

  17. 需帳號密碼才可登入的分享 (security = user) • 比較重要的是 Samba 使用者帳號必須要存在於 Linux 系統當中 (/etc/passwd),但是 Samba 的密碼與 Unix 的密碼檔案並不相同 (這是因為 Linux 與網芳的密碼驗證方式及編碼格式不同所致)。這就比較有點小麻煩~沒關係,就讓我們依樣畫葫蘆來處理一下這個部分的設定吧! • P.16-21 請參閱書籍

  18. 0. 假設條件 • „使用者認證層級設定 (security) 為:user • „使用者密碼檔案使用 TDB 資料庫格式,預設檔案在 /var/lib/samba/private/ 內; • „密碼必須要加密; • „每個可使用 samba 的使用者均擁有自己的家目錄; • 設定三個用戶,名稱為 smb1, smb2, smb3 ,且均加入 users 為次要群組。此三個用戶 Linux 密碼為 1234,Samba 密碼則為 4321; • „分享 /home/project 這個目錄,且資源名稱取名為:project; • „加入 users 這個群組的使用者可以使用 //IP/project 資源,且在該目錄下 users 這個群組的使用者具有寫入的權限。 • P.16-21~22 請參閱書籍

  19. 1. 設定 smb.conf設定檔與目錄權限相關之設定 • P.16-22 請參閱書籍

  20. P.16-22~23 請參閱書籍

  21. 立刻實作 • P.16-23 • 我們預計要分享 /home/project 目錄,這個目錄的權限該如何設定? • 答:因為是要開放給 users 群組,而共享群組的權限通常是『 2770 』這個含有 SGID 的特殊旗標功能。因此這個目錄應該如此設定才好: 請參閱書籍

  22. 2. 設定可使用 Samba 的用戶帳號與密碼 • 在 Linux 這個系統下,任何程序都需要取得 UID 與 GID (User ID 與 Group ID) 的身份之後,才能夠擁有該身份的權限,也才能夠適當的進行存取檔案等動作! • 關於 Linux 這個系統的 UID 與 GID 與帳號的相對關係,一般記錄在 /etc/passwd當中,當然也能透過 NIS, ldap等方式來取對應; • SAMBA 僅只是 Linux 底下的一套軟體,使用 SAMBA 來進行 Linux 檔案系統時,還是需要以 Linux 系統下的 UID 與 GID 為準則! • P.16-24 請參閱書籍

  23. P.16-24~25 請參閱書籍

  24. P.16-25~26 請參閱書籍

  25. 3. 重新啟動 Samba 並進行自我測試 • P.16-26~27 請參閱書籍

  26. P.16-27 請參閱書籍

  27. 安全性的議題與管理 • SELinux的相關議題: • P.16-40~41 請參閱書籍

  28. 防火牆議題:利用 iptables來管理 • P.16-41~42 請參閱書籍

  29. 防火牆議題:透過內建的 Samba 設定 (smb.conf) • P.16-42 請參閱書籍

  30. Linux 系統的使用 • smbclient:查詢網芳分享的資源,以及使用類似 FTP 的方式上傳/下載網芳 • P.16-50 請參閱書籍

  31. mount.cifs:直接掛載網芳成為網路磁碟機 • P.16-51 請參閱書籍

More Related