2008年7月9日 星期三

smbwebclient 網頁版的網路芳鄰

一般安裝完 samba ,套件裡除了伺服器所需的服務程式,還包括了一支叫 smbclient 的程式,它類似對談式的 FTP ,可以讓我們以指令交談的方式來存取網路芳鄰中的資源。這種文字界面的操作方式對一般人來說,可能複雜了一點,因此有人利用 PHP 寫的程式,將 smbclient 的指令用網頁操作的方式包裝起來,讓它成為一個網頁版的網路芳鄰。下面就來簡單的介紹一下這個 smbwebclient 。

由於 smbwebclient 是 PHP + smbclient ,所以,我們的基本需求如下:
  • PHP4 :PHP 4.1.x 以上。
  • smbclient : 建議用 samba3 以後的 smbclient ,之前的版本較無法正確的存取中文檔名。
  • smbwebclient : 可以到原始網站下載 http://smbwebclient.sourceforge.net/
下載回來的 smbwebclient 是一個壓縮檔,裡面只放了一個 PHP 程式,我們只要依自己需求修改完設定,並將它放到可以執行 PHP 的網頁空間中即可。
下面來看看幾個可以設定的地方:
$cfgSambaRoot
這個選項可以讓我們設定認證完以後,網頁中要顯示的預設資源為何。它格式如下:
  • 網域或群組名稱/主機名稱/分享的資源名稱
例如,
  • 想顯示 CC 網域(群組)中的 CCSERVER 所分享出來 share 資源,就設為:
    var $cfgSambaRoot = 'CC/CCSERVER/share';
  • 想顯示 CC 網域(群組)中的 CCSERVER 所分享出來的所資源,就設為:
    var $cfgSambaRoot = 'CC/CCSERVER';
  • 想顯示 CC 網域(群組)中所有的主機,就設為:
    var $cfgSambaRoot = 'CC';
!!要特別注意頭尾絕對不可以加上斜線!!
預設值為空字串,也就是顯示由 $cfgDefaultServer 所指定的主機瀏覽到資源。
$cfgDefaultLanguage
$cfgDefaultCharset
這兩個選項都是用來設定網頁的編碼用的,
因為我們要用 big5 的中文編碼,所以設成:
var $cfgDefaultLanguage = 'big5';
var $cfgDefaultCharset = 'big5';
$cfgDefaultServer
這個選項讓我們設定要以哪一台主機為網路資源的瀏覽器,如果安裝 smbwebclient 的主機本身就有提供 samba 服務,我們可以用預設值的:
var $cfgDefaultServer = 'localhost';

當然也可以換成自己喜好的主機網址。
在 smbclient 的指令中,它是用來放在 -L 後面的主機名稱,例如:
smbclient -L ccserver
$cfgArchiver
smbwebclient 提供一個很方便的功能,它可以讓我們將整個資料夾打包後才下載,這個選項就是用來讓我們設定用那種格式打包,可用的有:
  • tar : 利用 tar 將資料夾打包。
  • tgz : 利用 tar + gzip 打包並壓縮。
  • zip : 利用 tar + zip 打包並壓縮。
預設值是 'zip' ,當然囉!系統裡要先安裝好 zip 的壓縮程式。
smbwebclient 讓我們可以透過網頁來瀏覽或下載網路芳鄰中的資源、上載檔案、開新資料夾,甚至刪除檔案,就如同在 Windows 中以滑鼠操作即可完成。不過方便歸方便,安全問題應該要特別注意。
特別的玩法
如果 server 中裝的 samba 是 2.x 版,又不想動到原有的 samba,怎樣使用 samba3.x 以後的 smbclient 來解決中文檔名的問題?
下面以 FreeBSD 為例,將測試的過程分享一下。
  • 下載適用於該 OS 版本的 samba3.x package
  • 將 smbclient 解出來,執行
    tar zxvf samba3.tgz bin/smbclient
  • 下載適用於該 OS 版本的 openldap22-client package
  • 將 openldap 的 lib 解出來,執行
    tar zxvf openldap22-client.tgz lib
  • 新增解決中文字用的 smb.conf ,放入底下的內容:
    [global]
    mangling method = hash
    dos charset = CP950
    unix charset = CP950
    display charset = CP950
假設整理完的檔案目錄結構如下:
  • /home/test/smb.conf
  • /home/test/smbclient
  • /home/test/lib
我們可以修改 smbwebclient 中 $cfgSmbClient 來指定新版的 smbclient ,並指定 openldap lib 的路徑,讓它可以正常的執行:
var $cfgSmbClient = 'export LD_LIBRARY_PATH=/home/test/lib/;/home/test/smbclient -s /home/test/smb.conf ';
上面的 export LD_LIBRARY_PATH=/home/test/lib/
讓 smbclient 需要 openldap 的 lib 時可以到我們設定的路徑中去找到。
而 smbclient 的 -s 則可以指定要讀取的設定檔路徑。
經過這樣的處理,smbwebclient 就可以利用 samba3 的 smbclient 來正常的存取中文名稱了。


相關文章





沒有留言:

張貼留言

 
© 2009. Design by Pocket