1. 程式人生 > >【Linux】Samba伺服器超詳細安裝、配置(附帶各種問題解決方式)

【Linux】Samba伺服器超詳細安裝、配置(附帶各種問題解決方式)

在嵌入式系統開發應用平臺中,tftp、nfs和samba伺服器是最常用的檔案傳輸工具,tftp和nfs是在嵌入式Linux開發環境中經常使用的傳輸工具,samba則是Linux和Windows之間的檔案傳輸工具。

虛擬機器版本:VMware10

Linux作業系統版本:Red Hat Enterprise Linux 5

Samba伺服器介紹

Samba是在Linux系統上實現SMB(Session MessageBlock)協議的一個免費軟體,以實現檔案共享和印表機服務共享。

Samba伺服器元件

samba有兩個主要的程序smbd和nmbd。smbd程序提供了檔案和列印服務,而nmbd則提供了NetBIOS名稱服務和瀏覽支援,幫助SMB客戶定位伺服器,處理所有基於UDP的協議。 


Samba伺服器相關的配置檔案

  1. /etc/samba/smb.conf 
    這是samba的主要配置檔案,基本上僅有這個檔案,而且這個配置檔案本身的說明非常詳細。主要的設定包括伺服器全域性設定,如工作組、NetBIOS名稱和密碼等級,以及共享目錄的相關設定,如實際目錄、共享資源名稱和許可權等兩大部分。
  2. /etc/samba/lmhosts 
    早期的 NetBIOS name 需額外設定,因此需要這個 lmhosts 的 NetBIOS name 對應的 IP 檔。 事實上它有點像是 /etc/hosts 的功能!只不過這個 lmhosts 對應的主機名是 NetBIOS name 喔!不要跟 /etc/hosts 搞混了!目前 Samba 預設會去使用你的本機名稱 (hostname) 作為你的 NetBIOS name,因此這個檔案不設定也無所謂。
  3. /etc/sysconfig/samba 
    提供啟動 smbd, nmbd 時,你還想要加入的相關服務引數。
  4. /etc/samba/smbusers 
    由於 Windows 與 Linux 在管理員與訪客的賬號名稱不一致,例如: administrator (windows) 及 root(linux), 為了對應這兩者之間的賬號關係,可使用這個檔案來設定
  5. /var/lib/samba/private/{passdb.tdb,secrets.tdb} 
    管理 Samba 的使用者賬號/密碼時,會用到的資料庫檔案;
  6. /usr/share/doc/samba-<版本> 
    這個目錄包含了 SAMBA 的所有相關的技術手冊喔!也就是說,當你安裝好了 SAMBA 之後,你的系統裡面就已經含有相當豐富而完整的 SAMBA 使用手冊了!值得高興吧! ^_^,所以,趕緊自行參考喔!

至於常用的指令碼檔案案方面,若分為伺服器與客戶端功能,則主要有底下這幾個資料:

  • /usr/sbin/{smbd,nmbd}:伺服器功能,就是最重要的許可權管理 (smbd) 以及 NetBIOS name 查詢 (nmbd) 兩個重要的服務程式;

  • /usr/bin/{tdbdump,tdbtool}:伺服器功能,在 Samba 3.0 
    以後的版本中,使用者的賬號與密碼引數已經轉為使用資料庫了!Samba 使用的資料庫名稱為 TDB (Trivial DataBase)。 
    既然是使用資料庫,當然要使用資料庫的控制指令來處理囉。tdbdump 可以察看資料庫的內容,tdbtool 則可以進入資料庫操作介面直接手動修改帳密引數。不過,你得要安裝 tdb-tools 這個軟體才行;

  • /usr/bin/smbstatus:伺服器功能,可以列出目前 Samba 的聯機狀況, 包括每一條 Samba 聯機的 PID, 分享的資源,使用的使用者來源等等,讓你輕鬆管理 Samba 啦;

  • /usr/bin/{smbpasswd,pdbedit}:伺服器功能,在管理 Samba 的使用者賬號密碼時, 早期是使用 smbpasswd 這個指令,不過因為後來使用 TDB 資料庫了,因此建議使用新的 pdbedit 指令來管理使用者資料;

  • /usr/bin/testparm:伺服器功能,這個指令主要在檢驗配置檔案 smb.conf 的語法正確與否,當你編輯過 smb.conf 
    時,請務必使用這個指令來檢查一次,避免因為打字錯誤引起的困擾啊!

  • /sbin/mount.cifs:客戶端功能,在 Windows 上面我們可以設定『網路驅動器機』來連線到自己的主機上面。在 Linux 上面,我們則是透過 mount (mount.cifs) 來將遠端主機分享的檔案與目錄掛載到自己的 Linux 主機上面哪!

  • /usr/bin/smbclient:客戶端功能,當你的 Linux主機想要藉由『網路上的芳鄰』的功能來檢視別臺計算機所分享出來的目錄與裝置時,就可以使用 smbclient來檢視啦!這個指令也可以使用在自己的 SAMBA 主機上面,用來檢視是否設定成功哩!

  • /usr/bin/nmblookup:客戶端功能,有點類似 nslookup 啦!重點在查出 NetBIOS name 就是了

  • /usr/bin/smbtree:客戶端功能,這玩意就有點像 Windows 
    系統的網路上的芳鄰顯示的結果,可以顯示類似『靠近我的計算機』之類的資料, 能夠查到工作組與計算機名稱的樹狀目錄分佈圖!

