ubuntu下用samba實現windows與linux文件共享

首先要安裝samba


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


1.windows 訪問 ubuntu
下面我們來共享群組可讀寫文件夾,假設你要共享的文件夾為: /home/ray/share
首先創建這個文件夾

代碼:
mkdir /home/ray/share
chmod 777 /home/ray/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

將下列幾行新增到文件的最后面,假設允許訪問的用戶為:newsfan。而文件夾的共享名為 Share

代碼:
[Share]
comment = Shared Folder with username and password
path = /home/ray/share
public = yes
writable = yes
valid users = newsfan
create mask = 0700
directory mask = 0700
force user = nobody
force group = nogroup
available = yes
browseable = yes

然后順便把這里改一下,找到[global]把 workgroup = MSHOME 改成

代碼:
workgroup = WORKGROUP
display charset = UTF-8
unix charset = UTF-8
dos charset = cp936


后面的三行是為了防止出現中文目錄亂碼的情況。其中根據你的local,UTF-8 有可能需要改成 cp936。自己看著辦吧。
現在要添加newsfan這個網絡訪問帳戶。如果系統中當前沒有這個帳戶,那么

代碼:
sudo useradd newsfan


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

代碼:
sudo smbpasswd -a newsfan
sudo gedit /etc/samba/smbusers

在新建立的文件內加入下面這一行并保存

代碼:
newsfan = “network username”

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

代碼:
sudo smbpasswd -a newsfan

刪除網絡使用者的帳號的命令把上面的 -a 改成 -x

代碼:
sudo testparm
sudo /etc/init.d/samba restart

2.Ubuntu linux 系統訪問windows xp/2003/2000系統
在我的測試過程中,實現ubuntu linux系統訪問windows系統的方式有3種,我將這幾種方式說明如下:

第一種:用smb訪問
如果在ubuntu linux系統終端pingwindows主機的ip地址可以ping通,且windows計算機中有共享的文件夾,則打開位置下的網絡服務器,點擊界面 中windows網絡->workgroup,在workgroup組中就可以看到windows計算機名,雙擊會彈出輸入用戶名和密碼的對話框, 將我們上面設置smb的用戶名和密碼輸入就可以進行訪問。

第二種:用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=wangyh,password=123456 //192.168.0.1/share /mnt/wind
有是這樣在訪問的時候會出現中文亂碼的問題,這樣我們可以按下面命令來執行,可以解決這個問題
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 //192.168.0.1/share -U wangyh
password:輸入smb用戶wangyh的密碼
回車就可以用,用命令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 向服務器上傳多個文件