【轉】Ubuntu下配置samba伺服器

來源:互聯網
上載者:User

標籤:

原文網址:http://my.oschina.net/junn/blog/171388

一. samba的安裝: 

sudo apt-get insall samba      // (sudo get temp root auth) 
sudo apt-get install smbfs     //舊版本 
sudo apt-get install cifs-utils //新版本 
上面的命令將會安裝Samba和其他相關的工具。在舊版的Ubuntu中,你可能需要使用 smbfs替代 cifs-utils。 
sudo apt-get install samba-common 

二. 建立共用目錄: 

1、系統使用者home目錄下: 
mkdir /home/john/share    //如果配置的共用目錄不存在則建立 
chown -R nobody. /home/john/share    //設定共用目錄歸屬為 nobody 
sudo chmod 777 /home/john/share    //將共用目錄屬性設定為 777 
說明:john為你的ubuntu的使用者名稱;share你可以隨便起個名字做為共用資料夾 

2、普通目錄下: 
如建立/mydir/private 和 /mydir/public 目錄 ( 注意許可權問題,不然導致不能訪問) 
mkdir -p /mydir/{private,public} 
chown -R nobody.nogroup /mydir 
chmod -R 777 /mydir 

三. 建立Samba設定檔: 

1. smb.conf部分配置說明 

[global] 
server string = Samba Server Version %v 
passdb backend = tdbsam 
cups options = raw 
security = user                            //認證模式為User 
map to guest = bad user            //這個很關鍵,實現匿名無須互動輸入使用者名稱和密碼就靠它了 
guest account = guest               //匿名使用者映射為guest使用者 

[myshare] 
comment = My share 
path = /home/public                       //共用路徑 
browseable = Yes                          //可以被瀏覽,就是在近端分享中能看到共用名稱 
read only = No                               //可讀寫 
guest ok = Yes                               //允許匿名訪問,這個也需要設定,否則匿名無法訪問 
valid users = samba liuag guest    //有效使用者和組 
invalid users = liuben                     //無效使用者和組    
read list = samba                           //唯讀使用者和組(如果read only = No,唯讀使用者需要在此設定) 
write list = liuag                             //可讀寫使用者和組(如果read only = Yes,可讀寫使用者需要在此設定) 
allow hosts = 192.168.100.236     //允許訪問主機列表,支援萬用字元 
deny hosts = 192.168.100.0/24    //禁止訪問主機列表,支援萬用字元 

樣本: 
[global] 
    workgroup = WORKGROUP 
    server string = samba server on ubuntu 
    netbios name = ubuntu_smb 
    interfaces = 127.0.0.0/8 eth0 
    hosts allow = 192.168.1. 192.168.163. 192.168.153. 
    security = user 
    username map = /etc/samba/smbusers 
    encrypt passwords = true 
    passdb backend = smbpasswd 
    smb passwd file =/etc/samba/smbpasswd 
    log file = /var/log/samba/log.%m 
    max open files = 1000 
    socket options = TCP_NODELAY 

;[homes] 
;   comment = home directories 
;   browseable = no 
;   writable = yes 
;   valid users = %S 
;   create mode = 0664 

;[printers] 
;   printable = Yes 
;   browseable = No 
;   path = /var/spool/samba 

[code] 
    comment = code    //comment是對該共用的描述,可以是任一字元串。 
    path = /home/songyd/code 
    writable = yes 
    browseable = yes 
    available = yes 


2. 儲存現有的設定檔 
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak 

3.修改現設定檔 
sudo gedit /etc/samba/smb.conf 
在smb.conf最後添加 

樣本一: 
[share] 
path = /home/john/share 
available = yes 
browseable = yes 
public = yes 
writable = yes 
valid users = myname 
create mask = 0700 
directory mask =0700 
force user =nobody 
force group = nogroup 

說明:valid users = myname 這個myname是自己起的,後面在添加使用者名稱時就是添加的這個; 
另外這個 [share] 名字也是可以隨便起的,這個是你在windows下訪問時顯示的名字; 
在windows下 \\162.168.160.11\share就可以訪問linux下/home/god/ code目錄下的內容了; 
其中162.168.160.11是你linux的IP地址,用ifconfig就可以查看到。 

樣本二: 
[www]   
path = /home/test/www 
available = yes   
browseable = yes   
public = yes   //允許匿名使用者登入 
writable = yes 

說明:public 指明該共用資源是否能給遊客帳號訪問,這個開關有時候也叫guest ok,所以有的設定檔中出現guest ok = yes其實和public = yes是一樣的。 

然後順便把這裡改一下,找到[global]把 workgroup = MSHOME改成 :(注意,這裡的WORKGROUP是共用中的工作群組名稱) 代碼:(如果沒有也可加上去) 

workgroup = WORKGROUP 
display charset = UTF-8 
unix charset = UTF-8 
dos charset = cp936 

後面的三行是為了防止出現中文目錄亂碼的情況。 

四. 建立samba帳戶  

現在要添加 myname這個網路訪問帳戶。如果系統中當前沒有這個帳戶(也可以用系統中己存在的賬戶如root,god),那麼代碼: 

sudo useradd myname 

上面只是增加了 myname這個系統使用者,卻沒有給使用者賦予本機登入密碼。所以這個使用者將只能從遠端存取,不能從本機登入。而且samba的登入密碼可以和本機登入密碼不一樣。這個你可以在重啟機器時看到這個你添加的使用者,但是你卻用它登陸不了系統,因為沒有賦予本機登入密碼。 

sudo touch /etc/samba/smbpasswd  
sudo smbpasswd -a myname 

(如果你直接用系統中的帳號,這裡myname就是你系統中的賬戶即可)然後會要求你輸入samba帳戶的密碼,這個密碼不是開機登入時候用的,是你要訪問WIN共用檔案或者WIN共用檔案訪問你的時候要填的密碼。 

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

smbpasswd 命令的用法 

smbpasswd -a 增加使用者(要增加的使用者必須以是系統使用者)   
smbpasswd -d 凍結使用者,就是這個使用者不能在登入了   
smbpasswd -e 恢複使用者,解凍使用者,讓凍結的使用者可以在使用   
smbpasswd -n 把使用者的密碼設定成空.   
             要在global中寫入 null passwords -true   
smbpasswd -x  刪除使用者  


五. 使用者帳號映射  

samba的使用者帳號資訊是儲存在smbpasswd檔案中滴,而且可以訪問samba伺服器的帳號也必須對應一個同名的系統帳號。基於這 一點,所以,對於一些hacker來說,只要知道samba伺服器滴samba帳號,就等於是知道了Linux系統帳號,只要crack其samba帳號密碼加以利用就可以攻擊samba伺服器。所以我們要使用使用者帳號映射這個功能來解決這個問題。 

使用者帳號映射這個功能需要建立一個帳號映射關係表,裡面記錄了samba帳號和虛擬帳號的對應關係,用戶端訪問samba伺服器時就使用虛擬來登入。 

1)編輯主設定檔vi /etc/samba/smb.conf 
在global下添加一列欄位username map = /etc/samba/smbusers開啟使用者帳號映射功能。 

2)編輯 vi /etc/samba/smbusers 
smbusers檔案儲存帳號映射關係,其有固定滴格式: 
samba帳號 = 虛擬帳號(映射帳號) 

myname = networkusername 

帳號myname就是我們上面建立的samba帳號(同時也是Linux系統帳號),networkusername就是映射的帳號名(虛擬帳號),帳號 myname在我們訪問共用目錄時只要輸入networkusername就可以成功訪問了,但是實際上訪問samba伺服器的還是我們的myname帳號,這樣一來就解決了安全問題。 

3)重啟samba服務:service smbd restart 

4)驗證效果 
輸入我們定義的映射帳號networkusername,注意我們沒有輸入帳號myname,映射帳號networkusername的密碼和myname帳號一樣,現在就可以通過映射帳號瀏覽共用目錄了。 

六. 重啟samba伺服器  

sudo testparm   驗證一下配置參數有沒有問題,如果有問題在回去修改 

sudo /etc/init.d/samba restart  (不知為什麼,我的這個目錄下就是沒有這個,用這個命令總是報錯)  

service samba restart 
service smbd restart 

七. 測試: 

smbclient -L //localhost/share 或者  
smbclient -L \\127.0.0.1 -U myname //這時輸入的密碼就是你剛才設定的samba密碼 

八. 使用  

可以到windows下輸入ip使用了,在檔案夾處輸入 "\\" + "Ubuntu機器的ip或主機名稱" + "\\" + "share"; 

我的即為:\\162.168.160.11\share(share就是剛才smb.conf中的[share])第一次進入時要輸入使用者名稱和密碼,這個就是你在第四步中設定的使用者名稱和密碼。

九. samba的卸載:

dpkg -l |grep samba 
dpkg -l |grep smbfs 
dpkg -l |grep smb 

apt-get remove samba\smbfs\smb

 

ubuntu12.04samba伺服器配置


系統平台:VMware Workstation9.0 + ubuntu12.04

首先要解決windows和linux網路連接問題:
在VMware Workstation9.0 “設定” 選項中,設定"網路"
網路連接1   選中“啟用網路連接” 方式:NAT
網路連接2 選中“啟用網路連接” 方式:Bridged Adapter

啟動ubuntu,查看IP地址: #ifconfig eth0   
註:你的LINUX裡面可能有兩塊網卡eth0和eth1,分別看一下他們的IP地址,有一個是和你的WINDOWS本地串連IP地址在一個網段的(以後就使用這個IP地址登入samba,也是掛載NFS伺服器的IP)

再說一下關於IP地址的配置(以我自己的電腦舉例):
 我是用ADSL拔號上網,windows本地串連的IP地址是自動擷取的,IP為:192.168.1.45
 查一下linux下eth0的IP為:10.0.2.15;eth1的IP為192.168.1.42
 那eth1即為linux的本地串連的IP地址,也就是samba伺服器的IP地址

關閉LINUX防火牆命令: #ufw disable

註:ufw是linux下的防火牆操作命令,相關的操作可以查看命令協助

然後就在windows下ping一下linux的IP,如果能ping通,就可以繼續下面的內容,如果ping不通就再找找原因

註:ubuntu 12.04已經安裝了最新版本的samba伺服器,無需安裝。如果使用12.04以前的版本,最好是按下邊的方法升級一下samba,12.04版本無需下列操作

卸載samba,smbclient,samba-common 
$sudo apt-get remove samba-common
$sudo apt-get remove smbclient
$sudo apt-get remove samba

安裝Ubuntu samba伺服器:
sudo apt-get install samba
sudo apt-get install smbfs

開始配置:

samba設定檔: /etc/samba/smb.conf
可以修改設定檔來設定samba共用和使用者
如果不習慣使用設定檔,也可以使用圖形介面

安裝Ubuntu samba圖形管理介面
#sudo apt-get install system-config-samba

啟動samba圖形管理介面
#sudo system-config-samba

也可以選擇菜單: system->Administration->Samba

配置方法和RedHat9中一樣
選擇要共用的目錄 設定讀寫權限 設定存取權限 添加samba使用者

配置完成後要重啟samba
#sudo /etc/init.d/smbd restart

【轉】Ubuntu下配置samba伺服器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.