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

31
第第 第第 第第 第第 第第 第第 第第 16 第第第第第第第SAMBA 第第第 如如如如如如如如 Linux 如 Linux 如如如如 如如如如如如如如如如 NIS 如如如如如如如 Windows 如 Windows 如如如如 如如如如如如如如如如如如如如如如如如 如如如如如如如如 ,。 如 Windows 如如 Linux 如如如如如如如如如如如如 如如如如如 如如如如 ,? Samba 如如 如如Samba 如如如 Linux 如如 Windows 如如如如如 如如如如如如如如如如如如如如 ,! 如如如如如如

Upload: farrah

Post on 23-Feb-2016

105 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

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

第三 篇區域網路內常見的伺服器架設

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

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

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

什麼是 SAMBA

SAMBA 的發展歷史與名稱的由來 讓檔案在兩部主機之間直接修改: NFS 與 CIFS

而除了可以讓 Unix Like 的機器互相分享檔案的 NFS 伺服器之外,在微軟 (Microsoft) 作業系統上面也有類似的檔案系統,那就是 Common Internet File System, CIFS 這個咚咚啦! CIFS 最簡單的想法就是目前常見的『網路上的芳鄰』咯!

P.16-2請參閱書籍

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

利用封包偵測逆向工程發展的 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請參閱書籍

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

取名 SAMBA 的主因 ^_^

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

P.16-3請參閱書籍

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

SAMBA 常見的應用 分享檔案與印表機服務; � 可以提供使用者登入 SAMBA 主機時的身份認證,以提供不同身份者的個別資料; � 可以進行 Windows 網路上的主機名稱解析 (NetBIOS

name)

� 可以進行裝置的分享 (例如 Zip, CDROM...)

P.16-3請參閱書籍

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

SAMBA 使用的 daemons1.取得對方主機的 NetBIOS name 定位該主機所在2.利用對方給予權限存取可用資源

nmbd :這個 daemon 是用來管理工作群組啦、 NetBIOS name 啦等等的解析。主要利用 UDP 協定開啟 port 137, 138 來負責名稱解析的任務;

smbd :這個 daemon 的主要功能就是用來管理 SAMBA 主機分享的目錄、檔案與印表機等等。主要利用可靠的 TCP 協定來傳輸資料,開放的埠口為 139 及 445( 不一定存在 ) 。

P.16-5~6請參閱書籍

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

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請參閱書籍

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

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

P.16-9請參閱書籍

Page 9: 檔案伺服器之二: 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, 分享的資源,使用的用戶來源等等,讓你輕鬆管理 Samba 啦;

P.16-10請參閱書籍續下頁

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

/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請參閱書籍

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

假設你打開 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 的常用設定項目

P.16-11~12請參閱書籍

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

1.伺服器整體設定方面:在 smb.conf 當中設定好工作群組、 NetBIOS 主機名、密碼使用狀態 ( 無密碼分享或本機密碼 ) 等等; 2.規劃準備分享的目錄參數:在 smb.conf 內設定好預計要分享的目錄或裝置以及可供使用的帳號資料; 3.建立所需要的檔案系統:根據步驟 2 的設定,在 Linux 檔案系統當中建立好分享出去的檔案或裝置,以及相關的權限參數; 4.建立可用 Samba 的帳號:根據步驟 2 的設定,建立所需的

Linux 實體帳號,再以 pdbedit 建立使用 Samba 的密碼; 5.啟動服務:啟動 Samba 的 smbd, nmbd 服務,開始運轉哩!

在 smb.conf 當中,井字號與分號 (# 跟 ;) 都是註解符號; � 在這個設定檔中,大小寫是沒關係的!因為 Windows 沒分大小寫!

P.16-12請參閱書籍

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

workgroup = 工作群組的名稱:注意,主機群要相同; netbios name = � 主機的 NetBIOS 名稱啊,每部主機均不同; server string = � 主機的簡易說明,這個隨便寫即可。

P.16-12~13請參閱書籍

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

display charset = 自己伺服器上面的顯示編碼,例如你在終端機時所查閱的編碼資訊。一般來說,與底下的 unix charset 會相同。

unix charset = � 在 Linux 伺服器上面所使用的編碼,一般來說就是 i18n 的編碼囉!所以你必須要參考 /etc/sysconfig/i18n 內的『預設』編碼。

dos charset = � 就是 Windows 用戶端的編碼了!一般來說我們的繁體中文 Windows 使用的是 big5 編碼,這個編碼在 Samba 內的格式被稱為『 cp950 』喔!

P.16-13請參閱書籍

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

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請參閱書籍

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

分享資源的相關參數設定 [ 分享的名稱 ] [ 分享名稱 ] :這個分享名稱很重要,它是一個『代號』而已。記得回去看看 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請參閱書籍

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

需帳號密碼才可登入的分享 (security =

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

P.16-21請參閱書籍

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

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請參閱書籍

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

1. 設定 smb.conf 設定檔與目錄權限相關之設定

P.16-22請參閱書籍

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

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

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

我們預計要分享 /home/project 目錄,這個目錄的權限該如何設定? 答:因為是要開放給 users 群組,而共享群組的權限通常是『 2770 』這個含有 SGID 的特殊旗標功能。因此這個目錄應該如此設定才好:

立刻實作

P.16-23請參閱書籍

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

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請參閱書籍

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

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

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

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

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

3. 重新啟動 Samba 並進行自我測試

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

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

P.16-27請參閱書籍

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

安全性的議題與管理 SELinux 的相關議題:

P.16-40~41請參閱書籍

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

防火牆議題:利用 iptables 來管理

P.16-41~42請參閱書籍

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

防火牆議題:透過內建的 Samba 設定 (smb.conf)

P.16-42請參閱書籍

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

Linux 系統的使用 smbclient :查詢網芳分享的資源,以及使用類似 FTP 的方式上傳 / 下載網芳

P.16-50請參閱書籍

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

mount.cifs :直接掛載網芳成為網路磁碟機

P.16-51請參閱書籍