一.由Linux向windows提供文件/目錄及打印機共享。
在Linux服務器上的Samba運行起來以後,Linux就相當於一台文件及打印服務器,向windows和Linux Samba客戶提供文件及打印服務。工作在共享模式或者用戶模式下的兩種方法較為常見(Security=share or Security=user) ,其中有以下常見問題。
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,共享目錄名sales不是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\shareresourcename
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:\n
btstat -A 192.168.100.1
如果知道netbios名字,可用下面的命令得知提供某機器哪些服務:
c:\n
btstat -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服務器?
<1> 在windows目錄下編輯c:\windows\lmhosts.如:
192.168.11.3 sh3 #PRE #DOM:sales
執行nbtstat -R 去enable它,不需要重啟windows。
<2> 你必須登錄windows,若是用戶模式的samba,你應該選擇windows NT登錄。
<3> 其它設置跟LAN上的機器一樣。
<4> 撥號建立連接後,在查找‘計算機’功能定位資源。
<5> 現在你能使用遠端服務器上的目錄和打印機。在不同網段內的機器也可參照此做法,也可用plug-gw代理tcp/139號端口訪問另一網段上的samba服務器。
4.用Microsoft FTP 服務器的簡便方法,ftp.microsoft.com。
a.加‘ftp'到lmhosts文件:
198.105.232.1 ftp #PRE
運行:
nbtstat -R
net view \\ftp
net use g: \\ftp\data
dir g:
5.smbmount 的使用:
#smbmount //192.168.100.1/pub /mnt/sh3 -U jephe%password