一. 由Linux向windows提供文件/目錄及打印機共享。 在Linux服務器上的Samba運行起來以後,Linux就相當於一台文件及打印服務器,向windows 和Linux Samba客戶提供文件及打印服務。工作在共享模式或者用戶模式下的兩種方法較為常見(Secu rity=share or Security=user) ,其中有以下常見問題。 環境: Redhat Linux 6.x 1.共享模式時從Windows 98客戶端不能從網上鄰居中看到服務器,或者看到後不能點擊進入 共享資源 說密碼不對等等。 a. 沒有去掉行guest account = pcguest前面的注釋符號 b. 沒有創建guest帳號pcguest (#useradd pcguest即可) c. windows 98默認發送加密的口令,而/etc/smb.conf中沒有enable Samba加密口令。 或者也可以編輯windows 98注冊表,讓它發送文本口令(不被建議的) 2. 在/etc/smb.conf中定義了完全可寫共享目錄,但實際操作時不能寫入。 a. 特別要注意的是:LINUX本身的文件及目錄權限永遠大於SAMBA定義的權限,要讓某共享 資源目錄 可以被寫,首先要保證在LINUX下面該目錄可以被相應的用戶可寫,這是前提。 3.在共享模式下如何對某共享目錄加用戶名及密碼保護? a. 看下面的共享資源定義例子: security = SHARE username map = /etc/smbusers log file = /var/log/samba/log.%m max log size = 50 socket options = TCP_NODELAY client code page = 936 os level = 40 local master = yes preferred master = yes domain master = yes guest account = pcguest encrypt passWords = yes smb passwd file = /etc/smbpasswd [sales] comment = test folder path = /sales/training guest ok = no writable = yes valid users = @sales write list = @sales 在上面的例子中,我們定義了security=share and samba encrypt password,共享目錄名sa les 不是guest用戶可訪問的,需要屬於sales組裡的用戶可訪問同時也可寫,當然在Linux下面要 保證 /sales/training目錄可被組sales可寫,這樣以後 定義你的windows logon(不是NT域登錄)的用戶名為組sales裡的用戶名,然後在網上鄰居 中雙擊 sales時會提示你密碼,該密碼是你在Samba服務器上定義的samba加密的口令,在上面的例子 中 用戶名和密碼對存放在文件/etc/smbpasswd中,當然你事先要有系統用戶名在/etc/passwd中 。 4. windows用戶經常不能在網上鄰居中浏覽到Samba服務器的名字。 a. windows的網上鄰居服務是非常不可靠的服務,它所建立的浏覽列表不可靠,由眾多因素 引起。 b. 一種可靠的解決辦法是直接用‘查找’-‘計算機’-打入samba服務器的主機名進行查找 。 注意要確保你在windows啟動時沒有取消登錄。 c.你也可以在DOS窗口用net use 命令:如c:\ net use m: \\sambaservername\shareresou rcename 5.服務器端的測試配置工具 a. 在配置完/etc/smb.conf後運行testparm檢測配置文件中是否有相應語法錯誤 b. 在Samba服務起來後,用smbstatus報告用戶使用和登錄情況。 c. 在更改過配置文件後,運行/etc/rc.d/init.d/smb restart重讀配置文件 二.在Linux客戶機上使用Linux Samba服務器 1. 在Linux客戶機上使用Smbclient a. 列出計算機192.168.100.1上所有可用的共享資源: smbclient -L 192.168.100.1 如果詢問口令,則直接回車。 也可用名字如: smbclient -L sh3 若不知道sh3的IP地址,也可用 smbclient -L sh3 -I 192.168.100.1 b. 以某用戶身份連接到Samba服務器192.168.100.1上的共享資源sales smbclient //192.168.100.1/sales -U jephe 提示口令後輸入口令,也可把口令打在命令行上用%號分隔 為: smbclient //192.168.100.1/sales -U jephe%password 提示符為smb:\,就象是FTP一樣 也可用名字如: smbclient //sh3/sales -I 192.168.100.1 -U jephe 你也可以用'\'符號,你的SHELL可能會過濾到特殊符號\,則要這樣寫 #smbclient \\\\sh3\\sales 2. 通過IP地址查找netbios名字 a.在windows下用 c:\nBTstat -A 192.168.100.1 如果知道netbios名字,可用下面的命令得知提供某機器哪些服務 c:\nbtstat -a hydra b.在Linux下用 #nmblookup -A 192.168.100.1 在一個網段內可用下面的命令檢測哪些主機在提供samba共享服務: #nmblookup -d 2 '*' or #nmblookup -B 192.168.100.255 '*' 檢測其它網段內的某台機器是否提供samba服務 #nmblookup -A 192.168.15.48 但不能用 #nmblookup -B 192.168.15.255 '*',因為一般的路由器和Linux雙宿主機不轉發子 網直接廣播。 3. netbios over TCP/IP使用的協議及端口號 a. 共有三種netbios服務 netbios-ns 137/udp(大多數) and 137/tcp netbios-dgm 138/udp(大多數) and 138/udp netbios-ssn 139/tcp b.windows機器上的PC應用程序通過不同機器間的netbios名字來彼此通訊。 c. 每次當windows機器啟動時,它向整個網段內發出137/udp廣播,一來登記向某 工作組內的主浏覽器登記netbios名字,二來確信整個子網內沒有與之相同的名字 d. 網上鄰居中所建立起來的浏覽列表僅僅是列表,看不到也沒有關系,同樣也可以通過 計算機查找,net use命令等來與別的計算機通訊,共享文件和打印機 e. 不在同一網段內的機器或者是撥號到LAN上的PPP服務器後不可能進行網上鄰居的浏覽。 這是因為子網內的廣播不被串行線路和路由器轉發。 f. 如何在撥號到LAN上的PPP服務器後使用LAN上的Samba服務器? 在windows目錄下編輯c:\windows\lmhosts 如: 192.168.11.3 sh3 #PRE #DOM:sales 執行nbtstat -R 去enable它,不需要重啟windows 你必須登錄windows,若是用戶模式的samba,你應該選擇windows NT登錄 其它設置跟LAN上的機器一樣 撥號建立連接後,在查找‘計算機’功能定位資源 現在你能使用遠端服務器上的目錄和打印機。 在不同網段內的機器也可參照此做法,也可用plug-gw代理tcp/139號端口訪問另一網段上的 samba 服務器。 4. 用Microsoft FTP 服務器的簡便方法。 ftp.microsoft.com a. 加‘ftp'到lmhosts文件 198.105.232.1 ftp #PRE 運行nbtstat -R b. net view \\ftp c. net use g: \\ftp\data d. dir g: 5. smbmount 的使用 a. #smbmount //192.168.100.1/pub /mnt/sh3 -U jephe%password Jephe Wu