歡迎您光臨本站 註冊首頁

如何架設Samba伺服器,用user共享方式?

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
作者:北南南北
來自:www.linuxsir.com

在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的主機名也就是netbios name中定義的共享名.這樣說可能新手弟兄不太懂.我說的也不太專業.呵...請仔細看本帖中的\linsir01win02類似的,還有\linsir01share;\linsir01win03之類的.

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就會出現一個提示框[SWAT@127.0.0.1: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 account 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了.


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)
ADMIN$ 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_ACCESS_DENIED

Server Comment
--------- -------
LINUXSIR02
LINUXSIR03

Workgroup Master
--------- -------
MSHOME LINUXSIR03

具體說明的是什麼,如果您不理解,請查看man或者其它資料.以後我在此文件中慢慢的補充吧..


2.我們在windows的網路鄰居上.添加網路鄰居.前提是要以win02用戶在windows機器上登入.然後....



在網路鄰居的位置中輸入\linsir01win02.這樣就行了...

win03呢.也是一樣的...也必須在windows機器上以win03登入.

輸入用戶名和密碼就行了,下次,我們再登錄查看時,就不再需要輸入用戶名和密碼了,這是在win2000里的;如果在win98中,因為系統只是提示密碼.如果用戶名和密碼和linux上機器的win02或者win03的用戶對不上,就沒有辦法登入.當然windows 98的用戶win02想查看linux機器win02的文件夾的內容,在windows下必須以win02登入.

訪問linux的share文件夾呢,我們也一樣這樣在網路鄰居中輸入

\linsir01share

這個咱們在前面已經說過了,作何人都有讀寫以及執行的許可權.也就是說完全共享的.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
多后就是點幾下滑鼠,設置一下就行了.試一下也沒有什麼難的.

可能前面寫的不太嚴謹,有可能有的地方不太對.請大家指正.我也會隨時修改本帖.

多謝.


[火星人 ] 如何架設Samba伺服器,用user共享方式?已經有385次圍觀

http://coctec.com/docs/linux/show-post-56519.html