830 likes | 965 Views
第 24 章. Samba 伺服器. 前言. 微軟 Windows 作業系統提供的 『 網路芳鄰 』 服務 , 讓人們發現在區域網路中 , 互相分享檔案與印表機等資源是這麼一件簡單容易的事:只要輕鬆地按幾下 , 就可以使用他人分享出來的檔案與印表機。這麼好用的功能 , 難道 Linux 社群的人就只能乾瞪眼嗎?當然不是 , 透過本章介紹的 Samba 伺服器 , 您的 Linux 也可以跟 Windows 用網路芳鄰共享資源 ,『 一家烤肉萬家香 』 了。. 本章提要. 24-1 Samba 簡介
E N D
第 24 章 Samba 伺服器
前言 • 微軟 Windows 作業系統提供的『網路芳鄰』 服務, 讓人們發現在區域網路中, 互相分享檔案與印表機等資源是這麼一件簡單容易的事:只要輕鬆地按幾下, 就可以使用他人分享出來的檔案與印表機。這麼好用的功能, 難道 Linux 社群的人就只能乾瞪眼嗎?當然不是, 透過本章介紹的 Samba 伺服器, 您的 Linux也可以跟 Windows 用網路芳鄰共享資源,『一家烤肉萬家香』了。
本章提要 • 24-1 Samba 簡介 • 24-2 安裝與啟動 Samba 伺服器 • 24-3 認識 Samba 的安全等級 • 24-4 設定特定的使用者才能登入 Samba 伺服器 • 24-5 分享只能唯讀的目錄
本章提要 • 24-6 分享可讀寫的目錄 • 24-7 分享只允許特定使用者存取的目錄 • 24-8 分享印表機 • 24-9 在 Windows 使用分享的目錄及印表機 • 24-10 SWAT - Samba 的 Web 介面設定軟體
24-1 Samba 簡介 • 這些年來, Windows 與 Linux 作業系統各自擁有其支持者及市場。因而在一般公司行號或學校裡, 可能同時有 Windows 及 Linux 作業系統的主機。Windows主機間可以藉由網路芳鄰共享資源, Linux 和 Linux 主機可以透過 NFS 共享目錄, 而 Samba 伺服器則可以讓 Windows 與 Linux 達成資源共享。
Samba 簡介 • 為了使 Windows 主機間的資源能夠共享, IBM 於 1980 年代發展出了 SMB(Server Message Block) 通訊協定。微軟則藉著 SMB 通訊協定, 使得網路芳鄰主機間的檔案、印表機能夠彼此分享。目前類似此種資源分享的通訊協定還有NFS、Appletalk ...等。 • 如果您對 SMB 通訊協定有興趣, 可參考 http://www.samba.org/cifs/docs/what-is-smb.html 的 "Just what is SMB?" 文章的說明。
Samba 簡介 • 微軟網路芳鄰的功能一推出後, 便廣受使用者的好評, 大家突然發現原來要在網路上共享資源是那麼簡單的事! • 有鑑於此, 熱心人士們開始在 Linux 主機上實現 SMB 通訊協定, 而後來實作出來的軟體即稱為 Samba。
Samba 簡介 • 由於 SMB 通訊協定是採用 client/server 架構的通訊協定, 所以 Samba 軟體也分為用戶端及伺服端 2 個部分。藉由執行 Samba 用戶端程式, Linux 主機便可以透過網路芳鄰使用 Windows 主機所分享的資源;而在 Linux 主機安裝Samba 伺服器, 則讓 Linux 主機可以透過網路芳鄰的方式將資源分享出去, 與Windows 主機共享。也就是說, Samba 將 Windows 和 Linux 給拉在一起了!
24-2 安裝與啟動 Samba 伺服器 • 目前 Samba 軟體主要是由一個 20 人左右的 Samba 團隊負責維護及開發,大多數 Linux 發行版都已內附 Samba 程式套件, 透過 http://www.samba.org/ 網頁可以獲得有關 Samba 的詳細資訊, 也可以取得 Samba 的最新版本。
安裝與啟動 Samba 伺服器 • 安裝 Samba • Fedora Core 2 內附 Samba 版本的問題 • 設定並啟動 Samba 伺服器 • 修改 smb.conf 設定檔 • 檢查 smb.conf 設定檔的正確性 • testparm 的檢查結果有誤 • 啟動 Samba 伺服器 • 使用分享的目錄
安裝 Samba • Samba 伺服器總共有 4 個相關套件, 您可執行以下指令確認是否已安裝:
安裝 Samba • 若發覺尚未安裝 samba, 則請在安裝光碟中找到 samba 套件, 掛載並切換到檔案所在的目錄後執行下列指令安裝:
Fedora Core 2 內附 Samba 版本的問題 • 若您是使用 Fedora Core 2 發行版, 要請您特別注意:由於此 Linux 發行版所附的 Samba3.0.3 版有些許問題, 會造成已安裝微軟 Hotfix-K828741 安全性更新程式的 Windows NT/2000/XP/2003 系統無法與 Samba 伺服器連線。
Fedora Core 2 內附 Samba 版本的問題 • 不過新版本的 Samba (筆者撰文時最新版本為 3.0.7) 已修正此一問題, 因此無論您是否已安裝上述套件, 都請至 http://us3.samba.org/samba/ftp/Binary_Packages/ Fedora/RPMS/i386/core/2/ 下載新版的 samba、samba-common、samba-client 及 samba-swat 套件,並如下安裝:
設定並啟動 Samba 伺服器 • 安裝好後, 馬上就可以啟動 Samba 伺服器了。但是 Samba 伺服器預設使用的設定值無法讓所有使用者登入, 因此我們在啟動之前, 必須先修改 Samba伺服器的設定檔。 • Samba 伺服器的設定檔為 /etc/samba/smb.conf, 主要分為兩大部分:一是Samba 伺服器的整體環境設定, 這裡所做的設定會套用於每個分享資源;另一則是各個分享資源的個別設定項目, 該處所做的設定只對某一特定的分享資源有效。其結構為:
設定並啟動 Samba 伺服器 • 以下我們先以一個最簡單的例子:分享 /tmp 目錄 (讓所有使用者都可以存取該目錄), 來介紹如何設定並啟動 Samba 伺服器。
修改 smb.conf 設定檔 • 請先開啟 /etc/samba/smb.conf 設定檔, 並如下修改:
修改 smb.conf 設定檔 • 若 Samba 伺服器及用以連線進入 Samba 伺服器的 Windows 電腦主機名稱為中文, 則可能會出現無法進入工作群組的錯誤情況。此時, 必須在瀏覽器的網址列輸入 "\\Samba 伺服器的 IP 位址\" 才能順利連線。因此建議您, 主機的名稱最好不要使用中文。
檢查 smb.conf 設定檔的正確性 • 修改完設定檔後, 可以用 testparm指令檢查 smb.conf 的正確性, 並列出可能錯誤的地方:
檢查 smb.conf 設定檔的正確性 • 執行 testparm指令列出 smb.conf 設定檔內容時, 您可能會發現列出的設定值較實際在設定檔中見到的多了許多。這是因為 Samba 伺服器的 smb.conf 有許多預設值, 而 testparm指令會把這些預設值統統列出來!
testparm 的檢查結果有誤 • 執行 testparm指令會列出 smb.conf 檔中可能的錯誤之處, 例如以下錯誤訊息說明"workgroup" 設定項目被誤植為 "gworkgroup"。我們可依照所得到的檢查結果, 來修正 smb.conf 檔:
啟動 Samba 伺服器 • 修改好設定檔之後, 請執行以下指令, 啟動 Samba 伺服器: • 執行 /etc/rc.d/init.d/smb指令時, 除了可用 start 參數啟動之外, 還可以使用 stop、restart、status 等參數。 • 若希望開機時能自動啟動 samba, 可執行 chkconfig smb on 指令設定。
使用分享的目錄 • 成功啟動 Samba 伺服器之後, 在 Windows 的網路芳鄰就可以看到我們剛剛所分享出來的目錄了 (若您設定 Samba 時, 在 workgroup 項目指定了一個新的工作群組, 則可能需要稍等幾分鐘, 才可以看到並進入該群組):
使用分享的目錄 • 接下來即可在此分享的 /tmp 目錄, 存取所需的檔案了。
24-3 認識 Samba 的安全等級 • 在上一節中, 我們介紹了一個最簡單的 smb.conf 範例, 該例子中將"security =" 設成 "share", 表示此 Samba 伺服器使用 share 安全等級, 可讓所有使用者不需帳號及密碼即可登入。 • 其實 Samba 伺服器共有 4 種安全等級, 安全性由低至高分別為:share (共用級別)、 user (使用者級別)、server (密碼伺服器) 及 domain (網域)。
認識 Samba 的安全等級 • 其中除了 share 等級外, 其他 3 種等級, 使用者均必須輸入正確的帳號及密碼, 才能登入並使用 Samba 伺服器所分享的資源。以下是此 4 種安全等級的簡要說明: • share:若採用此安全等級, 則 Windows 或其他主機上的使用者都不需輸入帳號及密碼, 即可登入 Samba 伺服器。
認識 Samba 的安全等級 • user:這是 Samba 伺服器預設使用的安全等級。使用者在存取 Samba 伺服器分享的資源前, 必須先輸入帳號及密碼, 經提供服務的 Samba 伺服器驗證通過後, 才可使用分享的資源。 • server:若設定為此安全等級, 使用者在存取 Samba 伺服器分享的資源前,也必須先輸入帳號及密碼, 經驗證通過後, 才可使用分享的資源。不過, 此驗證工作會由另一台指定的 Samba 伺服器或 Windows NT/2000/2003 執行。
認識 Samba 的安全等級 • domain:若 Samba 伺服器要加入的網路環境為網域而非工作群組, 則可使用此等級, 利用網域中的 Windows 伺服器進行使用者身份密碼的驗證工作。 • 由於 server 等級需要額外的電腦進行認證;而 domain 等級也必須在 Windows 網域中執行, 所以實際運用上, 以 share 及 user 等級較為常用, 設定也較方便。因此, 接下來的設定, 我們將以此 2 個等級為例作說明。
24-4認識 Samba 的安全等級 • 若您不希望讓所有使用者都能任意登入 Samba 伺服器, 存取資源, 則可以將安全等級設定為 user, 透過設定 Samba 伺服器的帳號及密碼, 限制使用者登入。 • 請開啟 /etc/samba/smb.conf 檔:
認識 Samba 的安全等級 • 設定好後, 請接著執行以下指令產生 "smb passwd file =" 項目指定的 /etc/samba/smbpasswd 密碼檔:
認識 Samba 的安全等級 • 然後利用 smbpasswd指令, 一一設定 /etc/samba/smbpasswd 檔中每個帳號所要使用的密碼 (密碼檔中的帳號為系統中已存在的帳號, 以下以 tony 使用者為例):
認識 Samba 的安全等級 • 完成上述設定後, 請執行下列指令重新啟動 Samba 伺服器, 讓設定值生效: • 如次一來, 當使用者欲進入 Samba 伺服器時, 就會出現下列的交談窗詢問 Samba 伺服器上的帳號及密碼:
24-5 分享只能唯讀的目錄 • 前面有關安全等級的設定屬於 Samba 伺服器的整體境設定, 完成前面設定後, 使用者已經可以順利登入 Samba 伺服器。接下來的章節, 我們將說明如何分享資源。 • 首先分享的是只開放讀取的目錄, 請開啟 /etc/samba/smb.conf 設定檔, 在設定檔的最末端加入下列內容:
分享只能唯讀的目錄 • 如果要讓所有人都可以登入伺服器, 記得要把 "security=" 的值設成 "share"。
分享只能唯讀的目錄 • 重新啟動 Samba 伺服器之後, 即可看到所分享的唯讀目錄:
24-6 分享可讀寫的目錄 • 上一節設定的目錄僅提供唯讀的權限, 若要分享可讀寫的目錄, 請於 /etc/samba/smb.conf 設定檔最末端加入下列設定:
分享可讀寫的目錄 • 設定好後, 執行下列指令建立分享目錄, 並設定存取權限, 再重新啟動 Samba伺服器: • 如此您就可以在該目錄中新增、刪除及修改檔案了。
24-7 分享只允許特定 使用者存取的目錄 • 前面 2 節所建立的分享目錄, 只要使用者能登入 Samba 伺服器, 都可以依照開放的權限, 瀏覽或修改其中的資料。但通常公司、學校或個人使用的資料,並不適合讓所有的使用者都可以瀏覽及修改。此時, 就必須限制分享目錄的權限,僅讓某些使用者可以進入並使用其中的檔案資料。
分享只允許特定 使用者存取的目錄 • 24-7-1 限制使用者的 IP 位址 • 24-7-2 限制使用者的帳號
24-7-1 限制使用者的 IP 位址 • 要限制使用者存取分享目錄, 最簡單的方式就是限制使用者的 IP 位址, 僅允許來自特定 IP 位址的使用者瀏覽分享目錄。請編輯 /etc/samba/smb.conf, 在整體環境設定或欲限制的目錄設定項目中加入下列設定(設定好後請記得重新啟動伺服器):
限制使用者的 IP 位址 • 或是您也可以指定不允許存取的 IP 位址: • 例如筆者在整體環境設定區塊設定 "hosts deny = 192.168.0.35", 則由此IP 位址的主機存取 Samba 伺服器時, 就會被拒絕: