Linux Samba服務器超詳細安裝配置(附問題解決)

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

samba是模仿Windows網上鄰居的SMB的通訊協議,將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服務器相關的配置文件

/etc/samba/smb.conf 
這是samba的主要配置文件,基本上僅有這個文件,而且這個配置文件本身的說明非常詳細。主要的設置包括服務器全局設置,如工作組、NetBIOS名稱和密碼等級,以及共享目錄的相關設置,如實際目錄、共享資源名稱和權限等兩大部分。

/etc/samba/lmhosts 
早期的 NetBIOS name 需額外設定,因此需要這個 lmhosts 的 NetBIOS name 對應的 IP 檔。 事實上它有點像是 /etc/hosts 的功能!隻不過這個 lmhosts 對應的主機名是 NetBIOS name 喔!不要跟 /etc/hosts 搞混瞭!目前 Samba 預設會去使用你的本機名稱 (hostname) 作為你的 NetBIOS name,因此這個檔案不設定也無所謂。

/etc/sysconfig/samba 
提供啟動 smbd, nmbd 時,你還想要加入的相關服務參數。

/etc/samba/smbusers 
由於 Windows 與 Linux 在管理員與訪客的賬號名稱不一致,例如: administrator (windows) 及 root(linux), 為瞭對應這兩者之間的賬號關系,可使用這個檔案來設定

/var/lib/samba/private/{passdb.tdb,secrets.tdb} 
管理 Samba 的用戶賬號/密碼時,會用到的數據庫檔案;

/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,使用命令:

[root@localhost ~]# rpm -qa | grep samba

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

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

第一種方式:yum安裝

yum是一個集與查找,安裝,更新和刪除程序的Linux軟件。它運行在RPM包兼容的Linux發行版本上,如:RedHat、Fedora、SUSE、CentOS、Mandriva。

yum install -y samba

第二種方式:安裝包安裝

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

[root@localhost ~]# 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

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

[root@localhost ~]# 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服務器,同時並設置密碼。具體命令:

[root@localhost ~]# useradd sambauser
[root@localhost ~]# smbpasswd -a sambauser
New SMB password:
Retype new SMB password:

重啟Samba服務器

[root@localhost ~]# /etc/init.d/smb restart

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

登錄Samba

在Windows和Linux網絡都暢通的情況下,在Windows下登錄Samba服務器。使用命令查看Samba的IP地址:

[root@localhost ~]# 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中使用命令:

[root@localhost ~]# ifconfig eth0 223.3.119.130

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

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

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

防火墻問題

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

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

Linux上關閉防火墻:

[root@localhost ~]# setenforce 0
[root@localhost ~]# service iptables stop

記得要重啟Samba服務器。

權限問題

可能會出現權限不夠的問題,修改你想要的那個文件的權限。

[root@localhost ~]# chmod 777 /home

無法訪問

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

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

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

怎麼斷開連接(即退出Samba服務器)呢?

在Windows的命令行中輸入:

net use * /delete /y

自動連接

使每次打開Linux自動運行smba服務器:

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

如果還有什麼問題,也可以參考連接: 【Linux】samba服務器的安裝和配置,159 samba 無法訪問。您可能沒有權限使用網絡資源 net use命令。

到此這篇關於Linux Samba服務器超詳細安裝配置(附問題解決)的文章就介紹到這瞭,更多相關Linux Samba服務器安裝配置內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: