不需密碼的分享 (security = share, 純測試)
瞎密?不需要密碼就能夠使用 SAMBA 主機所提供的目錄資源?真假?沒錯啦,可以達到的。不過,因為不需要密碼就能夠登入, 雖然你可以設定權限成為唯讀,讓使用者可以『瞧瞧而已』,但是畢竟比較危險。 因為如果你不小心將重要資料放置到該分享的目錄當中,豈不危險?所以盡量不要這樣設定,所以標題才會講:『純測試』嘛!
0. 假設條件
在底下的案例中,伺服器 (192.168.100.254) 預計設定的參數狀況為:
在 LAN 內所有的網芳主機工作群組 (workgroup) 為: vbirdhouse
這部 Samba 伺服器的 NetBIOS 名稱 (netbios name) 為: vbirdserver
使用者認證層級設定 (security) 為: share
取消原本有放行的 [homes] 目錄;
僅分享 /tmp 這個目錄而已,且取名為: temp
Linux 伺服器的編碼格式假設為萬國碼 (Unicode, 亦即 utf8)
用戶端為中文 Windows ,在用戶端的軟體也使用 big5 的編碼
老實說, netbios name 幾乎可以不用設定了,因為現在我們都用 IP 進行網芳連線,不一定會使用主機名稱嘛! 所以這一版當中,鳥哥取消了 lmhosts 的設定值喔!好了,底下就開始依序來進行 samba 的設定吧!
1. 設定 smb.conf 設定檔
由於我們有設定語系相關的資料,因此得要先查查看,到底我們 Linux 伺服器的語系是否為 utf8 呢?檢查方法如下:
[root@www ~]# cat /etc/sysconfig/i18n LANG="zh_TW.UTF-8" <==確實是出現了 utf8 喔! |
如上所示,確實是 utf8 啊!而在這個例子當中我們僅分享 /tmp 這個目錄而已,而且假設這個分享出來的目錄是可讀寫的, 另外,我們並沒有分享印表機喔!而在 smb.conf 當中的註解符號可以是『 # 』也可以是『 ; 』喔!要注意!
[root@www ~]# cd /etc/samba[root@www samba]# cp smb.conf smb.conf.raw<==先備份再說![root@www samba]# vim smb.conf# 1. 先設定好伺服器整體環境方面的參數[global] # 與主機名稱有關的設定資訊 workgroup = vbirdhouse netbios name = vbirdserver server string = This is vbird's samba server # 與語系方面有關的設定項目喔,為何如此設定請參考前面的說明 unix charset = utf8 display charset = utf8 dos charset = cp950 # 與登錄檔有關的設定項目,注意變數 (%m) log file = /var/log/samba/log.%m max log size = 50 # 這裡才是與密碼有關的設定項目哩!security = share# 修改一下印表機的載入方式,不要載入啦! load printers= no# 2. 分享的資源設定方面:主要得將舊的註解,新的加入!# 先取消 [homes], [printers] 的項目,然後針對 /tmp 的設定,可瀏覽且可寫入喔[temp] <==分享資源名稱 comment = Temporary file space <==簡單的解釋此資源 path = /tmp <==實際 Linux 分享的目錄 writable = yes <==是否可寫入?在此例為是的 browseable = yes <==能不能被瀏覽到資源名稱guest ok = yes<==單純分享時,讓用戶隨意登入的設定值 |
請你特別留意,在原本的 smb.conf 上面就已經有很多預設值了,這些預設值如果你不知道他的用途, 盡量保留預設值,也可以使用 man smb.conf 去查詢該預設值的意義。上述的設定是完全控制使用者的認證層級的呦!
2. 用 testparm 查閱 smb.conf 的語法設定正確性
在啟動 samba 之前,我們務必要瞭解到 smb.conf 裡面語法是否正確,檢驗的方式使用 testparm 這個指令即可。 測試方式如下:
[root@www ~]# testparm選項與參數:-v :查閱完整的參數設定,連同預設值也會顯示出來喔![root@www ~]# testparmLoad smb config files from /etc/samba/smb.conf Processing section "[temp]" <==看有幾個中括號,若中刮號前出現訊息,則有錯誤Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions <==按 Enter 繼續 [global] <==底下就是剛剛在 smb.conf 裡頭設定的資料! dos charset = cp950 unix charset = utf8 display charset = utf8 workgroup = VBIRDHOUSE netbios name = VBIRDSERVER server string = This is vbird's samba server security = SHARE log file = /var/log/samba/log.%m max log size = 50 load printers = No [temp] comment = Temporary file space path = /tmp read only = No guest ok = Yes |
上頭是語法驗證與各個項目的列出,如果你下達 testparm 卻出現如下畫面那就是有問題:
[root@www ~]# testparm Load smb config files from /etc/samba/smb.conf Unknown parameter encountered: "linux charset"<==中括號前為錯誤訊息!Ignoring unknown parameter "linux charset"Processing section "[temp]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions |
如果發現上述的錯誤,這表示你的 smb.conf 有個『 linux charset 』的設定參數,不過 smb.conf 其實是不支援這個參數的。 可能的問題是 samba 2.x 與 samba 3.x 有一些項目的支援已經不存在了,所以你使用舊版的 2.x 設定檔來 3.x 上頭執行時,就會出現問題。此外,『打字錯誤』也是很常見的一個問題吶!趕緊測試一下語法先, 然後根據 smb.conf 存在的項目去進行修改吧。
如果你想要瞭解 samba 的所有設定 (包括沒有在 smb.conf 裡頭設定的預設值),可以使用 testparm -v 來作詳細的輸出, 資料相當的豐富,透過這個你也可以知道你的主機環境設定為何呢! ^_^