2).通過(guò)用戶(hù)口令
使用以下參數來(lái)限制通過(guò)用戶(hù)口令訪(fǎng)問(wèn):
security
參數security可以確定對客戶(hù)用戶(hù)名/口令的驗證方式。缺省為"user",即對Samba服務(wù)器的任何訪(fǎng)問(wèn)都要通過(guò)用戶(hù)名/口令的驗證。如果客戶(hù)登錄客戶(hù)機,如Windows
所用的用戶(hù)名與Samba服務(wù)器上的UNIX用戶(hù)名一致,則通過(guò)口令驗證后就可以訪(fǎng)問(wèn);如Windows
所用的口令也與UNIX一樣,那么不經(jīng)任何提示就可以訪(fǎng)問(wèn)。
但如果客戶(hù)機上登錄的用戶(hù)名與Samba服務(wù)器上的UNIX用戶(hù)名不一致,則需要在一個(gè)映射文件中(如/etc/smbusers)寫(xiě)入客戶(hù)機用戶(hù)名到UNIX用戶(hù)名的映射,同時(shí)使用"username
map"參數指定映射文件,例如:
username map = /ect/smbusers
在/etc/smbusers文件中的內容如下:
cuckoo = "cuckoo doo"
這樣,在客戶(hù)機上以"cuckoo
doo"注冊后,再與Samba服務(wù)器連接時(shí),輸入UNIX客戶(hù)cuckoo的口令就可以進(jìn)入,因為Samba已經(jīng)把"cuckoo
doo"映射為cuckoo。
security參數的另一個(gè)值是"share",表示Samba服務(wù)器不需要客戶(hù)機使用用戶(hù)名/口令來(lái)登錄,而是根據每個(gè)共享的設置來(lái)決定是否需要用戶(hù)名/口令驗證。設置security為share一般用于客戶(hù)機上大多數用戶(hù)名與Samba服務(wù)器上UNIX用戶(hù)名不相同的情況,以及Samba服務(wù)器主要提供guest訪(fǎng)問(wèn)。
在smb.conf文件中,如果沒(méi)有設置"encrypt
passwords",Samba將使用UNIX的password數據庫來(lái)驗證用戶(hù)口令。這需要客戶(hù)機將口令以"普通文件"的方式傳遞過(guò)來(lái)。如果設置了"encrypt
passwords",Samba則使用另一個(gè)加密口令文件,通過(guò)"smb passwd file"來(lái)設置,例如:
encrypt passwords = yes
smb passwd file = /etc/smbpasswd
3).通過(guò)用戶(hù)名
public
guest ok
上面的兩個(gè)參數的功能相同,都可以使用相應的服務(wù)允許guest用戶(hù),即不需要用戶(hù)名/口令驗證。如果還指定了"guest
only",那么相應的服務(wù)器只允許由guest用戶(hù)來(lái)訪(fǎng)問(wèn)。
invalid users
valid users
這兩個(gè)參數分別設置不允許注冊某個(gè)服務(wù)和允許注冊某個(gè)服務(wù)的用戶(hù)列表。一個(gè)用戶(hù)同時(shí)出現在兩個(gè)列表中的時(shí)候,不允許注冊?xún)?yōu)先。列表中的用戶(hù)名可以用空格隔開(kāi),以"@"開(kāi)頭的名字被認為是NIS
組名或UNIX組名;以"+"開(kāi)頭的名字被認為是UNIX組名;以"&"開(kāi)頭的名字只被認為是NIS組名。
only user
此參數控制是否只允許在"user ="列表中指定的用戶(hù)訪(fǎng)問(wèn)某個(gè)服務(wù)。如果設置為true,則只有在"user="列表中的用戶(hù)才能訪(fǎng)問(wèn)。
4).通過(guò)是否可以讀寫(xiě)來(lái)控制
read only
此參數設置為"yes",則使用服務(wù)的用戶(hù)不能在該服務(wù)的目錄中創(chuàng )建或修改文件。
writable
writeable
write ok
這三個(gè)參數功能相同。如果它們被設置為"no",則使用服務(wù)的用戶(hù)不能在該服務(wù)的目錄中創(chuàng )建或修改文件。
read list
write list
這兩個(gè)參數分別指定只允許對一個(gè)服務(wù)進(jìn)行只讀訪(fǎng)問(wèn)或同時(shí)有"寫(xiě)"權限的主機列表,這里,如果一個(gè)主機同時(shí)在兩個(gè)列表里,則"寫(xiě)"優(yōu)先。
5).通過(guò)是否在瀏覽器列表中顯示來(lái)控制
browsable
browseable
這兩個(gè)功能相同的參數控制該段是否在瀏覽列表中列出。瀏覽列表列出的是可獲得的共享列表。一般[home]段禁止瀏覽,以提高安全性。
3、Windows 9x做為SMB客戶(hù)的設置
1).配置microsoft網(wǎng)絡(luò )客戶(hù)
在客戶(hù)機(WIN9X)上,在控制面板里添加microsoft網(wǎng)絡(luò )客戶(hù)。選中microsoft網(wǎng)絡(luò )客戶(hù)--標識--計算機名--my_computer_name--my_group,其中,my_computer_name將作為表示客戶(hù)機的NetBIOS名,
my_group為組名
2).編輯注冊表記錄
如果在SMB服務(wù)器上的smb.conf 文件中沒(méi)有用到"encrypt
passwords",即使用"普通文本"格式的口令,則必須要編輯注冊表,來(lái)允許使用"普通文本"格式的口令。
在Windows的注冊表的以下條目中:
/HKEY_LOCAL_MACHINE/System/CurrentControlSet/Services/VxD/VNETSUP
新建DWORD值,將新建的值命名為EnablePlainTextPassword;雙擊EnablePlainTextPassword,將鍵值設為1。
3).重新啟動(dòng)
重新啟動(dòng)計算機,以用戶(hù)名/口令登陸。該用戶(hù)名/口令將用于與SMB服務(wù)器連接時(shí)進(jìn)行用戶(hù)身份認證,所以如果要訪(fǎng)問(wèn)SMB服務(wù)器上用戶(hù)自己的home目錄,建議使用與SMB服務(wù)器上相同的用戶(hù)名/口令。
4).訪(fǎng)問(wèn)Samba服務(wù)器
通過(guò)網(wǎng)絡(luò )鄰居瀏覽訪(fǎng)問(wèn)Samba服務(wù)器,可以在列表里選擇,也可以在命令窗口里使用命令:
\\sambaserver
4 、Samba服務(wù)器提供的其他命令
smbstatus
smbstatus指令用于顯示當前的SMB服務(wù)器的連接狀態(tài)。例如,在IP地址為202.204.3.16的"cuckoo"客戶(hù)機上,用戶(hù)john訪(fǎng)問(wèn)SMB服務(wù)器的"public"服務(wù)時(shí),命令輸出如下:
/usr/bin/smbstatus
Samba version 2.0.3
Service uid gid pid machine
----------------------------------------------
public john john 10009 cuckoo (202.204.3.16) Fri Jul 21 20:3
No locked files
Share mode memory usage (bytes):
1048464(99%) free + 56(0%) used + 56(0%) overhead = 1048576(100%)total
此命令可以附加一些開(kāi)關(guān)來(lái)顯示不同的內容,下表列出了主要的開(kāi)關(guān)及其含義:
表1-2 smbstatus命令主要選項表
nmblookup
nmblookup命令用于把一個(gè)NetBIOS名字映射到IP地址。對于上面的例子,可以使用下面的命令查找主機cuckoo:
/usr/bin/nmblookup sale
可以使用合適的選項來(lái)允許nmblookup查詢(xún)一個(gè)IP廣播域或是一個(gè)單獨的機器,該命令常用的選項參看表1-3。
表1-3 nmblookup 命令主要選項列表
smbclient
smbclient是訪(fǎng)問(wèn)SMB服務(wù)器資源的客戶(hù)程序。該程序提供的接口與ftp程序類(lèi)似,訪(fǎng)問(wèn)操作包括從SMB服務(wù)器下載文件到本地,或從本地上載文件到SMB服務(wù)器,還可以在SMB服務(wù)器上檢索目錄信息等。
命令語(yǔ)法如下:
/usr/bin/smbclient //smbserver/service [passwd][-U username]
其中,smbserver是SMB服務(wù)器的NetBIOS名,一般與服務(wù)器的主機名一樣,但不是必須的。"service"為服務(wù)器提供的服務(wù),如文件服務(wù)public或打印服務(wù)printer。
passwd是訪(fǎng)問(wèn)某些服務(wù)時(shí)需要的口令。如果在命令行輸入,后面則不會(huì )再提示輸入口令。否則,將在后面提示輸入口令。雖然有些要訪(fǎng)問(wèn)的服務(wù)器不需要口令,但仍然會(huì )有輸入口令的提示。如果不希望有口令提示,則可以在命令行使用"-N"選項。
如果要使用其他的端口與SMB服務(wù)器進(jìn)行TCP連接,可以使用"-p"選項來(lái)指定,缺省值為139。
"-U"可以指定與SMB服務(wù)器連接時(shí)使用的用戶(hù)名。如果沒(méi)有指定,smbclient使用環(huán)境變量USER指定的值作用戶(hù)名。如果沒(méi)有USER環(huán)境變量,則用"guest"。
在環(huán)境變量USER中,可以設置"USER=username%password",這樣就不用在命令行上輸入口令。同時(shí),使用ps命令看不到命令行參數,具有一定的安全性。同樣,也可以使用"-U
username%password"的形式指定用戶(hù)名和口令。?quot;-U"指定的口令"%password"要優(yōu)先于在命令行[password]中指定的口令。
"-L"選項可以列出在一個(gè)服務(wù)器上提供的服務(wù),例如:
/usr/bin/smbclient -L smbserver
使用下面的命令可以進(jìn)入與ftp類(lèi)似的提示狀態(tài):
/usr/bin/smbclient //smbserver/service
執行結果:
smb:\>
其中"\"表示服務(wù)器當前的工作目錄。在該提示符下可以使用的命令可以通過(guò)"?"、"help"命令列出。命令不分大小寫(xiě)。
在該提示符下除了可以使用很多與ftp類(lèi)似的命令外,還有命令recurse,它可以被設置為on,以便在使用mget或mput命令時(shí)能夠get或put匹配的子目錄。recurse缺省為off,即只get或put當前目錄中的文件。
在該提示符下還可以使用下面的命令:
smb:\>tar c localfile filename
將服務(wù)器上文件名為"filename"的文件和目錄(可以使用通配符)經(jīng)過(guò)tar 拷貝到本地的"localfile"文件中?;蛘撸?br>smb:\>tar x localfile filename
可以把本地tar 文件localfile 中的文件filename拷貝到服務(wù)器上;如果filename省略,則拷貝所有的文件。
上面的命令也可以在smbclient命令行上來(lái)執行,如:
/usr/bin/smbclient //smbserver/service [passwd] -T c local filefilename
/usr/bin/smbclient //smbserver/service [passwd] -T x local filefilename
smbprint
smbprint是在Linux系統下將打印文件提交給遠地SMB服務(wù)器打印的腳本程序。程序中調用的命令就是smbclient。下面舉例說(shuō)明此命令的使用方法。
例如,遠端SMB服務(wù)器NetBios名為prtserver(Windows
9X),提供打印服務(wù)。服務(wù)名為netpcl(NEC激光打印機),不需要口令。
在Linux系統中配置如下:
1. 編輯/etc/printcap文件,加入下面一行
smb:lo=/dev/null:sd=/usr/spool/smb:sh:if=/usr/bin/smbprint:af=/var/spool/lpd/smb/acct
2.建立目錄/usr/spool/smb、/var/spool/lpd/smb
3.用下面命令建立記帳文件
touch /var/spool/lpd/smb/acct
4.建立/var/spool/lpd/smb/.config文件,包含下面內容:
server = prtserver
service = necpcl
password = ""
5.編輯/usr/bin/smbprint文件,在smbclient命令參數中使"echo
translate"有效,這樣可以使UNIX文件到Windows9x系統打印時(shí),進(jìn)行<LF>與<CR/LF>的轉換。
6.啟動(dòng)lpd:
/etc/rc.d/init.d/lpd start
7.使用lpr命令打印/etc/hosts文件
/lpr -P smb/etc/hosts
lpr缺省使用的打印機名為lp,這里使用的是smb。
5、使用Samba加密口令
客戶(hù)機訪(fǎng)問(wèn)Samba服務(wù)器時(shí)進(jìn)行的用戶(hù)身份認證包括使用"普通文本"格式的口令,通過(guò)網(wǎng)絡(luò )傳送給SMB服務(wù)器,與UNIX的帳戶(hù)數據庫(如/etc/passwd)進(jìn)行核查;或者使用加密口令,通過(guò)"SMB
challenge/response"驗證進(jìn)行核查。本文著(zhù)重介紹加密口令的用法。
在Samba服務(wù)器中使用了與Windows NT兼容的口令加密算法,因此可以像WindowsNT一樣對Samba的客戶(hù)進(jìn)行用戶(hù)口令核實(shí)。
Windows
NT使用一個(gè)包含用戶(hù)口令hashed值的文件,是通過(guò)對用戶(hù)的"普通文本"的口令經(jīng)過(guò)加密算法得到的,稱(chēng)為"hashed口令"。不能從該hashed值返回得到原始的"普通文本"的口令。在Samba服務(wù)器上可以形成同樣的hashed口令,保存在smbpasswd文件中。
當一個(gè)Samba客戶(hù)(如Windows 9x
或NT)使用Samba資源時(shí),它先請求一個(gè)連接,并商討連接使用的協(xié)議。Samba回答客戶(hù)請求時(shí)產(chǎn)生一個(gè)隨機值,發(fā)送給客戶(hù),并且還儲存在Samba服務(wù)器上,稱(chēng)為"challenge"。"challenge"對于每一個(gè)客戶(hù)連接是不一樣的。
客戶(hù)然后使用hashed口令與"challenge"進(jìn)行加密運算,產(chǎn)生24個(gè)字節的"response",發(fā)送給Samba服務(wù)器。
Samba服務(wù)器使用自己保存的hashed值的用戶(hù)口令(保存在smbpasswd文件中)與先前產(chǎn)生的"challenge"進(jìn)行同樣的加密運算,將產(chǎn)生的結果與客戶(hù)發(fā)送過(guò)來(lái)的結果進(jìn)行比較,如果結果相同,則客戶(hù)被允許訪(fǎng)問(wèn);否則,禁止用戶(hù)訪(fǎng)問(wèn)。
對于Samba服務(wù)器來(lái)說(shuō),它不存儲"普通文本"格式的口令,儲存的是從"普通文本"口令轉換的hashed口令。并且在網(wǎng)絡(luò )連接時(shí),"普通文本"和"hashed口令"都不被傳送,所以比UNIX安全。因為當客戶(hù)程序與UNIX服務(wù)器連接時(shí)(如telnet),口令往往是以"普通文本"在網(wǎng)絡(luò )上傳送的,可以被網(wǎng)絡(luò )竊聽(tīng)軟件(如tcpdump)截獲。Samba加密口令文件smbpasswd會(huì )被利用成為潛在的漏洞。所以該文件是要由root所有,讀寫(xiě)權限應該為600。
Windows 9x
或NT缺省的用戶(hù)認證方式是使用加密的口令,這?quot;普通文本"不在網(wǎng)絡(luò )上傳送。相應的,Samba也要使用加密口令的認證方式。但如果想使用"普通文本"格式的口令,可以編輯Windows
NT的注冊表來(lái)允許。這樣,Samba服務(wù)器就可以使用/etc/psswd文件來(lái)驗證用戶(hù)口令,而不需要smbpasswd文件。
要想讓Samba使用與Windows
NT兼容的口令加密算法,則必須在Samba服務(wù)器上保存包含與用戶(hù)名對應的hashed值的口令文件??梢允褂?usr/bin/mksmbpasswd.sh程序產(chǎn)生加密口令文件的框架,文件名由"smb
passwd file"參數設置,這里是/etc/smbpasswd,命令行格式為:
cat /etc/passwd |mksmbpasswd.sh >/etc/smbpasswd
然后root可以使用smbpasswd命令可以設置用戶(hù)口令,例如設置客戶(hù)cuckoo的smb口令為smbpassword:
/usr/bin/smbpsswd cuckoo smbpassword
root還可以使用smbpsswd進(jìn)行添加用戶(hù)、取消口令等操作。但添加的用戶(hù)必須在/etc/psswd文件中存在。普通用戶(hù)使用smbpsswd
命令只能像使用passwd程序一樣更改自己的smb口令。
三、Samba常見(jiàn)故障排除
Samba的故障排除可以在SMB服務(wù)器和SMB客戶(hù)機上通過(guò)各自的命令來(lái)完成。
1 SMB服務(wù)器上的操作
1).使用下面的命令來(lái)查看是否有錯誤的配置。
/usr/bin/testparm /etc/smb.conf
2). 在服務(wù)器上以及客戶(hù)機上用ping命令檢查tcp/ip是否正常工作。
3). 在SMB服務(wù)器上用
/usr/bin/smbclient -L SMBserver
命令將得到一個(gè)共享的列表。
如果出現失敗信息,則要檢查與服務(wù)器相關(guān)的"hosts allow"、"hosts deny"、"validusers"、"invlid
users"等參數的設置。如果出現"connection
refused",則檢查Samba服務(wù)器進(jìn)程是否啟動(dòng);若Samba以守護進(jìn)程形式運行的話(huà)用"netstat-a"命令檢查端口是否處于監聽(tīng)狀態(tài)。
4). 運行了命令"/usr/bin/nmblookupSMBserver",將返回SMB服務(wù)器的IP地址。否則nmbd沒(méi)有正確的運行。
5). 運行"/usr/bin/nmblookup -d 2 '*'
"命令,在子網(wǎng)中運行NetBIOS/TCPIP的主機將會(huì )響應。否則說(shuō)明nmblookup
不能正確的得到廣播地址,可以嘗試在smb.conf文件中用interfaces參數人工設置IP地址、廣播地址和子網(wǎng)掩碼。
6). 運行"/usr/bin/smbclient
'\\SMBserver\homes"命令,需要輸入客戶(hù)在SMB服務(wù)器上的用戶(hù)口令,然后會(huì )出現類(lèi)似"smb>"的提示符。這時(shí)可以使用dir命令瀏覽客戶(hù)在SMB服務(wù)器帳戶(hù)目錄下的文件,用help命令可以得到其他命令的幫助。如果不能出現類(lèi)似"smb>"的提示符,并且有"invalid
network name"的錯誤信息,則有可能homes共享沒(méi)有正確的設置;或者有"Badpassword",則要檢查"shadow
password"、"password encryption"以及參數"valid users"和"path"的設置。
2、SMB客戶(hù)機上的操作
1). 運行"net view \\SMBserver"命令,應該能夠列出SMB服務(wù)器上的共享。
如果出現類(lèi)似"network name not found"的錯誤,則要檢查客戶(hù)機上DNS或WINS的設置。如果出現"Invalidnetwork
name"或"bad password error"的錯誤,則參照與上面"smbclient
-L"命令中同樣的錯誤結果的解決方法。要注意客戶(hù)機將要用客戶(hù)注冊客戶(hù)機時(shí)所用的用戶(hù)名/口令去與SMB服務(wù)器連接,所以在SMB服務(wù)器上,用戶(hù)最好有同樣的用戶(hù)名/口令。
2). 使用"net use
x;\\SMBserver\homes"命令,可以把SMB服務(wù)器上客戶(hù)home目錄映射到客戶(hù)機"x:"盤(pán),"x:"應該是一個(gè)客戶(hù)機上未用的盤(pán)號。這樣,共享的目錄可以在客戶(hù)機上以"x:"盤(pán)來(lái)看待。正常的信息為"command
complete successfully"。
如果要停止使用"x:"盤(pán),可以使用"net use
x:/delete"命令。如果不能正常的把客戶(hù)的home目錄映射到"x:"盤(pán),則要檢查SMB服務(wù)器上"hosts
allow"等參數的配置。如果客戶(hù)機上的用戶(hù)名不能與服務(wù)器上的用戶(hù)名匹配,嘗試使用"username map"選項。
3). 如果在SMB服務(wù)器上沒(méi)有使用"encryptedpasswords",則在客戶(hù)機上要在注冊表中允許使?quot;普通文本"格式的口令。
小結
Samba是SMB的一種實(shí)現方法,主要用來(lái)實(shí)現Linux系統的文件和打印服務(wù)。Linux用戶(hù)通過(guò)配置使用Samba服務(wù)器可以實(shí)現與Windows用戶(hù)的資源共享。
守護進(jìn)程smbd和nmbd是Samba的核心,在全部時(shí)間內運行。nmbd
程序使得通過(guò)企圖計算機可以瀏覽Linux服務(wù)器。Smbd守護進(jìn)程在SMB軟件包到達網(wǎng)上時(shí)對它們進(jìn)行處理,并且為使用或共享它的資源與Linux進(jìn)行協(xié)調。
在安裝完Samba后,還需要定制它的配置文件smb.conf,才能使Samba正常工作以符合要求。smb.conf文件的的語(yǔ)法結構與Windows的*.ini文件十分類(lèi)似;文件結構主要包括三部分:全局參數部分、目錄共享部分、打印共享部分;本文著(zhù)重介紹了如何配置各選項以完成特定的功能。
通過(guò)使用不同的參數,可以實(shí)現對Samba的不同訪(fǎng)問(wèn)控制:通過(guò)主機地址限制訪(fǎng)問(wèn)、通過(guò)用戶(hù)口令限制訪(fǎng)問(wèn)、通過(guò)用戶(hù)名限制訪(fǎng)問(wèn)、通過(guò)驗證讀寫(xiě)權限限制訪(fǎng)問(wèn)、通過(guò)是否在瀏覽器列表里顯示來(lái)控制等。所有這些方法,大大的增強了Samba服務(wù)器的安全性。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。