Download presentation
Presentation is loading. Please wait.
Published by娈 江 Modified 7年之前
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
基礎的網芳分享流程與 smb.conf 的常用設定項目
立刻實作 假設你打開 Windows XP 的檔案總管,在 D:\VBird\Data 這個 目錄下,你按下右鍵選『共用與安全性』,之後,在出現的視 窗中,你選擇:『你瞭解這個安全風險,但仍不要執行精靈而 共用檔案,請按這裡』,然後勾選:『在網路上共用這個資料 夾』,最後共用的名稱你輸入了:『VBGame』,請問,假設 你的 IP 是 ,那麼你的用戶會看到什麼網址列? 答:網芳的資源名稱通常的寫法是:『 \\IP\分享資源名稱』, 我們的分享資源名稱為 VBGame,因此最終這個分享的資源 名稱應該是:『 \\ \VBGame 』才對!很多朋 友都會寫成:『 \\ \VBird\Game 』那錯得很離 譜喔! P.16-11~12 請參閱書籍
12
伺服器整體設定方面:在 smb.conf 當中設定好工作群組、 NetBIOS 主機名、密碼使用狀態 (無密碼分享或本機密碼) 等等;
建立所需要的檔案系統:根據步驟 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 = 自己伺服器上面的顯示編碼,例如你在 終端機時所查閱的編碼資訊。一般來說,與底下的 unix charset 會相同。
unix charset = 在 Linux 伺服器上面所使用的編碼,一般來 說就是 i18n 的編碼囉!所以你必須要參考 /etc/sysconfig/i18n 內的『預設』編碼。 dos charset = 就是 Windows 用戶端的編碼了!一般來說 我們的繁體中文 Windows 使用的是 big5 編碼,這個編碼 在 Samba 內的格式被稱為『 cp950 』喔! P.16-13 請參閱書籍
15
security = share, user, domain:三選一,這三個設定值分 別代表:
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
分享資源的相關參數設定 [分享的名稱] [分享名稱]:這個分享名稱很重要,它是一個『代號』而已。記得 回去看看 裡面提到的那個範例; 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
使用者認證層級設定 (security) 為:user
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
立刻實作 我們預計要分享 /home/project 目錄,這個目錄的權限該如何 設定? 答:因為是要開放給 users 群組,而共享群組的權限通常是 『 2770 』這個含有 SGID 的特殊旗標功能。因此這個目錄應 該如此設定才好: P.16-23 請參閱書籍
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 請參閱書籍
Similar presentations