區域網路上Linux與Win 98資源共享
有些Linux開發設計人員更習慣Win 9x中的編輯環境,每次編完程序後要把程序FTP到伺服器端再進去行測試,如果有問題就要改完再FTP過去,這樣很麻煩,如果能像Win 98組織的區域網路那樣可以輕易地從網路芳鄰實現資源共享就太方便了。為實現Linux和Win 98之間的資源共享,Linux提供了一套資源共享程序Samba,它不但適用於區域網路,也適用於雙機對接的對等網,這就為編程和系統測試提供了方便。但它也有一定的局限性,它不允許系統root從Win 98訪問Linux,只能以普通用戶的身份進行訪問,通過這種方法新增的文件和路徑只具有644(rw-r--r--)權限,也就是其他人只能讀不能寫,這雖有利於系統安全,但不利於文件的完全共享。
一、Linux端的設定
Samba的執行與以下幾個文件的配置有關:
1./etc/services
……
netbios-ns 137/udp
……
netbios-ssn 139/tcp
……
2./etc/inetd.conf
這個文件用於載入系統啟動時要執行的一些後台程序,Samba可以通過這個文件來啟動,但要有下面這兩行:
netbios-ssn stream tcp nowait root /usr/sbin/smbd smbd
netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd
inetd.conf文件格式如下:
〈服務類型〉 〈sock類型〉 〈傳輸協定〉 〈標識〉 〈用戶〉 〈服務程序路徑〉 〈參數〉
但有些Linux的啟動方法是使用/etc/rc.d/rc. Samba或/etc/rc.d/rc.local來啟動,所以/etc/inetd.conf中的上面兩行被(用#)註釋掉了或根本沒有這兩行(RedHad 6.0中就沒有這兩行)。
3./etc/rc.d/rc.samba或/etc/rc.d.rc.local
這是Samba的真正啟動位置,在其中加入下面幾行:
if [ -f /usr/sbin/smbd -a -x /usr/sbin/nmbd ] ; then
/usr/sbin/smbd -D
/usr/sbin/nmbd -D
fi
說明:-f 參數表示先判斷文件是否存在,如果存在則執行下面的語句。
4./etc/lmhosts
它的功能和/etc/hosts相似,是用來把一台電腦和其名稱對應起來的,文件的格式是:
IP位址 電腦名稱
例如:
127.0.0.1 server
192.168.0.22 lkch
5./etc/smb.conf
這是Samba資源共享的設定文件,包括兩部分:Global Setting、Share Defination,其中「#」註釋說明部分,「;」註釋配置內容,具體設定方法見表1。
這個文件配置好後用戶可以用下面的指令測試一下配置參數是否正確:
shell〉testparm
Load smb config files from /etc/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[apache]"
Processing section "[data]"
Loaded services file OK.
Press enter to see a dump of your service definitions
……
用戶也可以用下面的指令察看資源共享的情況:
shell〉smbclient -L localhost
Domain=[SERVER] OS=[Unix] Server=[Samba 2.0.3]
Sharename Type Comment
------ ---- --------------------
apache Disk Temporary file space
data Disk Temporary file space
IPC$ IPC IPC Service
(Samba Server)
Server Comment
--------- -------
SERVER Samba Server
Workgroup Master
--------- -------
MIIPTISI PTSNPDC
PTISI PTISIPDC
除了上述的兩個程序外,還有一些有用的程序:
smbstatus:顯示Samba Server 的連接狀態。
smbpasswd:改變Samba Server的用戶密碼。
smbmount:Samba文件系統裝載程序,它使Linux可以使用Win 98的共享資源,但是只能使用在lmhosts文件中指明的電腦的共享資源。而且在不同版本的Linux中這條指令的語法還有些差別,如在Redhat Linux6.0中為
Shell〉 smbmount "\\\\lkch\\lkch" -c 'mount /mnt/lkch'
Added interface ip=192.168.0.3 bcast=192.168.0.255 nmask=255.255.255.0
Server time is Tue Apr 4 00:21:08 2000
Timezone is UTC-4.0
security=share
注意:因為在Linux中「\」是轉意字串,因此字串串中「\\」表示實際的「\」,-c參數表示執行獨立的系統指令。
smbumount:Samba文件系統卸載程序。
Shell〉smbumount /mnt/lkch
*捷徑*
如果您和我一樣不喜歡在配置文件上改來改去,那麼在RedHat中給您提供了一種很好的方法來配置Samba服務,執行netconf(它是Linux進行網路配置的程序)。在圖1界面中選項Samba File Server,在圖2中default是基本共享設定,Default setup for users's home是用戶主目錄共享設定,Default setup for printers是列印機設定,Disk shares是共享目錄設定,每一項設定基本相同,只要根據其要求填寫即可(見圖3)。設定完畢後返回界面,設定生效。
二、Win 98端的設定
1.網路設定
用滑鼠右鍵點網路芳鄰,選「屬性內容」就會彈出圖5所顯示的視窗,增加網路橋接器→網路卡驅動程式;增加Microsoft TCP/IP傳輸協定,在Linux中幾乎一切網路通訊都要用到TCP/IP傳輸協定;然後再增加NetBEUI,這是Win 98系統中實現資源共享必不可少的傳輸協定;要實現文件和列印機的共享,還要增加文件和列印機的共享服務。必要的傳輸協定和服務增加完後,重新啟動電腦使設定生效。
2.Win 98註冊表的更改
在HKEY_LOCAL_MACHINE\
System\CurrentControlSet\
Services\VxD\VNETSUP中增加一個鍵名為EnablePlainText
Password、類型為DWORD的主鍵,鍵值設為1,重新啟動電腦使設定生效。這樣設定後,當用戶從網路芳鄰訪問 Linux時,Linux就會把Win 98的登入用戶名、密碼作為系統用戶來驗證,通過則可以訪問,否則拒絕訪問。為此還要做下面的設定。
3.Win 98用戶名密碼的設定
Win 98登入的用戶名和密碼必須與Linux中的用戶名密碼相一致,換句話說就是要在Linux中增加一個用戶,它的用戶名和密碼與Win 98的相同。
做了上面的設定後,Win 98就可以從網路芳鄰訪問Linux的共享資源了。
表1
#====Global Setting====
[global]
workgroup = groupname #指定工作組
serverstring = Samba Server #SambaServer的說明
hosts allow = 192.168.0. 192.168.1. #允許訪問Samba Server的用戶的IP位址
guest account = guest #Samba Server 的guest在Linux系統中的用戶名為:guestx
guest ok = yes #允許用戶以guest 身份訪問Samba Server
log file = /var/log/samba/log.%m #log文件的記錄位置是/var/log/samba/,檔案名是log.用戶名
security = user #安全級別
; password server = PTSNPDC #指定密碼驗證主機,如果這一項有效,security必須設定為server
#==== Share Definitions ====
[homes]#用戶的主目錄,共享給用戶自己使用
comment = Home Directories
browseable = no #其他用戶不可以瀏覽
writable = yes #用戶自己可寫
[apache]#共享內容
comment = Share file space
path = /usr/local/apache/htdocs #共享路徑
valid users = zypan lkch zcx zjian zhaoxinxin shengw #允許訪問這一路徑的用戶
read only = no #是否只讀
public = yes #是否共享
[printers]
comment = All Printers
path = /var/spool/samba #列印機貯列,用戶需自己建立目錄
browseable = no
guest ok = no 是否讓guest帳號使用
writable = no
printable = yes
|