嵌入式環境搭建之samba 本文主要介紹了samba存在的前因後果,已經對samba進行簡要介紹;並介紹了samba在ubuntu下安裝,samba伺服器端配置以及如何在window7共用samba伺服器。最後,總結了samba的使情境。一、 Samba的前世今生在早期網路世界中,文檔和資料在不同主機之間的傳輸大多是使用 FTP 來進行傳送。不過,使用FTP 傳輸文檔和資料卻存在一個缺陷,那就是無法直接修改Server上面的文檔和資料!即當你要修改伺服器上某個檔案時,必須想將該檔案從伺服器上下載到用戶端後才能修改,修改後再將其上傳到伺服器端。從該過程中,可以看出該檔案在Server和Client端都會存在。如果有時你修改了一個文檔,但是你卻忘記將該文檔上傳回到主機,那麼將會造成用戶端和服務端文檔版本不對。所以,IT界的前輩們就提出可不可以在 Client 端的機器上面直接取用Server 上面的文檔,如果可以在 Client 端直接進行 Server 端檔案的存取,那麼在Client 端就不需要存在該檔案資料,也就是說,只要有 Server 上面的檔案資料存在就可以!那麼有沒有這樣的 File System ?--------》NetworkFile System, NFS 就是這樣的文檔系統之一!只要在 Client 端將 Server所提供分享的目錄掛載進來,那麼在 Client 的機器上面就可以直接取用 Server上的檔案資料,而且,該資料就像 Client 端上面的partition 一般!而除了可以讓 Unix Like 的機器互相分享檔案的NFS 伺服器之外,在微軟( Microsoft ) 上面也有類似的文案系統,那就是 CommonInternet File System, CIFS 這個咚咚啦!CIFS 最簡單用法就是目前常見的『網路上鄰居』。Windows 系統的電腦可以透過案頭上『近端分享』來分享別人所提供的檔案資料。不過,NFS僅能讓 Unix 機器溝通, CIFS 只能讓 Windows 機器溝通。那麼有沒有讓Windows 與 Unix-Like 這兩個不同的平台相互分享檔案資料的檔案系統?二、 samba簡介Samba就是在上面所提到的需求下產生了。Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟體,由伺服器及用戶端程式構成。它可以實現windows和Unix-Like兩個平台之間互相分享文檔和資料。三、 samba的安裝在Ubuntu12.04之後,系統會內建samba系統。如果在以前的Ubuntu系統中可以通過下面的命令進行安裝。sudo apt-get install samba samba-common四.配置smb.conf檔案Samba的設定檔一般就放在/etc/samba目錄中,主設定檔名為smb.conf,檔案中記錄著大量的規則和共用資訊,所以是samba服務非常重要的核心設定檔,完成samba伺服器搭建的大部分主要配置都在該檔案中進行。Samba伺服器的工作原理是:用戶端向Samba伺服器發起請求,請求訪問共用目錄,Samba伺服器接收請求,查詢smb.conf檔案,查看共用目錄是否存在,以及來訪者的存取權限,如果來訪者具有相應的許可權,則允許用戶端訪問,最後將訪問過程中系統的資訊以及採集的使用者訪問行為資訊存放在記錄檔中。4.1 samba設定檔中各欄位的含義:(1)security = user說明:設定使用者訪問Samba Server的驗證方式,一共有四種驗證方式。1> share:使用者訪問Samba Server不需要提供使用者名稱和口令, 安全效能較低。2.>user:Samba Server共用目錄只能被授權的使用者訪問,由Samba Server負責檢查帳號和密碼的正確性。帳號和密碼要在本Samba Server中建立。3.> server:依靠其他Windows NT/2000或Samba Server來驗證使用者的帳號和密碼,是一種代理驗證。此種安全模式下,系統管理員可以把所有的Windows使用者和口令集中到一個NT系統上,使用Windows NT進行Samba認證, 遠程伺服器可以自動認證全部使用者和口令,如果認證失敗,Samba將使用使用者層次安全性模式作為替代的方式。(2)comment = 任一字元串說明:針對共用資源所做的解說文字,預設為空白字串。(3)path = 共用目錄路徑說明:path用來指定共用目錄的路徑。可以用%u、%m這樣的宏來代替路徑裡的unix使用者和客戶機的Netbios名,用宏表示主要用於[homes]共用域。例如:如果我們不打算用home段做為客戶的共用,而是在/home/share/下為每個Linux使用者以他的使用者名稱建個目錄,作為他的共用目錄,這樣path就可以寫成:path = /home/share/%u; 。使用者在串連到這共用時具體的路徑會被他的使用者名稱代替,要注意這個使用者名稱路徑一定要存在,否則,客戶機在訪問時會找不到網路路徑。同樣,如果我們不是以使用者來劃分目錄,而是以客戶機來劃分目錄,為網路上每台可以訪問samba的機器都各自建個以它的netbios名的路徑,作為不同機器的共用資源,就可以這樣寫:path = /home/share/%m 。(3)browseable = yes/no說明:browseable用來指定該共用是否可以瀏覽。(4)writable = yes/no說明:writable用來指定該共用路徑是否可寫。(5)read only:用於設定共用的資源是否為唯讀。read only =yes:允許唯讀read only = no; 可讀寫(6)available = yes/no說明:available用來指定該共用資源是否可用。(7)admin users = 該共用的管理者說明:admin users用來指定該共用的管理員(對該共用具有完全控制許可權)。在samba 3.0中,如果使用者驗證方式設定成“security=share”時,此項無效。例如:admin users =bobyuan,jane(多個使用者中間用逗號隔開)。(8)valid users = 允許訪問該共用的使用者說明:valid users用來指定允許訪問該共用資源的使用者。例如:valid users = bobyuan,@bob,@tech(多個使用者或者組中間用逗號隔開,如果要加入一個組就用“@+組名”表示。)(9)invalid users = 禁止訪問該共用的使用者說明:invalid users用來指定不允許訪問該共用資源的使用者。例如:invalid users = root,@bob(多個使用者或者組中間用逗號隔開。)(10)write list = 允許寫入該共用的使用者說明:write list用來指定可以在該共用下寫入檔案的使用者。例如:write list = bobyuan,@bob(11)public = yes/no說明:public用來指定該共用是否允許guest賬戶訪問。(12)guest ok = yes/no說明:是否允許使用者不使用帳號和密碼訪問此資源。guest ok=yes:允許使用者不使用帳號和密碼訪問此資源guest ok=no:不允許使用者不使用帳號和密碼訪問此資源(13)host allow:設定串連主機的地址:hosts allow = 192.168.0.server.abc.com:即允許來自192.168.0.或server.abc.com(13)host deny:設定禁止串連的主機地址hosts deny = 192.168.2:即不允許來自192.168.2主機訪問此samba伺服器的資源4.2執行個體:如果要實現將ubuntu主機上的所有檔案和windows使用者進行共用。可以使用以下的配置.[hostname] path=/home/hostname valid users=hostname public=no writable=yes printable=no create mask=0765 security= userNote:將上面的配置資訊複製到/etc/samba/smb.conf檔案中的最後,在將上面標紅的部分改成自己對應的主機名稱即可。4.3設定samba密碼當在windows映射ubuntu主機時,要用到該密碼,該密碼與ubuntu登入密碼可以不一樣。命令格式為:smbpasswd–a hostnameNote:hostname為自己ubuntu的主機名稱。4.4.restart samba設定完之後,重新啟動samba服務。在ubuntu下使用命令:service smbd restart 重新啟動samba服務。四.使用Windows共用ubuntu1.開啟我的電腦,右擊映射網路磁碟機,輸入ubuntu主機的ip地址和主機名稱(\\server\hostname),例如\\192.168.1.99\jibo。 2.然後,點擊瀏覽後,輸入剛才設定的samba密碼即可進行網路映射。Ok, youcan enjoy it!!!總結:(1)Why(為什麼要出現samba)為了實現unix like機器和windows機器之間檔案的共用。(2)how(Samba的使用情境)1>Windows與Linux的網際網路共用協議,使用於虛擬機器和本機以及遠程Server與原生共用2>對於同一個共用檔案,針對不同的使用者可設定不同的許可權,可設定密碼保護3>把linux機器當作伺服器,多台windows客戶機通過samba來共用linux機器之間的資料和檔案,適合團隊開發4>即時同步