2007年7月23日 星期一

為 SLAX Server 5.1.8.1 加上 Samba

最近花了一些時間找到了一個小巧的 Linux LiveCD 可以當作 server 使用,kernel 的版本 2.6.16 也還算新。最讓我心動的就是支援 LVM v2,那就是SLAX,一個根據 Slackware 為基礎的 LiveCD。我打算使用 Slax Server 5.1.8.1 這個延伸版本,因為很多我用的到的 service 都已經內建了,但就是獨缺我要用到的 Samba,搞了幾天才把 Samba 弄好,最好在這裡作一下筆記免得日後又忘了。

Step 1 - 下載 module for Samba 3.0.23c
下載點 http://www.slax.org/modules.php?category=network&id=1570&name=Samba+%28Windows+File+Sharing%29

Step 2 - 把下載回來的 .mo 複製到光碟映像檔的 modules 目錄

Step 3 - 重新開機之後 Samba 就會自動在系統中了,只是這時 Samba 的 service 還沒啟動。上面下載回來的 module 是把 Samba 的啟動 script 放在 /root 目錄中,所以要開啟 Samba 是執行 /root/samba 而不是一般的 /etc/rc.d/rc.samba。啟動了之後以為網芳就可以存取了,結果卻總是失敗。關鍵就在下面的 Step 4。

Step 4 - 更改 /etc/rc.d/rc.FireWall 允許開放 Samba Service 需要的 Port。
搞了半天,最後才忽然想到可能是 port 被封鎖了。果不其然,因為這是 for Server 的版本,所以原作者加上了這層安全性的的考量。又因為 5.1.8.1 這個版本沒有包含 Samba,結果就連使用者自行加上的 Samba 也給檔掉了,跑不起來。

首先,使用 vi /etc/rc.d/rc.FireWall 編輯,在約莫第 12 行的 ALLOWED_PORTS 字串中加入 139 及 445 這兩個 port,這是 smbd 需要用到的 tcp port。再於其下插入一行如下:
ALLOWED_UDP_PORTS="137 138"

再往下找到有一段 for ..... done 的迴圈,把這個迴圈 copy 到其下方,但是把其中的 $ALLOWED_PORTS 替換成 $ALLOWED_UDP_PORTS,並且把 tcp 取代為 udp。這樣 nmbd 需要用到的 udp port 137, 138 就可以打開了。

最後重新啟動 rc.firewall 使得更改過的設定生效。
/etc/rc.d/rc.firewall stop
/etc/rc.d/rc.firewall start
如果不放心可以再用 /etc/rc.d/rc.firewall status 確定新的設定是否正確載入。
以上,網路上的芳鄰就可以正常動作了。