歡迎您光臨本站 註冊首頁

通用線程:Samba 簡介 第二部分

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  為您的環境編譯、安裝和配置 Samba

Daniel Robbins
總裁/CEO,Gentoo Technologies, Inc.

內容:


下載 Samba
編譯和安裝
配置伺服器
安全性選項
測試共享
創建用戶
最終配置
啟動 Samba
配置客戶機
進行測試
下一次
參考資料
關於作者



在他的上一篇文章中,Daniel 介紹了 Samba 的用途。現在該讓它在系統上運行了。在本文中,他將指導您完成 Samba(版本 2.0.7)的編譯、安裝和最初的配置,使它可以在您的環境中使用。

下載 Samba
現在應該從 Samba.org 網站上下載 Samba 2.0.7 或更高版本(請參閱本文後面的參考資料)。選擇最近的鏡象站點后,單擊 \"download\"(下載)鏈接。這時我們開始準備下載源代碼了。您可以在頁面中間緊接著 \"Download\" 標題后的那一段中找到正確的鏈接。我說明這一點是因為人們很容易錯過這段,而導致不知道應該在哪個鏈接上單擊。


安裝說明:
要從頭開始編譯 Samba,可以選擇從二進位軟體包(例如和 Linux 發行版一起提供的 RPM)中安裝 Samba。這當然可以。但如同我在上一篇文章中講到過的,如果您這樣做,文件位置與在這裡所引用的會有略微不同。

下載了 Samba 2.0.7 或更高版本后,就可以把它解壓縮到您選擇的目錄位置中了。從命令提示上輸入:


% tar xzvf samba-2.0.7.tar.gz




將創建一個 samba-2.0.7 目錄。cd 到它,然後查看它包含的內容。首先請注意 docs 目錄。在這個目錄中,可以看到另一個稱為 textdocs 的目錄。texdocs 包含整個 Samba 文檔集。在 textdocs 目錄中一個最重要的文件是 DIAGNOSIS.txt。如果您在使用相應的 Samba 操作時遇到了一些問題,它會指導您完成問題診斷的一步一步的過程。我們會介紹在該文件中提到的某些診斷過程,但不是全部。


編譯和安裝 Samba
還需要關注一下主 samba-2.0.7 目錄中的 sources 目錄。在 sources 中,可以找到一個設計完美的配置腳本,它是為正確建立所有 makefile 而設計的。和所有其它配置腳本一樣,要獲得配置選項的列表,輸入:


$ ./configure --help




可以將輸出定向到 \'more\',這樣就能查看所有的選項:


$ ./configure --help | more




請注意目錄和文件名選項。要注意每個文件的安裝位置,預設的安裝路徑是 /usr/local/samba。 可以在配置 Samba 時通過傳遞 \"--prefix=/usr/local\" 選項來將它更改為 /usr/local。 例如,我將使用以下路徑設置:


$ ./configure --prefix=/usr/local --localstatedir=/var/log --sysconfdir=/etc




上述配置選項會導致除配置文件以外的 Samba 的預設樹都在 /usr/local 中。Samba 將在 /etc 中查找這些文件,而日誌文件往往在 /var/log 中。如果省略這些配置選項, 可以在 /usr/local/samba(/usr/local/samba/var、/usr/local/samba/etc 等等)目錄中找到所有文件。

現在可以開始進行編譯了。運行完配置后,輸入:


$ make




編譯完成後,以 root 輸入以下命令來安裝軟體:


# make install




配置伺服器
配置通常是從 smb.conf 文件開始和結束的。這是 Samba 的主配置文件。它有許多不同的配置選項。為避免混淆,我們只介紹一些對於 Samba 正確操作必不可少的那些選項。首先,需要找出 smb.conf 的位置。如果使用我在上面指定的那些配置選項,應該將 smb.conf 放在 /etc 中。如果使用預設路徑,Samba 將在 /usr/local/samba/etc 中查找它。要開始使用,cd 到相應的目錄,啟動您常用的文本編輯器,然後輸入以下幾行。我會隨時提供一些註釋,幫助您理解每個選項都起什麼作用。將以下幾行添加到 smb.conf 文件中:


[global]
workgroup = YOURWORKGROUP
security = user
encrypt passwords = yes
guest account = guest




第一行告訴 Samba 我們將選項放在了 \"global\" 那一節。有許多選項只能在這一節中定義。 這些選項控制著 Samba 的整體行為。

第二行告訴 Samba 它將創建的 Windows 工作組的名稱。用您工作組的相應名稱來替代 YOURWORKGROUP。