安裝Samba

首先確認一下自己的Linux是否安裝了Samba,使用命令:

[[email protected] ~]# rpm -qa | grep samba

其中:samba、samba-common、samba-client三個程式是必須的。

如果沒有安裝,有兩種方式可以安裝:

第一種方式:yum安裝

yum是一個集與查詢,安裝,更新和刪除程式的Linux軟體。它執行在RPM包相容的Linux發行版本上,如:RedHat、Fedora、SUSE、CentOS、Mandriva。

yum install -y samba

第二種方式:安裝包安裝

安裝包都在光盤裡,首先需要掛載:

[[email protected] ~]# mount /dev/cdrom /mnt

這個時候,會出現一個問題:

mount: block device /dev/sr0 is write-protected, mounting read-only 

提示資訊說,虛擬機器掛著光碟機光碟機時提示只讀。用以下命令可解決該報錯:

mount -o remount,rw /dev/cdrom /mnt

此時,我們會發現,原本空的資料夾/mnt現在多了很多的檔案。


在/mnt/Server資料夾中,會能找到關於Samba的安裝包:


找到安裝包之後,就是安裝Samba了(只需要安裝自己沒有的那個就行了)。使用命令:

rpm samba-3.0.25b-0.el5.4.i386.rpm
rpm samba-client-3.0.25b-0.el5.4.i386.rpm
rpm samba-commons-3.0.25b-0.el5.4.i386.rpm

安裝完之後,再使用命令驗證一下是否安裝完成:

[[email protected] ~]# rpm -qa | grep samba

配置Samba

修改配置檔案

samba伺服器最主要的配置檔案其實只有一個,就是/etc/samba/samba.conf,這個配置檔案可以分為兩個部分,一個部分是全域性引數,一部分是共享資源相關引數。

#1.全域性部分引數設定:
[global]
        #與主機名相關的設定
        workgroup = zkhouse  <==工作組名稱
        netbios name = zkserver   <==主機名稱,跟hostname不是一個概念,在同一個組中,netbios name必須唯一
        serverstring = this is a test samba server <==說明性文字,內容無關緊要
        #與登入檔案有關的設定
        log file = /var/log/samba/log.%m   <==日誌檔案的儲存檔名,%m代表的是client端Internet主機名,就是hostname
        max log size = 50      <==日誌檔案最大的大小為50Kb
        #與密碼相關的設定
        security = share       <==表示不需要密碼,可設定的值為share、user和server
        passdb backend = tdbsam
        #印表機載入方式
        load printer = no <==不載入印表機
-----------------------------------------------------------
#2.共享資源設定方面:將舊的註釋掉,加入新的
#先取消[homes]、[printers]的專案,新增[temp]專案如下
[temp]              <==共享資源名稱
        comment = Temporary file space <==簡單的解釋,內容無關緊要
        path = /tmp     <==實際的共享目錄
        writable = yes    <==設定為可寫入
        browseable = yes   <==可以被所有使用者瀏覽到資源名稱,
        guest ok = yes    <==可以讓使用者隨意登入

也就是說,將上面“#2共享資源設定方面”加入到配置檔案的最後即可。

新增使用者並設定密碼

設定賬號用於登入samba伺服器,同時並設定密碼。具體命令:

[[email protected] ~]# useradd sambauser
[[email protected] ~]# smbpasswd -a sambauser
New SMB password:
Retype new SMB password:

重啟Samba伺服器

[[email protected] ~]# /etc/init.d/smb restart

如果這段命令無法執行,就是Samba沒有正確安裝的原因。


登入Samba

在Windows和Linux網路都暢通的情況下,在Windows下登入Samba伺服器。使用命令檢視Samba的IP地址:

[[email protected] ~]# ifconfig

在Windows的執行,輸入\\223.3.119.170(Samba對應的IP地址):


這個時候會彈出登入介面,直接輸入之前設定的登入賬號和密碼就行了。


