轉自:http://wiki.ubuntu.org.cn/Samba
Samba
Samba是Ubuntu和Windows進行網絡共享的工具,比如分享打印機,互相之間傳輸資料文件。
 
            目錄[隱藏] |  
          
[編輯]安裝Samba
安裝samba
sudo apt-get install samba
[編輯]Kubuntu
安裝系統設置的共享模塊
sudo apt-get install kdenetwork-filesharing
[編輯]配置
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
然后順便把這里改一下,找到[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”
[編輯]Ubuntu訪問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 向服務器上傳多個文件
 ¥這個方法不出意外都成功,而且這個成功再試一試前兩個方法沒准也就成功了,總之我感覺這個共享訪問時靈時不靈的,希望以后能改善~
[編輯]排錯
[編輯]亂碼
網上鄰居的中文目錄的顯示亂碼的處理方法: * 確認你的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
設置完畢后,需要注銷一次。才可以看到中文的目錄。
