Samba是一個能讓Linux系統應用Microsoft網絡通訊協議的軟件,而SMB是Server Message Block的縮寫,即為服務器消息塊 ,SMB主要是作為Microsoft的網絡通訊協議,後來Samba將SMB通信協議應用到了Linux系統上,就形成了現在的Samba軟件。後來微軟又把 SMB 改名為 CIFS(Common Internet File System),即公共 Internet 文件系統,並且加入了許多新的功能,這樣以來,使得Samba具有了更強大的功能。
Samba最大的功能就是可以用於Linux與windows系統直接的文件共享和打印共享,Samba既可以用於windows與Linux之間的文件共享,也可以用於Linux與Linux之間的資源共享,由於NFS(網絡文件系統)可以很好的完成Linux與Linux之間的數據共享,因而Samba較多的用在了Linux與windows之間的數據共享上面。
SMB是基於客戶機/服務器型的協議,因而,一台Samba服務器既可以充當文件共享服務器,也可以充當一個Samba的客戶端,例如,一台在Linux下已經架設好的Samba服務器,windows客戶端就可以通過SMB協議共享Samba服務器上的資源文件,同時,Samba服務器也可以訪問網絡中其它windows系統或者Linux系統共享出來的文件。
Samba在windows下使用的是NetBIOS協議,如果你要使用Linux下共享出來的文件,請確認你的windows系統下是否安裝了NetBIOS協議。
Samba的安裝與配置
我們的系統環境是:
操作系統:Red Hat Enterprise Linux Server release 5.1
Samba服務器IP地址:192.168.60.231
Samba版本:samba-3.0.23c-2
1.安裝samba
幾乎所有的Linux發行版本中都默認自帶了samba軟件包,登陸系統,檢查是否安裝了Samba軟件,執行如下操作:
[root@localhost ~]# rpm -q samba
samba-3.0.23c-2
如果有顯示,表示系統已經安裝了Samba,如果沒有任何顯示,請到系統光盤找到對應的Samba軟件包,然後進行安裝。
Samba的安裝很簡單,安裝過程如下:
[root@webserver ~]# rpm -ivh samba-3.0.23c-2.i386.rpm
warning: samba-3.0.23c-2.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing... ########################################### [100%]
1:samba ########################################### [100%]
Samba服務器安裝完畢,會生成配置文件目錄/etc/samba和其它一些samba可執行命令工具,/etc/samba/smb.conf是samba的核心配置文件,/etc/init.d/smb是samba的啟動/關閉文件。
2.Samba服務的組成與使用
組成Samba運行的有兩個服務,一個是SMB,另一個是NMB;SMB是Samba 的核心啟動服務,只有SMB服務啟動,才能實現文件的共享,而NMB服務是負責解析用的,類似與DNS實現的功能,NMB可以把Linux系統共享的工作組名稱與其IP對應起來,如果NMB服務沒有啟動,就只能通過IP來訪問共享文件。
例如,某台Samba服務器的IP地址為192.168.60.231,對應的工作組名稱為ixdba,那麼在Windows的IE浏覽器輸入下面兩條指令都可以訪問共享文件。其實這就是Windows下查看Linux Samba服務器共享文件的方法。
\\192.168.60.231\共享目錄名稱
\\ixdba\共享目錄名稱
可以通過/etc/init.d/smb start/stop/restart來啟動、關閉、重啟Samba服務,啟動SMB服務如下所示:
[root@localhost Linuxdata]# /etc/init.d/smb start
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]
從啟動的輸出中,可以看出,SMB的啟動包含了SMB和NMB兩個服務。
那麼在Linux作為客戶端時,查看其它Linux Samba服務器共享的文件時,應該如何操作呢,這就要用到smbclient這個工具。系統默認自帶了這個命令。Smbclient常見用法介紹如下。
(1)查看Samba服務器的共享資料
Smbclient –L //Samba服務器的ip地址 -U Samba用戶名
“-L”即為list的含義,“-U”是user的意思,如果Samba服務器是無密碼訪問的話,可以省略“-U Samba用戶名”。
例如:samba需要密碼登陸時,查看共享方法如下:
[root@web ~]# smbclient -L //192.168.60.231/Linuxdata –U admin
Password: 在這裡輸入admin的密碼。
Samba無密碼訪問時,執行如下命令:
[root@web ~]# smbclient -L //192.168.60.231/Linuxdata
Password: 直接回車即可。
(2)登陸Samba服務器
如果需要在Linux客戶端登陸Samba服務器,用法如下:
Smbclient //Samba服務器的ip地址 -U Samba用戶名
請看下面執行的操作:
[root@web samba]# smbclient //192.168.60.231/Linuxdata
Password:
Domain=[IXDBA.NET] OS=[Unix] Server=[Samba 3.0.23c-2]
Server not using user level security and no password supplied.
smb: \> ls
. D 0 Thu Feb 19 23:49:33 2009
.. D 0 Thu Feb 19 19:05:24 2009
install.log 36563 Thu Feb 19 23:49:22 2009
install.log.syslog 4295 Thu Feb 19 23:49:22 2009
58113 blocks of size 262144. 44294 blocks available
smb: \> ? #在這裡輸入?即可查看在smb命令行可用的所有命令。
? altname archive blocksize cancel
case_sensitive cd chmod chown close
del dir du exit get
getfacl hardlink help history lcd
link lock lowercase ls mask
md mget mkdir more mput
newer open posix posix_open posix_mkdir
posix_rmdir posix_unlink print prompt put
pwd q queue quit rd
recurse reget rename reput rm
rmdir showacls setmode stat symlink
tar tarmode translate unlock volume
vuid wdel logon listconnect showconnect
!
smb: \>
看到了嗎,是不是與登陸FTP服務器很類似,登陸Samba服務器後,就可以進行文件的上傳與下載,如果有足夠的權限,還可以進行修改文件操作。
此外,Samba服務器共享出來的文件還可以在Linux客戶端進行掛載,這就要用到mount命令,如下所示: