1. 程式人生 > >samba伺服器安裝和配置

samba伺服器安裝和配置

作為後臺開發人員,在程式碼開發過程中,我們開發流程一般是本地開發->同步到伺服器編譯->svn提交。如何在團隊開發中高效處理這些步驟是個很基本的問題。通常我們的本地環境大多是Windows,通過ssh客戶端遠端連線到伺服器,一般由於後臺程式碼的龐大,我們的都會有自己的編譯環境,如何在開發過程中及時的將程式碼編譯,更新到版本庫有很多種方法,例如有sshclient,securecrt都可以支援ftp協議進行檔案傳輸,還有rsync for windows。但這種更新檔案的方法第一需要手動進行,第二是全量更新,最後有時候會忘記更改了那些檔案,只能把不確定的全部更新了。

為了能夠在Windows和unix之間進行檔案的共享,支援檔案的直接修改,而不是通過拷貝檔案來進行更新,samba 誕生了。我們都知道unix之間可以NFS伺服器來實現檔案的共享,Windows之間通過CIFS,即網路上的芳鄰來進行共享,samba的誕生就是為了能夠使Windows能夠訪問Unix的資源,包括檔案,印表機等。

1.samba安裝和啟動

samba的原始碼安裝採用最新版本samba-4.1.14,官網下載。安裝過程如下:

$ sudo mkdir /usr/local/samba-4.1.14 
$ ./configure --prefix=/usr/local/samba-4.1.14 
...
Checking for program xsltproc                                                     : not found 
Checking for program python                                                       : /usr/bin/python 
Checking for program python                                                       : /usr/bin/python 
Checking for program python                                                       : /usr/bin/python 
Checking for Python version >= 2.5.0                                              : ok 2.7.6 
Checking for library python2.7                                                    : not found 
Checking for library python2.7                                                    : yes 
Checking for program python2.7-config                                             : not found 
Checking for program python-config-2.7                                            : not found 
Checking for custom code                                                          : Could not find the python development headers 
/home/anonymalias/Downloads/samba-4.1.14/wscript:100: error: the configuration failed (see '/home/anonymalias/Downloads/samba-4.1.14/bin/config.log')

上面錯誤的原因是samba必須依賴python,執行

$ sudo apt-get install python-dev

後面就是make && sudo make install,安裝ok後,安裝目錄結構如下:

/usr/local/samba-4.1.14$ ls
bin  etc  include  lib  private  sbin  share  va
  • 將原始碼檔案下預設的conf檔案拷貝到安裝目錄下的etc目錄中
/usr/local/samba-4.1.14$ cp /home/anonymalias/Downloads/samba-4.1.14/examples/smb.conf.default  etc/smb.conf
  • 修改smb.conf中配置

global段新增如下欄位

[global]
   ...
   netbios name = ubuntu

共享資源欄位採用預設配置

[homes]
   comment = Home Directories
   browseable = no
   writable = yes

# NOTE: If you have a BSD-style print system there is no need to 
# specifically define each individual printer
[printers]
   comment = All Printers
   path = /usr/spool/samba
   browseable = no
# Set public = yes to allow user 'guest account' to print
   guest ok = no
   writable = no
   printable = yes
  • 新增使用者名稱為ubuntu的賬戶,
/usr/local/samba-4.1.14$ sudo bin/smbpasswd -a ubuntu
New SMB password:
Retype new SMB password:

samba伺服器的使用者是依賴於linux的使用者,只能新增linux中已存在的使用者,否則會出現如下錯誤:

/usr/local/samba-4.1.14$ sudo bin/smbpasswd -a user1
New SMB password:
Retype new SMB password:
Failed to add entry for user user1.
  • 啟動samba 服務
/usr/local/samba-4.1.14$ sudo sbin/nmbd
/usr/local/samba-4.1.14$ sudo sbin/smbd

在windwos檔案管理器或直接win+R,輸入server ip,可以看到如下介面:


2.smb.conf配置引數

下面解釋一下conf中比較重要的引數的含義。smb.conf配置包含兩部分:全域性配置和共享資源配置。全域性配置包括:工作組、主機的 NetBIOS 名稱、字元編碼的顯示、登入檔案的設定、 是否使用密碼以及使用密碼驗證的機制等等。共享資源配置主要是對各個共享資源的許可權進行限定。

