2007-01-17

網路芳鄰 (Samba) 的設定

只要安裝啟動 Samba 服務,就可以把 Router 上面的特定目錄或分割區透過網路芳鄰與其他電腦共享,如果你在 Asus WL-500g 上面 USB 接的是大容量的 Flash 甚至是硬碟機,那麼透過這個服務就可以讓你的 Router 變成一台檔案伺服器或是 NAS 囉!在檔案存取及分享上能夠變得更方便!

Samba 服務因為如此重要,已經被 Oleg 大大內嵌放入韌體裡面了,我們不用安裝,只要負責設定和啟動它,它就可以運作了。(不過說實話,分享存取小檔沒問題,但是如果用來分享影像音樂等大一點的檔案,因為 WL-500g 的 USB 只有 V1.1,速度很慢,加上 Samba 的效率也比較差,所以拿來做大檔分享可能會很慢)

首先我們要先建立 Samba 的設定檔。我們在 /opt/etc 下面建立存放 Samba 設定檔的目錄:

mkdir /opt/etc/samba

建立並編輯設定檔 smb.conf:

nano /opt/etc/samba/smb.conf

貼入以下內容:

[global]
workgroup = Workgroup
guest account = nobody
security = share
browseable = yes
guest ok = yes
guest only = no
log level = 1
max log size = 100
encrypt passwords = yes
dns proxy = no

[Share]
path=/opt/public
writeable = yes
browseable = yes

這個設定檔的內容要依據個人的環境和需求來調整。像是在 [global] 這個 Section 裡面, workgroup= 是指定你的 Router 是屬於那個工作群組,Windows 環境如果沒有改過的話,群組名稱預設都是 "Workgroup",而下面 [Share] 的 Section 就是看你想要分享那個目錄出來,分享的名稱還有該目錄的存取權限。以上面的例子來說,我分享了我在 /opt/public 目錄出來,可以讀寫,而且使用者看到我分享的目錄名稱為 "Share",如果你想多分享幾個目錄出來,你就手動多加幾個 [Share2] [Share3] 之類的 Section 就行了,當然名稱可以自訂。

接下來的問題是每次開機都要啟動 Samba 這個服務,才能讓網路上的電腦存取你分享的目錄。Samba 服務包含了兩個 Daemon 程式:smbd (主程式) & nmbd (負責名稱解析的),還記得一開始我們在產生 post-boot 時的最後一行: /opt/etc/init.d/rc.unslung,這個執行檔的目的就是幫忙啟動你放置在 /opt/etc/init.d/ (USB 磁碟區)裡面的服務和程式,這樣我們有裝新東西就不用都要去改 post-boot 囉!因此像這次我們要同時啟動 smbd & nmbd,我們只要寫一個批次檔放在 /opt/etc/init.d/ 目錄下,開機的時候不也會順道執行嗎?建立並編輯這個批次檔:

nano /opt/etc/init.d/S97Samba

並且加入以下內容:

#!/bin/sh
/usr/sbin/smbd -D -l /opt/var/log/smbd.log -s /opt/etc/samba/smb.conf
/usr/sbin/nmbd -D -n WL500g -o -l /tmp -s /opt/etc/samba/smb.conf

請注意 nmbd 後面那個參數 "-n",照參數說明應該是 Netbios 的名稱,通常這個名字和「主機名稱」應該都是一樣的,如果你曾經改過你 WL500g 的 Hostname「主機名稱」(預設是空白,你可以用命令 hostname 來看現在的主機名稱為何),建議 -n 後面帶的名稱和你的主機名稱一樣(你也可以用命令 "hostname WL500g" 把你的主機名稱改成 "WL500g"),這樣可以避免發生一些錯誤(像是 cant get hostname by address 之類的)。存檔離開後記得更改檔案屬性。讓它變成一個可執行檔:

chmod 755 /opt/etc/init.d/S97Samba

