摘 要 本文較為詳細地對Linux的Samba服務進行了剖析,內容涉及Samba的核心、語法、組成,以及
Samba的啟動與停止。同時給出了定制Samba的幾個技巧。
關鍵詞 Samba,剖析,定制
1 引 言
Linux是一個優秀的網絡操作系統,它可與多種網絡集成。Linux系統的穩定性、可靠性受到了廣大用戶
的歡迎,在小型網或者在公司、部門、單位等內部網(Intranet)上,常將Linux充當有效而強勁的文件
和打印服務器,讓windows客戶機共享Linux系統中的文件。這種Linux與 windows網絡集成是通過samba
來實現。Samba是一組軟件包,使Linux支持SMB協議,該協議由TCP/IP實現,它是windows網絡文件和打
印共享基礎,負責處理和使用遠程文件和資源。在缺省情況下,windows工作站上的Microsoft client使
用服務消息塊(SMB)協議。正是由於samba的存在,使得windows和Linux可以集成並互相通訊。
2 Samba核心
samba的核心是兩個守護進程smbd和nmbd程序,在服務器啟動到停止期間持續運行。Smbd和nmbd使用的全
部配置信息全都保存在smb.conf文件中。Smb.conf向smbd和nmbd兩個守護進程說明輸出什麼以便共享,
共享輸出給誰及如何進行輸出。Smbd進程的作用是處理到來的SMB軟件包,為使用該軟件包的資源與
Linux進行協商,nmbd進程使其它主機(或工作站)能浏覽Linux服務器。
3 Samba語法
一個完整的 smb.conf一般由Global settings和share Definitions兩部分組成。每部分由消息頭和參數
兩部分構成。消息用“[ ]”標志,參數結構形式為:
parameter = value。
其中,parameter可以是一個或用空格分隔的多個單詞,value 可以是布爾值、數字或字符串。參數告訴
了smba提供何種服務。
在smb.conf文件中,注釋行以“#”開頭,同時每項中英文字母不區分大小寫,在一行最後字符尾加
“\”,可將一行分成多行。用“;”開頭的行,是可改變的配置,將“;”去掉時,該配置將取作用。
4 Samba組成
4.1 Global settings(全局參數的設置)
該部分由[global]段完成Global的設置,該部分提供了全局參數,對samba的功能具有很大的影響,主要
用來設置整個系統規則。[global]段主要參數有:
workgroup=mygroup 提供NT域名 或工作組名 , mygroup是系統Red Hat6.0預置的名 字, 用戶可根據
實際情況, 給出與windows的域名 或工作組名 相同 的名 字, 以指 出samba將在該域或工作組范圍中
起作用。
server string=samba server 指 定服 務信息通常為samba服 務。
hosts allow 允許登錄的Linux-samba的主機名 單, 用IP地址給出, 多個IP地址用空格分開, 不 在
名 單中的主機將不 能得到samba提供的服 務, 這也是網絡安全的一個方面。
printcap name 指 定printcap文件地址, 通常為/etc/printcap, 包含了Linux打印機的配置信息,
在ReaHat linux中, lpd守護進程讀取printcap文件的配置信息, 然後監測系統的打印請求並管理打印
進程。
load printers 允許使用共享打印機時, 默認值為yes。
printing 如果使用的打印機是非標 准的, 那麼應該指 出打印機系統類型。在Linux環境中, 通常指
定為bsd類型。
guest acount 來賓帳戶, 表示用哪一個Linux用戶作為所要的客戶連接。由於該帳戶權限很小, root
用戶通常將其置為nobody。
security 指 定安全模式。大多數用戶使用user級的安全模式, samba用本地Unix口令文件驗證。如果
設置為server時, samba將用passWord server設定windows NT域服 務器驗證方式, 格式為password
server=NT域名 。
domain logons 為從win95工作站登錄samba提供域名 登錄服 務, 應使該項置為yes。
preserve case 與short preserve case 由於在Linux系統中英文大小寫視為不 同 的內容, 為在
windows中保持原有的大小寫狀態, 這兩項全置yes。
4.2 Share Definitions(共享定義)
4.2.1 [homes]段
在[homes]部分指定windows共享的主目錄,如果在windows工作站登錄的名字與Linux用戶名相同,提供
的口令也一致,那麼打開網絡鄰居,雙擊共享目錄圖標,就可獲得訪問該目錄的權力。從windows訪問
Linux主目錄時,用戶名作為主目錄共享名。[homes]段的主要參數有:
comment 說明提供的服 務為Home Directories服 務。不 影響操作。
browseable 指 定其它用戶能否浏覽該用戶主目錄。一般置為no, 禁止其它用戶訪問, 確保數據安
全。
writable 使用戶訪問該目錄時具有讀取和寫入主目錄中的文件時, 取值為yes, 只有讀取權限時應置
為no。
4.2.2 [printers]段
[printers]部分用於指定如何共享 Linux網絡打印機,從windwos系統訪問Linux 網絡打印機時,共享應
是printcap中指定的Linux打印機名。該段中主要參數有:
browseable 若取值為yes, 則允許其它用戶訪問打印機。否則, 限制其它用戶的訪問權。
printable 應置為yes, 才能實現打印。
public 置為no時, 客戶帳號不 打印出來;置為yes, 則打印出客戶帳號。
writable 打印機是輸出設備 , 不 可寫入, 應置為no。
4.2.3 [tmp]段
該部分是為所有用戶提供臨時共享方法。主要參數有:
path 指 定臨時共享路徑。通常為/tmp。
read only 置為no時, 用戶對/tmp有可讀、可寫和執行的權限。
public 一般置為yes, 以便讓所有用戶共享使用/tmp目錄。
4.2.4 [public]段
該部分提供了所有用戶都可以共同訪問的目錄。除了那些屬於維護人員具有讀、寫、執行權外,用戶只
具有讀取的訪問權限,主要參數有:
path 指 定公眾共享目錄路徑, 通常為/home/samba。
public 取值為yes, 允許公眾共享。否則, 禁止公眾共享/home/samba目錄。
writable 取值為yes時, 公眾有可寫權力。
printable 取值為no時, 無打印權力。
write list 指 定具有可寫權力的用戶名 單。
4.2.5 [fredsprn]段
該段用於指定專用打印機。
comment 指 出打印機名 字。
valid users 使用該打印機的有效用戶。
path 專用打印機使用的緩沖池數據存放在用戶主目錄。
printer 指 出使用哪一個專用(私用)打印機。
public 該打印機不 共享, 僅作專用(私用)。
writable 緩沖池中的數據不 可寫, 應置為 no。
printable 指 定打印能否啟動, 一般值為yes。
4.2.6 [fredsdir]段
本段用於指定私用目錄,以供指定的用戶使用,該用戶對該目錄具有寫權限。
comment 注明該目錄為誰提供服 務。
path 指 定私用目錄路徑, 以便指 定用戶可讀寫。
valid users 指 定使用該私用目錄的合法用戶。
public 當取值為no時, 該私用目錄不 供公眾用戶所共享。
writable 指 定的用戶對該私用目錄具有寫權限時, 取值應為yes。
printable 取值為no時, 不 可打印。
5 samba的啟動與停止
在缺省情況下,Red Hat Linux的samba在啟動時就已投入運行。也可利用系統腳本來手工啟動和停止
samba。具體方法如下:
# /etc/rc.d/init.d/smb start (啟動samba)
# /etc/rc.d/init.d/smb stop (停止samba)
6 定制samba技巧
用戶通過對smb.conf文件進行vi編輯,可以添加、刪除及修改smba提供的多種服務。Smb.conf一般位於
/etc 目錄下,在定制符合實際需求的smb.conf時,最好使用
# cp /etc/smb.conf /etc/smb.conf.old
進行保存。要查看smb.conf的內容時,可執行:
# vi /etc/smb.conf
6.1 向公眾開放 Linux文件資源,來訪者只有讀權限。
[public]
comment=public stuff
path = /
public = yes
writable = no
printale = no
write list = @staff
6.2 共享CD-ROM
修改smb.conf之前,先安裝光驅,可執行下列命令:
# mount - t iso9660 /dev/cdrom /mnt/cdrom
然後定制samba,內容如下:
[cdrom]
path = /mnt/cdrom
ready only = yes
public= yes
6.3 為多個用戶提供服務
comment = userl’sstuff,user2’sstuff,user3’sstuff
path = /home/user1 (用戶userl的主目錄)
valid users = user1 user2 user3
public = no (除了user1,user2,user3外不向公眾用戶開放)
writable = yes (三用戶對/home/user1中的文件有寫權限)
printable = yes (允許打印)
6.4 向公眾用戶開放/dev目錄,浏覽設備類型。
[dev]
comment = open and browse the /dev directory
path = /dev (路徑為/dev)
ready only = yes (只讀)
public = yes (公眾共享)
通信地址:湖北孝感學院計算機科學系(432100) 李革新
聯系電話:0712-2841540
E-mail:
[email protected]