引數配置中可以使用的特殊字元

%m:代表 Client 端的 NetBIOS 主機名喔!,Windows的主機名

%M:代表 Client 端的 Internet 主機名喔!就是 HOSTNAME

%L:代表 SAMBA 主機的 NetBIOS 主機名。

%H:代表使用者的家目錄。

%U:代表目前登入的使用者的使用者名稱

%g:代表登入的使用者的組名。

%h:代表目前這部 SAMBA 主機的 HOSTNAME 喔!注意是 hostname 不是NetBIOS name 喔!

%I :代表 Client 的 IP 咯。

%T:代表目前的日期與時間

#======================= Global Settings =====================================  

[global]  

// samba server要加入的工作組

workgroup = mygroup  

// samba伺服器的描述

server string = Samba Server  

// netbios主機名,對於windows是其hostname,netbios name不能相同 

netbios name = ubuntu  

//伺服器可擔任主域控制器、獨立域伺服器和域成員伺服器等角色

server role = standalone server/member server

//所有samba系統主機所不能正確識別的使用者都對映成guest使用者

map to guest = bad user

//對每一個登入使用者使用不同配置檔案來覆蓋預設的配置檔案。如果檔案不存在,則該項無效。這個引數很有用,可以使得samba配置更靈活,讓一臺samba伺服器模擬多臺不同配置的伺服器

config file = /usr/local/samba/etc/smb.conf.%m

//log檔案路徑

log file = /usr/local/samba/var/log.%m  

interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 

說明:設定Samba Server監聽哪些網絡卡,可以寫網絡卡名,也可以寫該網絡卡的IP地址。

hosts allow = 127. 192.168.1. 192.168.10.1

說明:表示允許連線到Samba Server的客戶端,多個引數以空格隔開。可以用一個IP表示,也可以用一個網段表示。hosts deny hosts allow 剛好相反。

密碼資料庫格式,之前samba伺服器的使用者資訊都是以資料檔案資訊存放,為了加快速度目前密碼檔案已經轉為使用資料庫了!  

預設的資料庫格式為tdbsam ,存放在private/passwd.tdb,早期使用smbpasswd命令來管理使用者密碼,

後來使用 TDB 資料庫,因此建議使用新的 pdbedit 指令來管理使用者資料,smbpasswd仍然可以使用

   passdb backend = tdbsam  

使用以Client端的NetBIOS主機名命名的配置檔案,

;   include = /usr/local/samba/lib/smb.conf.%m  

#=============== Share Definitions ==============================  

共享資源的配置如下:

[分享資源的名稱]  

引數 = 內容

最常用的引數內容有:

//目錄的說明,只起到註釋作用

comment = 任意字串 

//共享目錄的路徑

path = linux路徑

//是否允許該目錄被所有人看到,預設是yes

browseable = yes/no

//是否可寫入

writable = yes/no

//只讀,與writable同時設定為yes時,遵循覆蓋原則

read only = yes/no

//允許/禁止登入的使用者,使用者之前用逗號分隔,組名前要加@

valid users = user1, user2, @group1

invalid users = user1, user2, @group1

//允許寫入該共享的使用者

write list = user1, user2, @group1

//是否允許guest訪問,publicguest ok valid users引數是互斥的,有valid users回覆蓋publicguest okyes選項

public = yes/no

guest ok = yes/no

下面是預設smb.conf中提供的幾個示例

這是一個很特殊的共享目錄配置,最新的samba中,該共享目錄的配置表示,每個使用者登入都會進入自己的home目錄,不需要配置valid users = %S

[homes]  

   comment = Home Directories  

   browseable = no  

   writable = yes  

#用於所有使用者共享資源的目錄  

[tmp]  

   comment = Temporary file space  

   path = /tmp  

   read only = no  

   public = yes  

#用於使用者向其他使用者共享資源的目錄,只有staff中的使用者可以修改該目錄

[public]  

   comment = Public Stuff  

   path = /home/samba  

   public = yes  

   writable = no  

   printable = no  

   write list = @staff  

#fred的私有使用者  

[fredsdir]  

   comment = Fred's Service  

   path = /usr/somewhere/private  

   valid users = fred  

   public = no  

   writable = yes  

   printable = no  

引數配置完後可以通過bin目錄下testparm來測試一下smb.conf的配置,testparm -v可以檢視global域中未配置的引數的預設值

[email protected]:/usr/local/samba-4.1.14$ bin/testparm -v
Load smb config files from /usr/local/samba-4.1.14/etc/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[public]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

[global]
        dos charset = CP850
        unix charset = UTF-8
        workgroup = MYGROUP
        realm = 
        netbios name = UBUNTU
        netbios aliases = 
        netbios scope = 
        server string = Samba Server
        interfaces = 
        bind interfaces only = No
        server role = standalone server
        security = USER
        auth methods = 
        encrypt passwords = Yes
        client schannel = Auto
        server schannel = Auto
        allow trusted domains = Yes
        map to guest = Bad User
        null passwords = No
        obey pam restrictions = No
        password server = *
        smb passwd file = /usr/local/samba-4.1.14/private/smbpasswd
        ...

global域中有一個很強悍的引數map to guest = bad user,這個配置的意思是將所有samba系統主機所不能正確識別的使用者都對映成guest使用者,這樣其他主機登入samba伺服器首先就不需要輸入使用者名稱密碼,可以看到所有browseable = yes 的共享資源目錄。如下配置:
[global]
...
map to guest = bad user
...
[tmp]
   comment = Temporary file space
   path = /tmp
   read only = no
   public = yes

[public]
   comment = Public Stuff
   path = /home/samba
   valid users = ubuntu
   public = yes
   writable = no
   printable = no
通過上面配置,重啟smbd程序,可以得到如下圖,不需要輸入密碼就可以看到可以瀏覽的tmp和public,當如需要檢視public資源時,才會提示輸入密碼:


3.samba伺服器的其他

SAMBA 服務主要通過兩個daemon服務來進行管理:
nmbd :用來管理工作組、NetBIOS name 等等的解析。主要利用 UDP 協議開啟 port 137, 138 來負責名稱解析的任務;
smbd :用來管理 SAMBA 主機分享的目錄、檔案與印表機等等。 主要利用可靠的 TCP 協議來傳輸資料,開放的埠口為 139及 445(不一定存在)

參考文章:

相關推薦

samba伺服器安裝配置

作為後臺開發人員,在程式碼開發過程中,我們開發流程一般是本地開發->同步到伺服器編譯->svn提交。如何在團隊開發中高效處理這些步驟是個很基本的問題。通常我們的本地環境大多是Windows,通過ssh客戶端遠端連線到伺服器,一般由於後臺程式碼的龐大,我們的都會有

Ubuntu 16.04 文件服務器--samba安裝配置

放置 chmod 免費 update 執行 訪問服務器 ubuntu 並保存 虛擬 參考:http://one.ifof1.cn/ Samba是在Linux系統上實現的SMB(Server Messages Block,信息服務塊)協議的一款免費軟件。它實現在局域網內共享文

Linux-mysql伺服器安裝配置

Linux 安裝mysql服務一 、yum安裝       1、檢視yum倉庫中可以安裝的mysql-server:       yum list | grep mysql       2、安裝mysq

RedHat 安裝配置samba伺服器

# ----------------------- Standalone Server Options ------------------------ # # Security can be set to user, share(deprecated) or server(deprecated) # # B

Window 7安裝配置Apache2 4伺服器(by 星空武哥)

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

安裝配置TOMCAT伺服器

1.下載apache-tomcat-6.0.39.zip 2.解壓 3.配置環境變數 TOMCAT_HOME=E:\e\apache-tomcat-6.0.39 在path中加上TOMCAT_HOME       ;%TMCAT_HOME%/b

Ubuntu 14.04 Web伺服器--Apache的安裝配置

命令列安裝Apache 開啟"終端視窗",輸入"sudo apt-get install apache2"-->回車-->輸入"root使用者的密碼"-->回車-->輸入"y"-->回車,安裝完成

Domino整合Portlet開發----安裝配置Domino 6.5伺服器

 Domino整合Portlet開發 企業內的工作流產品較多,例如Domino、BPM等。據我們統計,其中70%以上的企業採用的工作流產品是基於Domino的定製開發或基於Domino衍生產品的定製開發,例如,神州數碼公司、慧點科技公司的工作流產品就是在Domino基礎上二次開發而生成的。本節