問題彙總及補充

之前Samba的安裝和配置都是一步一步來的,沒有什麼問題。但是很多情況下,就是最後在Windows的執行中,輸入了\\IP地址之後,沒有任何反應。這是最麻煩的地方,因為完全不知道是什麼原因導致的。下面提供幾個可能出問題的地方:

網路選擇

在配置Samba伺服器的時候,網路選擇為bridge橋連線。


這是因為:要保證Linux下的IP和Windows下的IP處於同一網段中,並且保證相互可以ping通。

怎麼驗證?

在Windows的命令列中,輸入命令ipconfig:


同時在Linux中輸入命令ifconfig(兩個命令不一樣,需要注意):


可以看到:兩個IP地址223.3.119.239和223.3.119.170之間前3個都是一樣的,只有最後一個不同,這就保證了在同一網段。如果前3位不同,可在Linux中使用命令:

[[email protected] ~]# ifconfig eth0 223.3.119.130

只需要保證只有最後一個不同即可。

接下來驗證Windows和Linux之間的ping通,在Windows命令列中輸入ping Linux的IP地址


結果如果不是timeout,就代表兩者之間ping通。

防火牆問題

如果防火牆不關閉,Windows和Samba之間的連通可能會被阻擋。

Windows上關閉防火牆:控制面板->系統和安全->Windows防火牆->開啟或關閉Windows防火牆;

Linux上關閉防火牆:

[[email protected] ~]# setenforce 0
[[email protected] ~]# service iptables stop


記得要重啟Samba伺服器。

許可權問題

可能會出現許可權不夠的問題,修改你想要的那個檔案的許可權。

[[email protected] ~]# chmod 777 /home

無法訪問

如果用windows訪問samba,跳出以下對話方塊的錯誤:

無法訪問。您可能沒有許可權使用網路資源。請與這臺伺服器的管理員聯絡以查明您是否有訪問許可權。

不允許一個使用者使用一個以上使用者名稱與一個伺服器或共享資源的多重連線。中斷與此伺服器或共享資源的所有連線,然後再試一次……或者直接重啟Windows。

怎麼斷開連線(即退出Samba伺服器)呢?

在Windows的命令列中輸入:

net use * /delete /y

自動連線

使每次開啟Linux自動執行smba伺服器:

在終端中輸入setup->system service->找到smb,按下空格,便可選中->退出完成(注意切換用tab鍵)。

相關推薦

LinuxSamba伺服器詳細安裝配置附帶各種問題解決方式

在嵌入式系統開發應用平臺中,tftp、nfs和samba伺服器是最常用的檔案傳輸工具,tftp和nfs是在嵌入式Linux開發環境中經常使用的傳輸工具,samba則是Linux和Windows之間的檔案傳輸工具。虛擬機器版本:VMware10Linux作業系統版本:Red H

Linux在Windows7主機上安裝CentOS雙系統

因個人辦公電腦裝的盜版Win7總是藍屏,影響工作,加之看到 WPS Linux版也已釋出,嘗試安裝 CentOS 作為辦公系統。大學期間學過 Linux 語法,也自己玩過 Ubuntu,倒都也熟悉。 之所以選擇CentOS 是因為 Cen

LinuxCentOS6上mysql5.7安裝

1.下載安裝yum源 根據系統下載yum源 https://dev.mysql.com/downloads/repo/yum/ rpm -ivh xxxxx.rpm 2.修改yum源 vim /etc/yum.repos.d/mysql-community.repo enable想要下載的版本

Linux製作kickstart指令碼自動安裝linux系統

摘要:之前我們介紹了圖形介面安裝虛擬機器,這樣不適合批量操作。後來我們又介紹了指令碼安裝虛擬機器,但是也只能算是半自動安裝吧,後面依舊有很多步驟與圖形介面安裝一致。所以這次我們來介紹真正的一勞永逸,如何製作kickstart指令碼自動安裝虛擬機器。 1. kickstart簡介 ki

LinuxUbuntu16.04 tree的安裝

使用環境:Ubuntu16.04 安裝Tree 今天在遠端其他裝置的時候,想看一下目錄結構,tree回車居然提示需要安裝...第一次知道tree原來也需要安裝 進入安裝的過程: apt-get install tree的時候,失敗了,所以選擇了使用安裝包的形式. 下載安裝包

Linux- 六個讚的字元畫生成器

ASCII是一個非常吸引人的字元編碼系統,在計算機,通訊裝置,以及其他裝置中,通過它來用程式碼表示字元。新生代的人可能會覺得它已經過時了,但是那些熟悉它的人會懂得ASCII是多麼的獨特。我們在這裡為你準備了五個超讚的ASCII字元藝術生成器。 1 GlassGiant ASCII Art GlassGia