這樣所有的設定動作就完成了!你可以重新開機,或是執行 /opt/etc/init.d/S97Samba,用 ps 看看 smbd & nmbd 這兩個程式有沒有跑起來,有啟動就成功啦!接下來用電腦查看網路芳鄰,在同一個工作群組 (Workgroup) 下的話就可以看到 WL-500g 這台「主機」,裡面有分享上面你指定分享的目錄,這樣存取和檔案分享就可以很方便囉!

參考文章:
SAMBA Tutorial
[HowTo] Getting started (Firmware upgr, Storage, Samba, SSH)
鳥哥的 Linux 私房菜 - SAMBA 伺服器

回應: 9

chicman 提到...

我發現oleg的samba是2.0.10。而且不支援UTF8 ~囧~ 。正想辦法把它換成ipkg上面的samba3...但是也不保證能支援UTF8...

krel 提到...

版主您好

依您的方法,從磁碟分割到samba的設定(其中新增使用者群組及修改Shell啟動文件)這方面沒有設定,而samba也依您的分式設定。卻發生執行
/opt/etc/init.d/S97Samba
時,smbd和nmbd服務皆會出現,但只要有主機進網芳時,這二個服務就會自動消失。也看不到wl500gp的samba
註:目前使用的機器為wl-500gp,fireware為oleg 2007 0406

勞煩您看完學生的留言 謝謝^^

Abin 提到...

To krel: 看起來是,一旦有 samba client 連線,你的 service 就會當掉關閉,所以服務才自動消失。
我自己用內建的 samba 是沒發現過這類問題,如果是版本上的問題,你可以用 ipkg 檢查有沒有新版,然後重新手動安裝一次 samba。命令: ipkg install samba (版本 3.0)或是 samba2 (v2.2),不過我自己沒裝過,要自己試試看囉~

匿名 提到...

sorry I can't type Chinese but I can read Chinese.

Is Samba supported with original Asus firmware or has to use olegs?

Abin 提到...

Asus 原廠 Firmware 裡面是沒有 Samba 的(原廠韌體也不允許你安裝),而一旦使用 Oleg 的 Firmware,預設就會幫你安裝,只不過設定和啟動的部分要自己來。所以如果堅持要用 Samba,你一定要改韌體。

Ted 提到...

在下是初學者,用的是wl-500gPremium,正想換oleg韌體,不知穩定否?
順道一問,如何將HDD格式化成EXT3?

Abin 提到...

To Ted: Oleg 的韌體已經相當穩定,給 500GP 的版本也相當成熟,在 PCDVD 甚至有賣 Asus 500GP 的商家直接內建 Oleg 韌體的出貨。
另外,如果要分割一個 ext3 的分割區,可以用 SPFDisk 這個 Free 工具。

Eddy 提到...

你好, 我已經將Asus WL-HDD依照你所寫的不驟改機成功了,但是問題來了, 我同事要使用兩種OS經由Samba存取WL-HDD, 但是我用WinXP文中文檔名時很正常, 但是換成Mac OsX 10.4時, 經由WinXP所存的中文檔名全部都變成亂碼了, 而在Mac OS下所新增的中文檔名也會變成亂碼, 請問要如何設定才可易讓WL-HDD的Samba支援UTF-8的語言格式. Thanks !!

Abin 提到...

To eddy:
首先,最早的留言 chicman 就有說到,改機韌體裡內建用的是舊版 2.x 的 samba,是不支援 UTF 的,如果想要支援,請先想辦法安裝新版 samba (3.x, ipkg install samba)。
接下來,在設定檔裡面 [global] 區段下,加入:unix charset = UTF8,順利的話重跑服務就行了。
現在我的 wl500g 單純用來當 router,也跑不大動其他服務,關於升級到 samba 3.0 動作請參考相關論壇的討論,而讓 samba 支援 UTF8 可能還有系統字型支援安裝的問題,我沒有經驗,也要麻煩你自己 try 了。

張貼留言

歡迎留言或發表意見,不過要理性不做人身攻擊。匿名的朋友得到回應的速度會比較慢喔~
發問相關的禮貌和規矩請先參考這篇文章,不當留言、和本文無關的回應可能會被直接刪除無視喔!