在第三行上,我們告訴 Samba 以用戶級別的安全性方式來運行。 這個選項將導致 Samba 通知所有連接的 Windows 客戶機,它們需要提供有效的用戶名/口令組合來獲得對任何網路資源的訪問。這絕對是個好辦法。用戶級安全性是 Samba 最常用的安全性級別,因為它是絕大多數文件共享情況下的最佳方案。但也可以使用其它的安全性級別。有一種方便的方式,它告訴 Samba 根據現有 Windows NT 或 2000 Server 的安全性資料庫來認證所有用戶。在這篇文章中將不介紹這種特定方式。如果希望了解有關它的更詳細信息,請查看 smb.conf 主頁的 \"security\"(安全性)選項。

現在該輪到第四行了。在這裡,我們告訴 Samba 與 Samba 之間以加密方式交換口令。 通常您總是希望以加密方式運行 Samba,除非所有客戶機都極其古老(例如 Windows for Workgroup 時代的機器)。支持加密口令的確會使 Samba 除了標準 Unix 口令資料庫以外還需要自己的口令文件。如果您認為不使用加密口令比較好,從而可以避免維護兩個口令文件,千萬不要這麼做!不使用加密口令將導致在 Windows 2000 以及不太舊版本的 Windows NT 4.0 中產生共享問題。如果確實希望避免維護兩個單獨資料庫,Samba 提供了幾種同步兩個資料庫的方法,這將是一種比較好的辦法。

下一行指定了用於 guest 訪問的有效 Unix 用戶帳戶。人們通常會使用 \"guest account=nobody\", 因此如果還沒有這樣的用戶,建議您向系統添加一個字面上就是 \"guest\" 的用戶。新的 \"guest\" 帳戶不需要設置口令,並且不需要以交互方式登錄。 (也可以選擇使用口令和有效的預設外殼來配置 guest。)

現在,我們可以向 smb.conf 添加 WINS 支持選項了。需要向 global 節添加以下兩行之一:


wins support = yes

或者

wins server = WINS 伺服器的 IP 地址




如果在當前子網中已有一個 WINS 伺服器(例如,運行 WINS 的 Windows NT Server),則需要使用另一個選項,並在等號右邊指定 WINS 伺服器的名稱。這樣就禁用了 Samba 的內部 WINS 服務,並且將使用您指定的 WINS 伺服器。

如果子網中沒有 WINS 伺服器在運行,或者您是在家中設置 Samba,不知道確切的 WINS 伺服器,那麼就需要使用第一個選項。它將通知 Samba 讓它成為 LAN 的 WINS 伺服器。

您一定想知道 WINS 是做什麼用的。從根本上說,可以把 WINS 看做是本地的動態 DNS 資料庫。當 Samba 作為 WINS 伺服器運行的時侯,同一子網上每個與 Windows 兼容的機器都會向 Samba 註冊它的 IP 地址和 NetBIOS 名稱(又稱「計算機名」)。這可以讓 Windows 機器使用 Samba 的 WINS 資料庫來請求特定 NetBIOS 名稱的 IP 地址。WINS 是網路瀏覽的關鍵組件;您在 Windows 機器上「網路鄰居」中四處查看時的行為就是一種網路瀏覽。

現在可以將更多選項添加到 global 節:


local master = yes
os level = 99
domain master = yes
preferred master = yes




現在開始一一說明。所有這些選項都與網路瀏覽有關。我已提到過 WINS 是網路瀏覽的關鍵組件,但要使瀏覽正確運行,還需要另一種元素。必須有一個本地主瀏覽器。聽上去比較奇怪吧? 需要進一步解釋。

為使瀏覽正常進行,必須有一些中央位置,用來保存本地子網上存在哪些機器和工作組信息的記錄。這個特別的列表稱為瀏覽列表。瀏覽列表用於構建您在第一次單擊「網路鄰居」時看到的工作組、域和機器的列表。 任何現代的 Windows 機器都可以成為本地主瀏覽器。理想情況下,我們希望 Samba 是網路上的本地主瀏覽器。

這是怎樣實現的呢?基本上,在子網上會有幾個強健的與 Windows 兼容的機器定期地在 LAN 上來回傳遞信息包,嘗試確定誰將成為本地主瀏覽器,通過這種方法把情況搞明白。這一過程稱為「瀏覽器選舉」。

作個大度的人
請別使用 Samba 可以在所有「瀏覽器選舉」中打敗 Windows 的能力來作為取笑您所在組織 Microsoft 管理員的理由。記住,重要的是作個有道德的贏家。

最後,這種廣播信息包大戰中的「贏家」將成為本地主瀏覽器。我們可以通過使用選項 os level = 99 來使 Samba 贏得這場競賽, 這個選項可以讓它打敗 LAN 上的其它所有機器。這是因為 Windows 的每個版本(從 Windows 95 到 NT 再到 2000)都有個硬編碼的 OS 級別,導致最高版本的 Windows 成為本地主瀏覽器(Windows 版本越新,數字就越大)。 將 Samba 設置為 99 可以讓它打敗所有 Microsoft 的產品,使它每次都成為本地主瀏覽器。

