不需密碼的分享 (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 來作詳細的輸出, 資料相當的豐富,透過這個你也可以知道你的主機環境設定為何呢! ^_^