一、Samba簡介
給Windows客戶提供文件服務是通過samba實現的,凡架設過MS Windows網絡的人都知道MS Windows網絡的核心是SMB/CIFS,而samba也是一套基於UNIX類系統、實現SMB/CIFS協議的軟件,作為UNIX的克隆,Linux也可以運行這套軟件。和NT相比較,samba的文件服務功能一點也不亞於NT,效率很高,借助Linux本身,可以實現用戶磁盤空間限制功能,NT到4.0版本還是無法實現這點,samba由samba小組(http;//samba.org)開發,更新速度很快,目前最高的版本是2.0.7版,是2000年4月25日發布的,每個更新版本在功能上都所增強,也修復了已知的BUG。本章所涉及到的技術內容以2.0.3版藍本。目前各種Linux發布大都包含這套軟件,如果你的Linux發布是Read Hat,則是以RPM形式提供,可以在安裝Linux的時候選擇這個軟件,也可以單獨安裝,以root身份。
rpm -i samba-2.0.3-8.i386.rpm,就可以了。
如果你的Linux發布沒有包含這個軟件,可以從ftp;//samba.org/pub/samba去下載。另外,您的Linux的核心要支持smbfs,一般各種發布已經把smbfs的支持包含進去,如果沒有包含的話,就要重新編譯核心,獲得smbfs支持,具體如何編譯核心請參閱相關文章。
由於本章的內容是基於文件服務器, 重點介紹samba在文件服務器上的應用。目前samba還不能完全代替Windows NT,尤其是把samba設置成PDC,最好不要這樣做,NT PDC非常復雜,samba還只能實現其中一部分功能。希望未來的版本可以做到。
這套軟件由一系列的組件構成,主要的組件有:
smbd SMB服務器,給SMB客戶提供文件和打印服務;
nmbd, Netbios 名稱服務器,提供Netbios名稱服務和浏覽支持,幫助SMB客戶定位服務器;
smbclient, SMB客戶程序,用來存取SMB服務器上的共享資源;
testprns 測試服務器上打印機訪問的程序;
testparms 測試Samba配置文件的正確性的工具;
smb.conf samba的配置文件;
smbstatus 這個工具可以列出當前smbd服務器上的連接;
make_smbcodepage 這個工具用來生成文件系統的代碼頁;
smbpasswd 這個工具用來設定用戶密碼;
swat samba的Web管理工具;
二、如何配置samba
實際上,samba安裝完後,只要把/etc/smb.conf這個文件裡的workgroup=XXXXX這個參數該為您的工作組,啟動samba就可以運行了,但這根本不能符合我們的需要。samba的配置都是圍繞smb.conf來進行的,配置方式有很多種,如果熟練的話可以手工編輯這個文件,也可以通過linuxconf來配置,而且samba本身帶了一個基於web的管理工具swat,使用901端口,安裝完samba後,它會在您機器的/etc/services的尾部加上一條:
swat 901/tcp #Add swat service used via inetd
在inetd.conf裡填上:
swat stream tcp nowait.400 root /usr/sbin/swat swat
在浏覽器的地址欄裡鍵入 http://youhostname:901/ 就可以進入swat對samba進行管理。下面就介紹如何手工配置這個文件以達到讓samba成為一個符合需求的文件服務器。
先看看一小段的smb.conf:
# smb.conf example
[global]
workgroup = WORKGROUP
server string = Samba Server
hosts allow = 192.168.1. 192.168.2. 127.
load printers = no
printcap name = /etc/printcap
guest account = guest
log file = /usr/local/samba/var/log.%m
max log size = 50
security = user
socket options = TCP_NODELAY
[homes]
comment = Home Directories
browseable = yes
writable = yes
[printers]
comment = All Printers
path = /usr/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
printer driver = Epson LQ-1600K
[tmp]
comment = Temporary file
path = /tmp
read only = no
public = yes
[public]
comment = Public Zone
path = /home/samba
public = yes
writable = yes
1.段
從上面的例子可以看出,smb.conf的格式和Windows裡的INI文件很像,含有多個段,每個段由段名開始,一直到下個段名,每個段名放在方括號中間。段裡的參數的格式是:名稱 = 值。
文件裡的每個段名、參數以及注釋都只能占一行,換句話說就是一行裡只能寫一個段名或參數或注釋,如果一行寫不下或不想把一行寫的過長,可以在行尾用"\"來表示續行。段名和參數名不分大小寫。可以有注釋,注釋以;或#開始到該行結束。
除了[global]段外,所有的段都可以看作是一個共享資源,段名是該共享資源的名字,而段裡的參數就是共享資源的屬性。[global], [homes] 和 [printers]這三個段是比較特殊的,將在後面說明。而下面的注意事項則是針對普通的段。