Linux- 六個贊的字符畫生成器

藝術 jpg 有趣的 www. ast www generator 符號 tar ASCII是一個非常吸引人的字符編碼系統,在計算機,通訊設備,以及其他設備中,通過它來用代碼表示字符。新生代的人可能會覺得它已經過時了,但是那些熟悉它的人會懂得ASCII是多麽的獨特。我們在這

LinuxCentOS 7環境下安裝中文字型庫

JAVA畫圖時常用到Font 類物件 這樣的物件依賴於本地的欄位。新裝的linux沒有安裝欄位庫,和相應的字型。 1、fc-list檢視字型庫 2、yum -y install fontconfig安裝 3、安裝好後/usr/share目錄下多兩個目錄fonts和fo

Ubuntu 12.04上安裝配置Postfix郵件服務詳細教程

原文網址 https://yq.aliyun.com/ziliao/29593 郵件伺服器配置之所以麻煩是因為需要了解很多東西,牽涉到域名服務 DNS/Bind,Web 收發郵件 Apache/PHP/MySQL/SquirrelMail,認證服務 LDAP, Ker

Linux使用yum命令線上安裝JDK

https://blog.csdn.net/m0_37949684/article/details/77977606一、安裝JDK這裡我用的是yum線上安裝1)瀏覽線上所有的JDK版本:yum -y list java*  執行後是這樣的:2)安裝JDK我這邊安裝的是JDK1

Linux虛擬機器+Ubuntu14.04安裝版本分割槽筆記

1.虛擬機器與Linux系統版本 VM12+ubuntu14.04.1或ubuntu14.04.2 VM12: 因為付費。需要自己尋找下載安裝 Ubuntu14: 官方下載列表 ubuntu14.04.1官網下載連結 ubuntu14.04.

IDECode::Blocks 16.01安裝設置和使用

blog nbsp deb org sub ads sublime def 集成開發   發現Code::Blocks和Sublime Text一樣,都是很簡單好使的IDE(集成開發環境),一看微軟家的VS2015, 現在出到2017了,安裝包就是好幾十個G,C盤真是吃不消

Linux基礎每日一命之awk命令

設置變量 兩個 oob 每日 gin water 不能 -o source awk 是一個強大的文本分析工具 語法:awk [選項參數] ‘script‘ var=value file(s)或awk [選項參數] -f scriptfile var=value file(s

Linux檢視日誌類命令catlessmoretailhead

目錄 一、cat 二、more 三、less 四、tail 五、head 各命令的主要區別: linux命令中cat、more、less、tail、head均可用來檢視檔案內容,主要區別有: cat是一次性顯示整個檔案的內容,適用於檔案內容少的情況;

轉載SSH伺服器端/etc/ssh/sshd_conf配置檔案詳解

[[email protected] ~]$cat /etc/ssh/sshd_config #Port 22                        

linux--- ssh,scp及免密配置

1.ssh協議 ssh是一種網路協議,是一種遠端登入的安全外殼協議,用於計算機之間的加密登入 可用於linux機器之間的傳輸 有兩種身份驗證機制: ①:使用者名稱+密碼驗證 ②:金鑰驗證 2.如果想從一臺機器上登入到另一臺機器,就需要用ssh協議 ssh 機器IP&nbs

Linux使用者和使用者組管理許可權管理vi編輯器sudo許可權管理

使用者和使用者組管理 1、使用者配置檔案位置 -》cat /etc/passwd 2、root: x:0:0:root:/root:/bin/bash -》root 代表使用者名稱 -》x 密碼標識,

linux如何檢視檔案的建立修改時間

本篇博文旨在介紹Linux下檢視檔案時間的方法;並介紹如何使用touch指令來進行檔案時間的建立以及修改 如何檢視檔案的時間資訊 利用stat指令檢視檔案資訊 三種時間的介紹 ATime ——檔案

Tomcattomcat簡單介紹,安裝以及啟動

最為一個資深的吊死程式猿,在工作中,經常使用tomcat,但是從來沒有做過深入的總結,真是罪過。從這篇博文開始,我們對tomcat進行一個深入的學習,先是基本使用學習,之後我們再看一看tomcat的原始碼部分。不多說了,我們直接進入正題: tomcat介紹

LinuxApache訪問控制之虛擬主機配置

在上一次的測試中可以看到在訪問AWStats日誌分析系統時,並不需要提高賬號和密碼,只要知道對應的網址就可以獲知web站點的訪問情況,這給伺服器帶來了安全隱患。為了更好的控制對網站資源的訪問,可以待定的