安全性選項
在結束 global 這一節前,有一些您可能感興趣的安全性選項。主機的 \'allow\' 選項可以讓您限制與 Samba 連接的 IP 地址:


hosts allow = 192.168.1. 127.




除 localhost 127 以外,這個選項只允許 192.168.1 網路中的機器與 Samba 連接。要確保在 hosts allow 那一行的結尾有個 127。

介面選項在機器碰巧有多個網路介面時特別有用。它可以讓您指定在哪個網路介面上可以使用 Samba。其使用方法如下:


interfaces = eth1




這是對一些必要的介面限制 Samba 的簡單辦法。限制介面可以防止來自有不良意圖的用戶可能的侵入嘗試。

測試共享
我們已經配置好了 Samba 的 global 選項,現在該創建一個可以讓我們訪問 /tmp 目錄的測試共享了。 添加以下行:


[tmp]
path=/tmp
writeable=yes




啟動 Samba 后,這些設置將使一個名為 tmp 的共享可用。這個共享包含 Samba 伺服器上 /tmp 目錄的內容。另外,如果特定的用戶和大多數用戶在 /tmp 中有寫許可權一樣,這個用戶就可以在該目錄中創建和修改文件。

現在我們已向 smb.conf 添加了所有這些項,到了驗證我們的配置是否正確的時侯了。為進行驗證,我們使用 testparm 實用程序:


$ testparm




在單擊了 Enter 鍵后,在屏幕上列示一個包含所有配置選項的列表。這時還將註明 smb.conf 中的所有錯誤,並加以註釋。如果有任何錯誤,按照屏幕上的指令來改正它們。現在我們可以開始配置 Samba 用戶並啟動 Samba 來進行測試運行。

創建用戶
為使 \"myuser\" 用戶(口令為 \"mypass\" )能夠使用 Samba,必須有以下要素存在:

有效的 \"myuser\" Unix 帳戶。myuser 不需要有進行登錄的能力,Samba 不使用 myuser 的 Unix 口令,因此如果需要,可以設置一個虛值。如果 myuser 還使用交互方式登錄到 Samba 伺服器,那也沒關係。
在 smbpasswd 文件中有效的 \"myuser\" 項。smbpasswd 文件是在名為 private 的目錄中找到的,該目錄帶有預設 Samba 安裝前綴(在本例中是 /usr/local/private)。 可以通過作為 root 用戶使用 smbpasswd 命令並輸入以下內容來將 myuser 添加到 smbpasswd 文件中:


# smbpasswd -a myuser
New SMB password:
Retype new SMB password:
Added user myuser.




這些步驟必須對每個新的 Samba 用戶重複執行。如果您是支持 Samba 的現有 Unix 帳戶,記住要將用戶名和口令添加到 smbpasswd 文件。如果添加的是僅 Windows 用戶,要記住除了將用戶添加到 smbpasswd 文件,還需要創建一個用戶名相同的有效 Unix 帳戶。實際上,首先需要創建 Unix 帳戶,因為除非 Unix 帳戶已存在,否則 smbpasswd 不會添加用戶。

兩個帳戶都是需要的,因為 Samba 使用 Unix 來在磁碟上設置正確的許可權,而 smbpasswd 文件則用於認證的目的。 如果您要從 Windows NT 進行連接,則需要創建 Samba \"administrator\" 用戶。

最終伺服器配置
我們現在幾乎可以啟動 Samba 以及配置客戶機了。 但必須首先確保 Samba 機器可以通過名稱 ping 到網路上的每台 Windows 客戶機。 如果不行,需要將某些項添加到 /etc/hosts,或更新 DNS,以使 Samba 機器可以順利找到 Windows 機器。

還有必要說明一點:Samba 在設置了 /etc/hosts 后能達到最佳工作狀態,只有這樣,\"localhost\" 名稱才能映射為 127.0.0.1。機器的 FQDN 應該映射為在 LAN 上使用的主要 IP 地址。例如:


#/etc/hosts excerpt

127.0.0.1 localhost
192.168.1.1 mybox mybox.mydomain.com




啟動 Samba
到這時為止,Samba 已經過配置,可以運行了。我們將啟動 Samba,然後集中說明如何正確配置 Windows 機器。要啟動 Samba,以 root 輸入以下命令:


# smbd
# nmbd




這將啟動 Samba 的兩個主要伺服器進程,smbd 和 nmbd。 它們將把所有信息性的和錯誤消息分別記錄到 /var/log/log.smb 和 /var/log/log.nmb 中。現在 Unix 方已完成了設置並正在運行,該是著眼於如何正確配置客戶機的時候了。

配置客戶機
要配置 Windows 機器,使它可以參與到 Samba 工作組中,需要確保已正確配置了 TCP/IP 協議。還必須確保:

