1. 程式人生 > >samba,讓ubuntu與windows實現檔案共享

samba,讓ubuntu與windows實現檔案共享

1.安裝samba


sudo apt-get install samba


完成安裝後系統就已經集成了共享功能,而且,samba會自動啟動。


2.找到你需要共享的目錄,點選右鍵,選擇共享,這時候會有提示,一般選擇任何人都允許訪問就可以了(訪問這個的一般都是自己人,沒人訪問我們也不需要設定共享嘛),至於讀寫就根據自己的實際情況咯。


如何從windows中讀取內容呢?開啟我的電腦之類的檔案目錄(瀏覽器不行),輸入\\你想訪問的共享者IP就可以訪問ubuntu共享的內容了。你不知道IP,ubuntu下終端輸入ifconfig就可以查到的。呃,這就實現了windows讀取ubuntu共享內容了。


那麼ubuntu如何讀取windows的共享內容呢?


在位置中啟動連線到伺服器,在服務型別中選擇“windows共享”,在伺服器中輸入windows計算機的ip地址或計算機名,點選連線,這樣在系統桌面中就會顯示一個連線到windows 計算機的檔案卷。 
我們就可以直接訪問檔案了。


其實samba的還有很多設定,可以讓samba更加安全,奶牛從wiki上找到了如下資料,供有更高要求的朋友參考。



Samba 

出自Ubuntu中文



網路上的芳鄰的中文目錄的顯示亂碼的處理方法: * 確認你的local,如果為:zh_CN.UTF-8 則:


在 /etc/samba/smb.conf 中的 [global] 段加上:



display charset = UTF-8 

unix charset = UTF-8 
dos charset = cp936 



確認你的local,如果為:zh_CN.GB2312zh_CN.GBK 則: 

在 /etc/samba/smb.conf 中的 [global] 段加上:



display charset = cp936 
unix charset = cp936 
dos charset = cp936 

設定完畢後,需要登出一次。才可以看到中文的目錄。


==============================================


 ubuntu下用samba實現windows與linux檔案共享 

首先要安裝samba(一般的源裡面都有的,不用新加源)


sudo apt-get install samba; sudo apt-get install smbfs


1.windows 訪問 ubuntu


第一部建立共享目錄: 比如要建立/home/使用者名稱/share首先建立這個資料夾 (這個使用者名稱就是你的使用者名稱,為了方便易懂我才這樣寫的,到時記得自己改啊)


程式碼:


mkdir /home/使用者名稱/share (新建share資料夾)


chmod 777 /home/使用者名稱/share (設定該資料夾的許可權使其讓所有使用者可讀可寫可執行)


備份並編輯smb.conf允許網路使用者訪問 (養成隨時備份的好習慣,在關鍵的時候你會發現當初的備份是多麼的明智!) 程式碼:


sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup


sudo gedit /etc/samba/smb.conf


搜尋這一行文字 程式碼:


security = user 

用下面這幾行取代


程式碼:


security = user


username map = /etc/samba/smbusers


將下列幾行新增到檔案的最後面,假設允許訪問的使用者為:new。而資料夾的共享名為 Share #這裡之所以這麼寫就是因為後面我們要建立一個smb使用者new,並且讓XP使用者通過這個new來和我們進行資料交流。當然你可以寫為自己喜歡的名字 只不過前後要一致就可以了


程式碼:


[Share]


comment = Shared Folder with username and password


path = /home/使用者名稱/share


public = yes


writable = yes


valid users = new


create mask = 0700


directory mask = 0700


force user = nobody


force group = nogroup


available = yes


browseable = yes

如果windows對ubuntu上對映的共享檔案無寫許可權,可以將force user 和force group 改為new

然後順便把這裡改一下,找到[global]把 workgroup = MSHOME 改成 :(注意,這裡的WORKGROUP是共享中的工作組名稱) 程式碼:


workgroup = WORKGROUP


display charset = UTF-8


unix charset = UTF-8


dos charset = cp936



後面的三行是為了防止出現中文目錄亂碼的情況。 現在要新增new這個網路訪問帳戶。如果系統中當前沒有這個帳戶,那麼


程式碼:


sudo useradd new



要注意,上面只是增加了new這個使用者,卻沒有給使用者賦予本機登入密碼。所以這個使用者將只能從遠端訪問,不能從本機登入。而且samba的登入密碼可以和 本機登入密碼不一樣。現在要新增網路使用者的帳號:


程式碼:


sudo smbpasswd -a new (設定你的new密碼,這個密碼不是開機登入時候用的,是你要訪問WIN共享檔案或者WIN共享檔案訪問你的時候要填的密碼) sudo gedit /etc/samba/smbusers



在新建立的檔案內加入下面這一行並儲存


程式碼:


new = “network username”


如果將來需要更改new的網路訪問密碼,也用這個命令更改


程式碼:


sudo smbpasswd -a new


