Samba是一套使用SMB(Server Message Block)協議的應用程序, 通過支持這個協議, Samba允許Linux服務器與Windows系統之間進行通信,使跨平台的互訪成為可能。Samba是在Linux及Unix上實現SMB(Server Message Block)協議的一個免費軟件,由服務器及客戶端程序構成。
Samba采用C/S模式, 其工作機制是讓NetBIOS( Windows 網上鄰居的通信協議)和SMB兩個協議運行於TCP/IP通信協議之上,並且用NetBEUI協議讓Windows在“網上鄰居”中能浏覽Linux服務器。
samba服務的搭建
客戶的使用系統的不同也導致測試結果的不同.
linux系統客戶端:
security = user or share
smbclient -L //192.168.7.113/westos 都是可以看到共享目錄的,
二者不同之處在於, security = user 時
[root@redhat samba]# smbclient //192.168.7.113/westos
Enter root's password:
Anonymous login successful //系統提示登錄samba服務成功,但是訪問westos共享目錄失敗,匿名用戶也是用戶。
Domain=[MYDOMAIN] OS=[Unix] Server=[Samba 3.5.10-125.el6]
tree connect failed: NT_STATUS_ACCESS_DENIED
security = share
[root@redhat samba]# smbclient //192.168.7.113/westos
Enter root's password:
Domain=[MYDOMAIN] OS=[Unix] Server=[Samba 3.5.10-125.el6]
Server not using user level security and no password supplied. //不是服務的有效用戶,雖然security = share,但是要支持密碼登陸。相當於samba服務訪問都沒成功
tree connect failed: NT_STATUS_WRONG_PASSWORD
win的測試:
security = share 時
我們訪問samba服務時,直接登陸成功,但是訪問目錄時,提示要密碼。
security = user 時,當訪問samba服務時就開始要密碼,沒密碼不訪問。
有沒有這種感覺,linux和win的測試,貌似二者是相反的,剛好顛倒過。
Linux系統
當Public =yes 時:
security = user or share
匿名用戶登陸都將成功。
[root@redhat samba]# smbclient //192.168.7.113/westos
Enter root's password:
Anonymous login successful
Domain=[MYDOMAIN] OS=[Unix] Server=[Samba 3.5.10-125.el6]
smb: > ^C
[root@redhat samba]# vim /etc/samba/smb.conf
[root@redhat samba]# /etc/init.d/smb restart
Shutting down SMB services: [ OK ]
Starting SMB services: [ OK ]
[root@redhat samba]# smbclient //192.168.7.113/westos
Enter root's password:
Domain=[MYDOMAIN] OS=[Unix] Server=[Samba 3.5.10-125.el6]
Server not using user level security and no password supplied.
smb: > ^C
win客戶端:
當Public =yes 時:
security = share
匿名用戶不需要密碼用戶名,直接登陸成功,訪問共享目錄也不需要密碼用戶名。
當Public =yes 時:
security = user
當你訪問samba時,直接就會要用戶名,密碼,登陸都不成功,何況看到共享目錄。
比較:
也就是說當當Public =yes 時:linux客戶端就可以訪問共享目錄,不管security = user ro share.跟它都沒關系。Win客戶端只有security =share時,匿名用戶才有權利去訪問共享目錄。
Samba的幾個主要配置文件(/etc/samba)
smb.conf:最主要的配置文件,分為[global]和[Share Definitions]兩個部分。
lmhosts:對應NetBIOS Name與該主機的IP,一般Samba在啟動時就能捕捉到LAN中相關計算機NetBIOS Name對應的IP,因此,這個配置文件一般不用設置。
smbpasswd:這個文件默認不存在,它是Samba預設的使用者密碼對應表。
Samba的幾個主要命令
smbpasswd:用來設置Samba用戶的帳號和密碼。
smbclient:用來查看別的Linux主機的共享。也可以在自己的Samba主機上使用,用來查看設置是否成功。
smbmount:用來將Samba服務器共享的文檔和目錄掛載到自己的Linux主機上。
testparm:用來檢查smb.conf是否有錯誤。
smb.conf的幾個常用變量
①客戶端變量
-----------------------------------------------------------------------------
%a | 客戶端的體系結構(例如Samba,NT,Win98,或者Unknown)
%I | 客戶端的IP地址(例如:192.168.220.100)
%m | 客戶端的NetBios名
%M | 客戶端的DNS名
------------------------------------------------------------------------------
②用戶變量
------------------------------------------------------------------------------
%g | %u的基本組
%G | %U的基本組
%H | %u的Home目錄
%u | 當前的unix用戶名
%U | 被請求的客戶端用戶名(不總是被samba使用)
------------------------------------------------------------------------------
③共享變量
------------------------------------------------------------------------------
%p | 如果和%p不同,automounter的路徑對應共享的根目錄
%P | 當前共享的根目錄
%S | 但前共享的名稱
-------------------------------------------------------------------------------
④服務器變量
-------------------------------------------------------------------------------
%d | 當前服務器進程的ID
%h | Samba服務器的DNS主機名
%L | Samba服務器的netbios名
%N | Home目錄服務器,來自automount的映射
%v | samba版本
-------------------------------------------------------------------------------
⑤其他變量
-------------------------------------------------------------------------------
%R | 經過協商的SMB協議
%T | 當前的日期和時間
四種安全等級
①security=share:用戶訪問Samba服務器不需要提供用戶名和口令, 安全性能較低。
②security=user:Samba服務器默認的安全等級, 每一個共享目錄只能被一定的用戶訪問, 並由Samba服務器負責檢查賬號和密碼的正確性。
③security=server:服務器安全級別,依靠其他Windows NT/2000或Samba服務器來驗證用戶的賬號和密碼,是一種代理驗證。此種安全模式下,系統管理員可以把所有的Windows用戶和口令集中到一個NT系統上,使用Windows NT進行Samba認證, 遠程服務器可以自動認證全部用戶和口令,如果認證失敗,Samba將使用用戶級安全模式作為替代的方式。
④security=domain:域安全級別,使用主域控制器(PDC)來完成認證。