Windows 機器可以通過名稱 ping 到 Unix 機器。 (在 C:\\> 提示上輸入 \"ping myserver\"。)
將 Windows 機器配置為使用 WINS 伺服器。 如果 Samba 提供的是 WINS 服務,這應該設置為 Samba 機器的 IP。如果不是,應該設置為有效 WINS 伺服器的 IP。通常可以在 TCP/IP 設置對話框中找到這個設置。
Windows 機器是 YOURWORKGROUP 的一個成員。

進行測試
現在該是驗證的時候了。在 Windows 機器完成重新引導后,需要使用 Samba 能接受的用戶名/口令來登錄到 Windows 上。如果使用的是 Windows 95/98,這個用戶名/口令組合就將存儲在一個文件中,在稍後嘗試與任何網路資源連接時使用。

如果使用的是 Windows NT Workstation,這個用戶名/口令組合還必須在 NT 的本地安全性資料庫中(否則就無法在最初時登錄到 NT 上)。 要實現這一目的,以 administrator 登錄到 NT,然後使用「用戶管理器」創建帳戶。然後註銷,再作為新用戶登錄。

正確登錄之後,在「網路鄰居」上雙擊,然後查看 YOURWORKGROUP 工作組。仔細看看。看是否列出了 Samba 伺服器。雙擊它,然後看是否列出了 /tmp 共享。如果列出了,恭喜您!Samba 在起作用!如果沒有,檢查以下事項:

運行 testparm。smb.conf 能使用嗎?如果不能,改正問題后重新啟動 Samba。
smbd 和 nmbd 在運行嗎?如果不在,檢查日誌文件了解可能發生的錯誤,改正所有問題,然後重新啟動 smbd 和 nmbd。
將 Windows 客戶機配置成使用合適的 WINS 伺服器了嗎?如果沒有,在查找網路上機器的 IP 地址時就會有問題。
可以從 Windows ping 到 Unix 並且反向也行嗎?如果不行,就需要配置 /etc/hosts 文件或 DNS 使名稱解析能正確發揮作用。
如果檢查了所有這些內容而 Samba 仍不能使用,則要仔細按照 docs/textdocs 目錄中 DIAGNOSIS.txt 文件里的步驟進行操作。您應該可以在幾分鐘的時間內確定並改正配置或網路問題。 如果以任何方式更改了 smb.conf,則需要向 smbd 和 nmbd 發送一個 HUP 信號,強制它們重新讀取 smb.conf。 這是通過以下命令做到的:

# kill -hup
# kill -hup




也可以簡單地殺死 smbd 和 nmbd,然後再次重新啟動它們。

下一次
在下一篇 Samba 文章中,我會讓您熟悉 Samba 的更多高級選項。然後您就可以設置共享,使它按照您所需的方式工作。我們還會探討 Samba 的一些高級特性,例如 Samba 列印。到時再見!

參考資料

從主 Samba 網站下載 Samba
訂閱 Amiga Samba 郵件列表
請參閱 Samba Notes for Redhat,它提供了最新的,但不完全是最終版本的說明,是有關 Red Hat 6 上的 Samba 和版本相對比較舊的 Red Hat 5.x 上的 Samba 1。
查看 Samba/iX,這是一套程序,可以使運行 MPE/iX 操作系統的 HP e3000 能夠通過使用微軟的 Message Block (SMB) 來提供服務。
IBM Learning Services 提供了關於 Samba 的為期 2 天的上機實踐課程。
請閱讀 Samba Unleashed,Steve Litt 著,其中包含 Daniel Robbins 的投稿
Using Samba (O\'Reilly Publishing; 1999) 是關於 Samba 管理的綜合指南,包括一些最近添加的內容,例如與 Windows NT 域進行集成,還有 SWAT 圖形配置工具

關於作者
Daniel Robbins 居住在美國新墨西哥州的阿爾布開克。他是 Gentoo Technologies, Inc. 的總裁/CEO、 Gentoo Project 的主創人、由 MacMillan 出版的幾本書(包括 Caldera OpenLinux Unleashed、SuSE Linux Unleased 和 Samba Unleashed)的投稿人。Daniel 自小學二年級起就與計算機結下不解之緣,那時他首先接觸的是 Logo 程序語言,並沉溺於 Pac-Man 遊戲中。這也許就是他至今仍擔任 SONY Electronic Publishing/Psygnosis 的首席圖形設計師的原因所在。Daniel 喜歡與妻子 Mary 和他們的女兒 Hadassah 一起共渡時光。可通過 drobbins@gentoo.org 與 Daniel Robbins 聯繫。


[火星人 ] 通用線程:Samba 簡介 第二部分已經有846次圍觀

http://coctec.com/docs/net/show-post-68510.html