刪除網路使用者的帳號的命令把上面的 -a 改成 -x sudo smbpasswd -x new


測試並重啟samba


程式碼:


sudo testparm


sudo /etc/init.d/samba restart



WIN訪問ubuntu後記 
有人說我嚴格的按照了上述操作走的,在自己UBUNTU的系統下右擊一個資料夾,點共享,然後建立共享檔案,結果在WIN XP下的區域網可以看到那個共享的資料夾,但是就是點不開! 為什麼? 
原因就在於許可權問題,假如你共享了 /media/MEDIA/桌布 這個資料夾,你緊接著給這個資料夾可讀可寫可執行的許可權 

簡單的,這樣使用。 ☎ type fuse-smb fuse-smb 已被別名為“smbmount //192.168.100.53/共享目錄/ ~/fuse-mnt/ -o username=smb,password=ice,iocharset=utf8”



2.Ubuntu linux 系統訪問windows xp/2003/2000系統


下面有原作者提供的四種方法。。。但是我只穩定的成功了第四種,掛載的那種時靈時不靈的,並且大多數人都只能成功第四種,不知道為什麼。。。


第一種:用smb訪問 直接點-位置-網路-裡面有個WINDOWS網路,點進去找你要找的電腦和檔案,屆時可能要帳號和密碼,注意填的是那個被訪問的計算機的帳號,不是先前建 的那個new 這個方法最方便了! 但是成功率不高


第二種:用ubuntu 系統自帶的連線到伺服器功能訪問 在位置中啟動連線到伺服器,在服務型別中選擇“windows共享”,在伺服器中輸入windows計算機的ip地址或計算機名,點選連線,這樣在系統桌 面中就會顯示一個連線到windows 計算機的檔案卷。 我們可以像訪問ubuntu系統中的磁碟一樣來訪問它,同樣在訪問的時候要輸入smb的使用者名稱和密碼。 往往第一個方法不能成功的 這個也別想成功


第三種:用mount掛載windows的共享目錄到本地磁碟 首先要在ubuntu系統中建立一個掛載點,在這裡我們建立的掛在點為 /mnt/wind 同樣在保證網路連線正常,且windows中有共享目錄的前提下,進行一下操作 以windows的ip為192.168.0.1,共享資料夾為share為例


命令如下:


mount -t smbfs –o username=new,password=123456 //192.168.0.1/share /mnt/wind


¥我感覺這個的成功率要比先前的那兩個方法高,一但掛載成功就行了


本人還衍生了一個方法貌似在我電腦上的可行性比較高,那就是知道共享的目錄的絕對地址後直接輸入絕對地址


smb://呂秀才/電影3/


呂秀才是他使用者名稱(不能用IP,IP沒用的)電影3是他的一個共享資料夾~


直接用smb://使用者名稱/共享檔名 這樣就可以,在訪問的時候會問你那個XP的密碼這時填上就可以了 還會驗證你的smb密碼 這個就用上面你設定那個就可以了 反正我成功了¥


有時這樣在訪問的時候會出現中文亂碼的問題,這樣我們可以按下面命令來執行,可以解決這個問題


mount -t smbfs -o iocharset=uft8,codepage=cp936,clmask=777,fmask=777,userneme=wangyh,password=123456 //192.168.0.1/share /mnt/wind


註解:usename和password都為smb的使用者和密碼,如果要詳細瞭解mount命令,使用man mount在終端檢視詳細用法 提示:要訪問windows中有特殊密碼的資料夾,可以在samba中新建一個與windows登入相同名相同密碼的使用者,然後mount即可,例:


sudo useradd administrator //不要讓其有登入ubuntu的許可權


sudo smbpasswd -a administrator


然後提示輸入密碼:輸入windows訪問的密碼即可



第四種:使用smbclient 命令 命令如下:


smbclient //對方IP/那個共享資料夾 -U 你的smb帳號,就是那個new


例如:smbclient //218.196.119.86/電影 -u new password:輸入smb使用者new的密碼


回車就可以用,用命令get下載檔案,用put上傳檔案。


註解:


smbclient介紹:


命令 說明


?或help [command] 提供關於幫助或某個命令的幫助


![shell command] 執行所用的SHELL命令,或讓使用者進入 SHELL提示符


cd [目錄] 切換到伺服器端的指定目錄,如未指定,則 smbclient 返回當前本地目錄


lcd [目錄] 切換到客戶端指定的目錄;


dir 或ls 列出當前目錄下的檔案;


exit 或quit 退出smbclient


get file1 file2 從伺服器上下載file1,並以檔名file2存在本地機上;


如果不想改名,可以把file2省略


mget file1 file2 file3 filen 從伺服器上下載多個檔案;


md或mkdir 目錄 在伺服器上建立目錄


rd或rmdir 目錄 刪除伺服器上的目錄


put file1 [file2] 向伺服器上傳一個檔案file1,傳到伺服器上改名為file2;


mput file1 file2 filen 向伺服器上傳多個檔案