如何在Ubuntu 18.04上安裝配置Apache 2 Web伺服器

什麼是Apache Web Server? Apache或Apache HTTP伺服器是一個免費的開源Web伺服器,由Apache軟體基金(Apache Software Foundation)開發和維護。它的受歡迎程度可以通過以下事實來判斷:全球約有46%的網站由Apache提供支援。 Apache允許網

Ubuntu FTP伺服器--vsftpd的安裝配置

方法/步驟 更新源列表 開啟"終端視窗",輸入"sudo apt-get update"-->回車-->"輸入當前登入使用者的管理員密碼"-->回車,就可以了。如果不執行該命令,直接安裝vsftpd,會出現"有 幾個軟體包無法下載,您可以執行apt-get up

Centos7命令列下安裝配置Apache伺服器

第一步: 首先安裝centos系統,這個比較簡單,只是注意安裝的時候不要最小化安裝,否則系統內容比較少,需要自己重新配置。新手的話建議安裝帶有圖形介面的centos系統,方便自己檢查和驗證,KDE介面做的還是不錯的。 第二步: 安裝Apache服務。Apache在c

Linux DNS 伺服器安裝配置維護

每個 IP 地址都可以有一個主機名,主機名由一個或多個字串組成,字串之間用小數點隔開。有了主機名,就不要死記硬背每臺 IP 裝置的 IP 地址,只要記住相對直觀有意義的主機名就行了。這就是 DNS 協議所要完成的功能。 今天我們將討論DNS伺服器,特別是Linux

IIS伺服器安裝配置

IIS:全稱(Internet information services) 用處:釋出一個web網站 安裝步驟:控制面板--》程式--》啟用或關閉Windows功能--》Internet information services(勾選) 檢驗是否安裝成功的方法是使用瀏覽器訪問:localho

ubuntu14.04 samba伺服器安裝配置

Author: cjh Theme: samba install andconfiguration 在介紹如何安裝配置samba之前,先簡單介紹linux中兩個命令的區別分別是update和upgrade。 update update是同步 /etc/apt/sourc

【Apache-Server】安裝配置Apache2.4伺服器(在Windows下)

一、版本介紹及安裝過程      首先我們要先下載Apache2.4伺服器:http://httpd.apache.org/。 關於現在那個版本的伺服器我這裡要說明一下,Apache有本身的伺服器是不能使用的,必須要先編譯才可以使用的。但是在他的官網上也提供了第三方編

Ubuntu遠端登入伺服器——SSH的安裝配置

1、安裝sshsudo apt install openssh-server需要下載 636 kB 的歸檔。解壓縮後會消耗 5,145 kB 的額外空間。您希望繼續執行嗎? [Y/n] y2、檢視ssh服務是否啟動sudo ps -e |grep ssh有sshd,說明ssh

BT伺服器的在linux安裝配置

BT是BitTorrent(位元流)的簡稱,BT的特點是使用者下載的同時,也在為其它使用者提供上傳,所以不會像FTP伺服器那樣隨著使用者數的增加而導致下載速度降低。恰恰相反,對於BT下載而言,下載的人越多速度越快。 BT下載首先在第一個共享端(或稱為Downloader)把一個檔案分成N個部分,A使用者可以從

james3.0郵件伺服器安裝配置

1.先在官網下載apache-james-3.0-beta4-app.zip; 2.解壓該壓縮包 為 apache-james-3.0-beta4; 3.開啟cmd.exe.輸入命令列進入該檔案。 4.執行結束後會出現各個埠的埠號。 5.然後再執行james instal

010 Linux 下通過yum、apt、dnf方式安裝配置Nginx伺服器

一、安裝 Centos系統 1、安裝Nginx源。 Centos7下:#rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

fastdfs檔案伺服器的基本安裝配置

感謝各位的分享:說明:    系統:阿里雲的centos 7    nginx:nginx-1.13.9    fastdfs:fastdfs-5.11一、準備工作安裝相關依賴yum -y install make cmake gcc gcc-c++ bison-devel