一點理論: 在Windows 中,我們都知道網絡 鄰居,是Windows 共享資源的方式。Linux寫Windows 互訪與共享資源的方式是利用Samba服務,其實我覺得它更象一個軟件。Windows 與Linux通過Samba,可以相互共享資源,是互為服務器和客戶端的關系。比如當裝有Windows
一點理論: 在Windows中,我們都知道網絡鄰居,是Windows共享資源的方式。Linux寫Windows互訪與共享資源的方式是利用Samba服務,其實我覺得它更象一個軟件。Windows與Linux通過Samba,可以相互共享資源,是互為服務器和客戶端的關系。比如當裝有Windows操作系統的機器,向裝有
Linux系統的機器存取文件,那Windows應該是客戶機,而Linux則是服務器;如果Linux的機器向Windows訪問和存限文件及使用Windows提供的打印服務,這時應該說Windows是服務器,而Linux是客戶機。
注意的事項: 1。如果在windows下不能加入linux的共享,可能出現在帳戶上,要在linux和window的機器上都要建一個相同的用戶,密碼也要一樣。否則不能訪問。
2。如果在windows的網絡鄰居中,有時可能不會發現linux的共享。我們要自己在添加網絡鄰居中加上。要以\\linux的samba的主機名也就是netb
ios name中定義的\共享名。這樣說可能新手弟兄不太懂。我說的也不太專業。呵。。。請仔細看本帖中的\\linsir01\win02類似的,還有\\linsir01\share;\\linsir01\win03之類的。
3。要在windows加上相關的協議;添加網絡協議,把IPX/SPX以及NETBEUI兩個協議加入。
操作環境:三台機器,兩台win2000;一台是RH80.
一、查看是否Samba在系統中被安裝了;這也是安裝其它軟件的操作步驟:注:以root登入,或者以root權限執行;
#rpm -qa | grep samba
samba-2.2.5-10
samba-swat-2.2.5-10
samba-common-2.2.5-10
samba-client-2.2.5-10
如果沒有出現上面的三個安裝包,我們就要在盤中把這些包找出來安裝上;把光盤中凡是帶有samba的都找出來,放到linux的一個臨時的文件夾中。比如我們臨時放到/tmp目錄裡。
然後執行:
#rpm -ivh samba*.rpm --nodeps --force
二、然後我們判斷一下,是否samba服務已經啟動,如果沒有,我們就得打開。
一般說來,在系統默認的情況下,samba是不會啟動的。但我們也應該懂得如何查看此服務是否啟動了,這也是我們的一個操作的流程吧。使用查看進程命令:
#ps -aux | grep smb
在這裡,我們要說明一點,為什麼我們不用#ps -aux | grep samba命令呢,在下文可能就明白了,現在能記住就好了。不為什麼,因為系統的服務就是smb,而非samba,samba只是一個名字而已。
如果用查看進程的命令,出現了第二行的樣子。就是已經把samba服務打開了,如果沒有出現,就是沒有打開。
#ps -aux | grep smb
root 1719 0.0 0.3 4916 1820 ? S 08:21 0:00 smbd -D
root 1849 0.0 0.1 4776 628 pts/1 S 08:48 0:00 grep smb
三、打開samba服務;
如果我們沒有打開samba服務,我們應該用以下兩種方法來打開,系統服務,一般打開方式都是如此。
1.用setup命令來打開,在#setup執行下去的時候,有個System serverices,然後移動鍵盤的上下鍵來選定[System serverices]項,然後把smb和swa兩項前面加個*號,表示已經選中了,意思就是自動啟動這兩個服務。或者用更直接的辦法用命令進入[System serverices]的選擇框中。
以上解釋中用到的兩個命令是:
#setup
或
#ntsysv
以這種方式,只是打開,但如果不重新啟動,samba的服務也不能運行,我們還要用命令來執行,讓機器不重新啟動的情況下把samba服務執行起來,一般的情況下,我們要操作的samba的命令都在/etc/rc.d/init.d/目錄裡,要用下面的方式來運行。
# /etc/rc.d/init.d/smb start
用了上面的命令,如果能看到下面的提示,就證明已經把samba啟動了。
啟動 SMB 服務: [ 確定 ]
啟動 NMB 服務: [ 確定 ]
當然也可以用下面的方式,只是多了一步,不過進入/etc/rc.d/init.d/目錄看一下也好,看裡面都有什麼,凡是我等菜鳥,也不能不看一下。
#cd /etc/rc.d/init.d/
然後再執行
#./smb start
然後了,那如何把samba的服務停下來呢?那就stop;如何重啟samba服務器,那就restart了
如果是在/etc/rc.d/init.d目錄中,我們就要執行
#./smb stop
#./smb restart
如果不在/etc/rc.d/init.d目錄中,我們就要這樣執行,上面已經有說過了。
# /etc/rc.d/init.d/smb stop
# /etc/rc.d/init.d/smb restart
2.運行如下的命令也有在X下打開
#redhat-config-services
然後也是選中smb和swat,然後保存一下。這個比較簡單。如果您在smb這項,選中後,然後就點一下開始。這樣就把smb服務打開了。
把服務打開了也啟動起來了,我們還是要用查看進程命令來查看一下,samba服務是否在運行了。
#ps -aux | grep smb
如果還是沒有下面這行,我覺得不太可能了。呵。。。。。
root 1719 0.0 0.3 4916 1820 ? S 08:21 0:00 smbd -D
設置samba的配置文件 1.圖形化的配置工具swat;
打開mozilla,或者konqueror以及gnome下的文件管理器,總之無論如何打開文件管理器就行了。在地址欄中輸入
127.0.0.1:901就會出現一個提示框[
[email protected]:901]
在用戶名下輸入root用戶名和密碼就能進入圖形置置界面了,這個比較簡單。
1]點一下[Global]那項,就出來一個讓我們設置的選項。我們只要簡單的設置一下這些就行了,如果您對samba不太了解,建議不要改其它的東西。如果您按我在前面說的做,把smb.conf
文件有備份,那您改就改吧。。哈。。錯了也沒有什麼,我們再恢復一下就OK了。。
Base Options
client code page 936 這樣就能顯示簡體中文了用戶組名。
[workgroup]這一項,就是在網絡鄰居中[Windows的稱呼]中的工作組的名稱,這一項我用的是MSHOME,因為我把其它的兩台電腦也設置在了這個工作組。
[netbios name]這是出現在網絡鄰居中的主機名,我設置的linsir01,采用默認也行。出現的是Linux真正的主機名。
[security],設置為user
[encrypt passwords]設置為yes
2]點一下[shares],也看一下吧。這個也是比較重要的,我還是主要說幾點要注意的。其實我們在局域網中用到的都比較簡單的功能。簡單的設置一下就行了。
點一下[choose share],有一個是[homes]的選項吧。點一下。。。然後。。。。看過來。。看一下和下面的差不多就行,其實不用改什麼,了解一下就行。。
comment 這個選項可以不寫
path 也可以不寫
guest a
clearcase/" target="_blank" >ccount nobody 默認就行。
valid users %S
read only Yes
guest ok No
3]creat share 這一項就是要我們創建共享目錄以及個人目錄的,可能有的弟兄有點不解,為什麼這樣說呢??一步一步的來。。。。。
A。我們創建一個win02,在[ceate share]那個按鈕的邊上,有個空格。呵。。。可能您知道了吧,寫個win02,然後按一下[create share]
comment win02
path /home/win02
username win02
guest accoun nobody
valid users win02
read only No
guest ok No
browseable Yes
available Yes
B。以相同的辦法創建win03,目錄也為/home/win03
C。然後我們再創建一個所有用戶都能看共享的目錄,也就是說,所有的用戶都能寫入,讀取,執行。我就是把這個目錄用來做windows機器軟件安裝的基地了。哈。。。
我們還是按照上面步驟A的樣子,在[create share]上輸入share, 對於名字來說,我們還是不要用太長的,否則
測試通不過,可能是最多只有8個字節,所以我就用最簡單的了。點到為止。
comment win and linux share
path /share
guest accoun nobody
read only No
guest ok Yes
browseable Yes
available Yes
這樣就行了。。。
關於打印方面的,以linux的機器上的打印機,還是大家一起來研究吧。我安裝成功了,可是windows打印東西,總是出亂碼。所以在這裡我就不說如何設置了。我成功了,再補充。
4]測試配制文件是否正確
[root@linuxsir01 root]# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[share]"
Processing section "[win03]"
Processing section "[win02]"
Loaded services file OK.
Press enter to see a dump of your service definitions
如果出現上面樣子的,就差不多了,如果有警告之類的,可能問題出現在[share]那一步中,可能名字太長了,不要超過8個字節。否則通不過
5]重新啟動smb
[root@linuxsir01 root]# /etc/rc.d/init.d/smb restart
關閉 SMB 服務: [ 確定 ]
關閉 NMB 服務: [ 確定 ]
啟動 SMB 服務: [ 確定 ]
啟動 NMB 服務: [ 確定 ]
如果不成功,再試一下,或者找一下配制文件方面的問題。
四。創建議系統的用戶和密碼,以及smb的密碼 1.創建系統用戶
[root@linuxsir01 root]# useradd win02
[root@linuxsir01 root]# useradd win03
2.創建系統用戶的密碼
[root@linuxsir01 root]# userpasswd win02
然後就是輸入密碼了。。。這個應該簡單,沒有什麼難度才對。比如我們用oTimsinm
[root@linuxsir01 root]# userpasswd win03
這個也是一樣的。。
創建win02的win03的用戶名在smb的密碼 1]生成密碼文件
[root@linuxsir01 root]# cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd
2]更改密碼文件,我們要把除了win02與win03以外的用戶全都刪除。只留win02和win03兩行。
3]創建win02的win03用戶的smb密碼,密碼要與創建系統用戶名的密碼一樣。比如我們上面說的oTimsinm。
[root@linuxsir01 root]# smbpasswd win02
New SMB password:在這裡輸入oTimsinm
我們用同樣的方法創建win03的smb密碼。
以下的工作就差windows機器的設置了,這也比較簡單。
4]我們改變一下/share目錄的權限。讓所有的用戶都可以讀寫和執行
[root@linuxsir01 root]# chmod 777 /share
當然這是不
安全的作法,如果想限制一下權限,您可以試一下,就明白了。。。
windows機器的設置 1]創建windows下的用戶和密碼。
因為我們在[Global]中設置的是user共享方式 ,也就是說,要用windows用戶名來驗證。說明白一點就是windows的必須設置一個與linux機器上完全相同的用戶,密碼也必須一致。
這種方式就是samba密碼服務驗證,我們在前面已經為win02和win03在linux的服務器上創建了系統用戶名和密碼,也創建了smb的密碼。所以我們在這步中也要在windows機器上創建win02和win03兩個用戶。我這樣說,也不知道能不能說明白,工作組,我們也用MSHOME吧。
在windows機器上創建win02和win03兩個用戶。如果有兩台機器windows機器,那就太好了,一台一個。呵。。。。密碼還和在linux機器上的win02與win03一樣。
切記,否則通不過驗證。計算機其實很聽話,一步一步的來就OK了。
s
2]在windows的機器上,添加網絡協議,把IPX/SPX以及NETBEUI兩個協議加入。這個應該更簡單。。。
3。把windows機器上的磁盤或者文件夾共享。這也比較簡單。
在linux的機器上操作下面的命令,查看一下每台機器的 1.咱們先查看一下linux服務器的smb的情況。最好用IP來查看。。。。
[root@linuxsir01 root]# smbclient -L 192.168.0.1
added interface ip=192.168.0.1 bcast=192.168.0.255 nmask=255.255.255.0
added interface ip=192.168.0.2 bcast=192.168.0.255 nmask=255.255.255.0
Password:在這裡,我們按兩下回車就行了。。不要添什麼密碼。
Anonymous login successful
Domain=[MSHOME] OS=[
Unix] Server=[Samba 2.2.5]
Sharename Type Comment
--------- ---- -------
homes Disk Home Directories
share Disk win linux share
epsonc40 Printer
win03 Disk
win02 Disk win02 home
IPC$ IPC IPC Service (Samba Server)
AD
MIN$ Disk IPC Service (Samba Server)
Server Comment
--------- -------
LINSIR01 Samba Server
LINUXSIR02
Workgroup Master
--------- -------
MSHOME LINSIR01
如果在linux的機器上看到最下面一行,可能就有點不對了。因為共享中沒有我們在[Global]中設置的LINSIR01,所以共享一般不會成功。
下面這個我是查看一台windows的機器情況;
[root@linuxsir01 root]# smbclient -L 192.168.0.8
added interface ip=192.168.0.1 bcast=192.168.0.255 nmask=255.255.255.0
added interface ip=192.168.0.2 bcast=192.168.0.255 nmask=255.255.255.0
session request to 192.168.0.8 failed (Called name not present)
session request to 192 failed (Called name not present)
Password:
Anonymous login successful
Domain=[MSHOME] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]
Sharename Type Comment
--------- ---- -------
Error returning browse list: NT_STATUS_A
CCESS_DENIED
Server Comment
--------- -------
LINUXSIR02
LINUXSIR03
Workgroup Master
--------- -------
MSHOME LINUXSIR03
具體說明的是什麼,如果您不理解,請查看man或者其它資料。以後我在此文件中慢慢的補充吧。。
2.我們在windows的網絡鄰居上。添加網絡鄰居。前提是要以win02用戶在windows機器上登入。然後。。。。
在網絡鄰居的位置中輸入\\linsir01\win02。這樣就行了。。。
win03呢。也是一樣的。。。也必須在windows機器上以win03登入。
輸入用戶名和密碼就行了,下次,我們再登錄查看時,就不再需要輸入用戶名和密碼了,這是在win2000裡的;如果在win98中,因為系統只是提示密碼。如果用戶名和密碼和linux上機器的win02或者win03的用戶對不上,就沒有辦法登入。當然windows 98的用戶win02想查看linux機器win02的文件夾的內容,在windows下必須以win02登入。
訪問linux的share文件夾呢,我們也一樣這樣在網絡鄰居中輸入\\linsir01\share
這個咱們在前面已經說過了,作何人都有讀寫以及執行的權限。也就是說完全共享的。windows或者linux的用戶,無論誰都有權限操作這裡的任何文件。
那linux的機器如何查看windows機器上的共享文件呢。有時間我再來寫一下,不過還是用下面這個軟件比較方便。。
LinNeighborhood-0.6.2-1.i386.rpm
這個包,是我在Redhat 8.0 下編譯的。在Redhat下應該沒有任何問題。
下載後,解壓和安裝
#tar zxvf L*.tar.gz
#rpm -ivh LinNeighborhood-0.6.2-1.i386.rpm
運行命令,應該是
#LinNeighborhood
多後就是點幾下鼠標,設置一下就行了。