Samba服務器的安裝配置和應用

 

        分類:            Linux2006-08-28 21:1218714人閱讀評論(1)收藏舉報
隨着計算機網絡的發展,實現不同操作系統的文件和打印共享成爲一個必然的趨勢。用過Windows的用戶都知道,網上鄰居是一個可以方便地訪問其他Windows計算機資源的共享方式。爲了使Windows用戶以及Linux用戶能夠互相訪問彼此的資源,Linux提供了一套資源共享的軟件——Samba服務器。
4.1 SMB協議和Samba簡介
4.1.1 SMB協議
爲了使Windows 主機間的資源能夠共享,微軟於1980年開發了SMB(Server Message Block)通信協議,並通過SMB通信協議,使網絡上各臺主機之間能夠共享文件、打印機等資源。目前類似這種資源共享的通信協議還有NFS、Appletalk、Netware等。
4.1.2 Samba簡介
這些年來,Windows 和Linux 操作系統各自擁有自己的用戶羣和市場。然而在一般的公司或學校裏,可能同時有Windows 和Linux 操作系統的主機。Windows 主機彼此間可利用“網上鄰居”來訪問共享的資源,NFS也能使Linux 主機之間實現資源共享。但如何能使Windows 主機和Linux主機之間實現資源共享呢?
微軟的“網上鄰居(就是Windows 上利用SMB通信協議實現資源共享的程序)”一經推出,便廣受用戶的好評,大家突然覺得原來要在網上共享資源盡是那麼簡單,有鑑於此,便有一些Linux 愛好者開始在Linux 主機上實現SMB通信協議,後來這個實現了SMB功能的軟件既被稱爲 Samba ,它使得Windows 主機和Linux主機之間實現了資源共享。
4.1.3 Samba軟件的功能
由於SMB通信協議採用的是Client/Server架構,所以Samba 軟件可以分爲客戶端和服務器端兩部分。通過執行Samba 客戶端程序,Linux 主機便可以使用網絡上Windows 主機所共享的資源;而在Linux 主機上安裝Samba 服務器,則可以使Windows 主機訪問Samba 服務器共享的資源
Samba 提供了以下功能:
(1)共享Linux 的文件系統
(2)共享安裝在Samba 服務器上的打印機
(3)使用Windows 系統共享的文件和打印機
(4)支持 Windows 域控制器和Windows 成員服務器對使用Samba 資源的用戶進行認證
(5)支持WINS名字服務器解析及瀏覽
    (6)支持SSL安全套接層協議

4.2 安裝和啓動Samba

Samba 軟件安裝在Linux 一端。目前主要由一個20人左右的Samba 團隊負責維護及開發,用戶可以在http://www.samba.org/站點獲得Samba的詳細信息。同時,也可以在網頁上下載Samba 的最新版本

4.2.1 安裝Samba服務器

如果用戶在安裝Linux 時已經安裝了Samba ,就無需再安裝了可以通過下列命令確定是否已經安裝了Samba 。

[root@ smb_server  root]# rpm  –qa | grep  samba

samba-commom -2.2.7a-7.9.0

samba-2.2.7a-7.9.0

samba-client-2.2.7a-7.9.0

redhat-config-samba-1.0.4-1

samba-swat-2.2.7a-7.9.0

若出現這5個軟件包,則表示已經安裝了Samba ,否則必須安裝Samba 。

[root@smb_server  root]# mount  /dev/cdrom  /mnt/cdrom  

將光盤掛載到 /mnt/cdrom目錄]

[root@smb_server  root]# cd  /mnt/cdrom/RedHat/RPMS 

切換到放置rpm文件的目錄

[root@smb_server  root]# rpm  -ivh samba-commom -2.2.7a-7.9.0i386.rpm

這是Samba 必備的程序,必須安裝

[root@smb_server  root]# rpm  -ivh samba-2.2.7a-7.9.0.i386.rpm

安裝Samba 服務器程序,可以使我Windows 主機訪問Samba 服務器共享的資源。

如果需要使Linux 主機訪問Windows 主機上的共享資源,則還應該安裝Samba 客戶端程序。

[root@smb_server  root]# rpm  -ivh samba-client-2.2.7a-7.9.0.i386.rpm

4.2.2 Samba的全局參數的配置

Samba最主要的配置文件是 /etc/samba/smb.conf,其中有很多選項可以設置,但作爲初學者,只需要掌握其中一小部分選項的設置就可以配置所需要的Samba服務器了。在瞭解基本配置的基礎上,就能很快架設一個基本的Samba服務器。在基本配置文件中,也只用到其中一小部分命令選項。

全局參數的配置在[global]字段中,沒有出現(或被註釋)的參數,Samba 採用的是默認配置。

# This is the main Samba configuration file. You should read the

# smb.conf(5) manual page in order to understand the options listed

# here. Samba has a huge number of configurable options (perhaps too

# many!) most of which are not shown in this example

#================== Global Settings ============================

[global]

#這是配置文件中關於全局參數的設置部分。

…………

   workgroup = SMBGROUP

#這是設置服務器所要加入的工作組的名稱,會在Windows 的“網上鄰居”中能看到MYGROUP工作組,可以在此設置所需要的工作組的名稱。

netbios name=smb-server

#設置出現在“網上鄰居”中的主機名。默認情況下,則使用真正的主機名。

   server string = Samba Server

#這是設置服務器主機的說明信息,當在Windows 的“網上鄰居”中打開Samba 上設置的工作組時,在Windows 的資源管理器窗口,會列出“名稱”和“備註”欄,其中“名稱”欄會顯示出Samba服務器的NetBios名稱,而“備註”欄則顯示出此處設置的“Samba Server”。當然,可以修改默認的“Sambe Server”,使用自己的描述信息。

hosts allow = 192.168.1. 127

#這裏是設置允許什麼樣的IP地址的主機訪問Samba服務器。默認的情況下,hosts allow選項被註釋,表示允許所有IP地址的主機訪問。

  guest account = pcguest

#設置當訪問那些被設置了“guest ok=yes”參數的資源時所要使用的帳號名。默認的帳號爲”nobody”,如果不想用默認的值,則應該去掉註釋用的分號,用你想要的帳號(如pcguest、 zhangsan等 ),然後,你必需將這一新帳號加入到/etc/passwd文件中去。

client  code  page=950

設置客戶端訪問Samba 服務器時所使用的字符編碼表(code page),默認值爲850,如果Samba 服務器要使用年中文名稱來來命名共享的資源,要將此值改爲950

log file = /var/log/samba/%m.log

#這一選項要求Samba服務器爲每一個連接的機器使用一個單獨的日誌文件,指定文件的位置,名稱。Samba會自動將%m轉換成連接主機的NetBios名。

   max log size = 0

指定日誌文件的最大容量(以KB爲單位),設置爲0,表示沒有限制。默認值爲5000。

max disk size =1000

#設置能夠共享的最大磁盤空間,單位爲MB,默認值爲0,表示不作任何限制。

max open file =100

#設置同一客戶端最多能打開文件的數目,默認值爲10000個。

   security = user

#設置Samba服務器的安全等級。默認情況下,使用user等級。

#Samba服務器一共有四種安全等級。

share: 使用此等級,用戶不需要帳號及密碼可以登陸Samba服務器。

user:  使用此等級,由提供服務的Samba服務器檢查用戶帳號及密碼。

server: 使用此等級,檢查帳號及密碼的工作可指定另一臺Samba服務器負責。

domain: 使用此等級,需要指定一臺Windows NT/2000/XP服務器(通常爲域控制器),以驗證用戶輸入的帳號及密碼。

;   password server = <NT-Server-Name>

#如果安全等級爲“server”或“domain”,則使用此選項指定要驗證密碼的主機名。

  password level = 8

  username level = 8

#設置當驗證用戶口令和帳號時最多允許幾個大小寫字不同。默認值爲0。

   encrypt passwords = yes

#設置當Samba客戶端將帳號及密碼傳送到服務器端時,是否採取密碼加密的方式。客戶的操作系統如果是Windows 95 OSR2 及NT SP3以後的版本,應該將此選項的值設爲yes,默認值爲no。

   smb passwd file = /etc/samba/smbpasswd

#設置在Samba服務器上存放加密的密碼文件的位置(注意:Samba服務器與Linux採用不同的密碼文件)。

4.2.3 設置Samba密碼文件

smb.conf 文件中有“smb password file =/ect/samba/smbpassword”一行設置項,現在就要創建該設置項所指定的/ect/samba/smbpassword密碼文件(若是用Windows NT/2000Server 來驗證密碼,則可以跳過此段內容)。以root帳號登錄,然後按下列步驟進行:

[root@smb_server  root]#cat /etc/passwd | mksmbpasswd.sh  >  /etc/samba/smbpasswd

[root@ smb_server  root]# chmod  500  /etc/samba

[root@ smb_server  root]# chmod  600  /etc/samba/smbpasswd

此步驟是將未加密的/etc/passwd文件轉換成加密的smbpasswd文件。基於保密的原則,將/etc/samba目錄的權限設爲500,該文件的權限設爲600,以避免他人取得密碼文件。

完成之後再利用smbpasswd命令,設置/ect/samba/smbpassword文件中每個帳號所使用的密碼。(下面以fred爲例。注意:此處設置的密碼是fred要訪問Samba服務器的密碼,並非登錄Linux 主機的密碼,默認設置”UNIX password  sync=YES”, 則登錄Linux 主機的密碼將改變,與Samba服務器的密碼一致,如果希望這兩個密碼不一致,則設置”UNIX password  sync=NO”)

[root@smb_server  root]# smbpasswd fred

New SMB password: 此處輸入密碼

Retype SMB password: 重新輸入密碼

Password  changed  for user  fred  看到這一句表示密碼設置成功。

4.2.4 啓動Samba服務器

可以執行下面的命令來啓動Samba服務器:

[root@ smb_server  Root]#   service smb start

當能看到下面的顯示,就表示啓動成功。

Starting  SMB  service          [確定]

Starting  NMB  service          [確定]

如果要暫停或重新啓動Samba服務器,只要將上面命令中的start 改爲stop或restat就可以了。

也可以讓系統在每次開機時就啓動Samba服務器。執行ntsysv命令,進入Service設置畫面,選擇smb選項,單擊確定即可。

4.2.5 測試Samba配置文件

設置好smb.conf文件之後,執行下面的命令測試smb.conf的設置語法是否正確。

[root@smb_server  root]#  testparm

Load smb config files from /etc/samba/smb.conf

Processing section "[homes]"

Processing section "[printers]"

Processing section "[tmp]"

Processing section "[public]"

Processing section "[fredsdir]"

Loaded services file OK.

Press enter to see a dump of your service definitions

表示正確。

檢查正常後,一定要記得執行

[root@smb_server  root]#   service smb  restart

命令,重新啓動Samba服務器。

4.3 配置Samba 文件共享

完成了全局環境的設置之後,可以設置共享的資源(包括共享的文件和打印機)了。先來介紹如何配置Smb.conf,實現文件的共享。

4.3.1 設置共享資源參數

   comment

#針對共享資源所作的說明、註釋部分

  browseable

#設置用戶是否可以看到此共享資源。默認值爲yes,若將此參數設置爲no,用戶雖然看不到此資源,但是擁有權限的用戶仍可直接輸入該資源的網址來訪問該資源。

  writable

#設置共享的資源是否可以寫入。若共享資源是打印機,則不需設置此參數

#設置可訪問的用戶。系統會自動將%S轉換成登錄帳號。

   create mode

# 設置文件的訪問權限,默認值爲0744。

   directory mode

設置目錄的訪問權限,默認值爲0755。

path

#若共享資源是目錄,則指定目錄的位置;若爲打印機,則指定打印機隊列的位置。

read only

#設置共享資源是否只讀或可以寫入,默認值爲yes。若共享資源爲打印機時,此參數無任何意義。這一項與writable相反。

Public

#等同於guest ok選項,表示是否允許用戶不使用帳號和密碼便能訪問此資源。如果起用此功能,當用戶沒有帳號和密碼時,則會利用“guest account=”所設置的帳號名登錄。該選項默認值爲no,即不允許沒有帳號即密碼的用戶使用此資源。

avalible

#設置是否啓用此共享資源。默認值爲yes。若將此參數設置爲no,則不管其他參數設置爲什麼,所有人均不得使用此資源。

valid users

4.3.2 配置Samba文件共享舉例

以下通過配置3個不同的共享目錄爲例,可以知道配置Samba文件共享的一般方法。

[global]

…………

#採用前面的[global]配置

[homes]

#用來配置用戶訪問自己的目錄

   comment = Home Directories

#註釋

   browseable = no

#用戶私人目錄,不給別人瀏覽(並不是不允許別人訪問)

   writable = yes

#允許用戶寫入自己的目錄

   valid users = %S

#可訪問的用戶侷限於用戶自己。%s會被自動轉換爲登錄帳號。

  create mode = 0664

#文件的訪問權限

   directory mode = 0775

#目錄的訪問權限

# This one is useful for people to share files

[tmp]

#這個部分爲所有用戶提供臨時共享的方式

   comment = Temporary file space

#註釋文字

  path = /tmp

#指定位置 

read only = no

#可以讀寫 

public = yes

#允許用戶不用帳號和密碼訪問

[public]

#  這個部分爲所有用戶提供可以共同訪問的目錄。允許staff組用戶寫入,但其他用戶只可訪問,不能寫入。

comment = Public Stuff

   path = /home/samba

   public = yes

   writable = yes

   printable = no

   write list = @staff

# write list參數是用來設置具有寫權限的用戶列表。這裏只允許staff組的成員有寫的權限

[fredsdir]

#這個部分用來設置某一用戶fred的訪問權限。

  comment = Fred’s Service

  path = /usr/fred/private

  valid users = fred

#只有fred可以訪問(注意:即使security=share,也不代表用戶登錄Linux 主機後可以訪問任意資源。)該共享目錄

  public = no

  writable = yes

  printable = no

說明:配置文件修改後,要重新用testparm測試配置文件,重新啓動Samba 服務器程序。

4.3.3 使用共享的目錄

現在以Windows 2000爲例,介紹fred 用戶如何讀取Linux 所共享的資源。

1.以fred帳號登錄Windows ,然後在“網上鄰居” 中找到前面所設置工作組smbgroup。如圖4-1所示

                            圖4-1

2.雙擊工作組smbgroup圖標,將看到Samba 服務器smb_server,如圖4-2所示 

                                          圖4-2

3.雙擊服務器smb_server圖標,若在Windows 中使用的密碼與Linux 的用戶密碼相同,即可以看到服務器上所共享的資源(表示登錄Linux 主機成功),如圖4-3所示。

     4.若在Windows 中使用的密碼與Linux 的用戶密碼不同,則會出現“輸入網絡密碼對話框”,如圖4-4 所示,輸入st1在SMB中設置的用戶密碼(由於設置了”unix password sync=YES”,所以此處輸入的密碼一定要是smb密碼),正確的密碼輸入後,會出現圖4-3所示的窗口。

                                        圖4-3

                                      圖4-4

5.在圖4-3的資源管理器窗口中,雙擊所要訪問的共享目錄(如fredsdir),出現圖4-5所示“輸入網絡密碼”窗口,輸入fred的密碼(因爲fredsdir共享目錄只允許fred訪問,所以在此要輸入fred的smb密碼)結果如圖4-6所示


                       圖4-5


                     圖4-6

4.4 配置Samba打印共享

4.4.1 Samba中的打印共享

Samba中涉及打印共享的參數主要有以下幾個

1.  在[global]字段中涉及共享打印機的主要字段

   printcap name =/etc/printercap

#這是指定打印機配置文件的位置。打印守護進程讀取printcap文件中的配置信息,監視打印機的工作情況。

   load printers

#指定是否要加載打印機(使打印機可以共享)。默認值爲yes。

.

#如果用戶想要自動載入打印機列表,而不是個別地安裝,則必須在此指定以上兩項

   printing =cups

#指定打印系統類型。只有在你的打印系統不是標準的情況下,才必須指定,否則不必指定。指定打印系統類型將影響到smb.conf文件中與打印機相關的命令(如print,lpq,lppause,lpresune)的執行方式。默認的打印系統類型爲bsd,其他的類型還有sysv,plp,lprng,hpux,qnx,cups。

4.4.2 配置共享打印機

1.在Linux Samba 服務器上配置本地打印機

2.獲得 Adobe Postscript  Driver

按下列步驟進行

(1)到http://www.adobe.com/下載簡體中文版Adobe Postscript  Driver,文件名爲Winstchs.exe。

(2)在Windows 環境(如Windows 2000 Professional)下安裝。

(3)進入Windows 計算機C:WINNTsystem32spooldrivers目錄,從子目錄w32x86和WIN40中挑選出表4-1所示的8個文件,並且將文件名字母全部改爲大寫。

表4-1

ADFONTS.MFM

ADOBEPS4.HLP

ADOBEPSU.DLL

DEFPRTR.PRO

ADOBEPS4.DRV

ADOBEPS5.DLL

ADOBEPSU.HLP

ICONLIB.DLL

(4) 在Linux 計算機上創建/usr/share/cups/目錄, 表4-1所示的8個文複製到此目錄下。

3.設置smb.conf的打印共享配置

[global]

…………

#按上文將有關共享打印機的幾個主要配置參數寫到此處。

[printers]

#這部分用於配置打印機共享,所有用戶都可以共享打印機。

  comment = All Printers

#註釋文字

   path = /var/spool/samba

#設置打印機隊列的位置,用戶必須自行創建該目錄,存放打印的臨時文件

   browseable = no

#不允許瀏覽共享打印機

# Set public = yes to allow user ’guest account’ to print

   guest ok = no

#必須用帳號和密碼纔可以訪問共享打印機

   writable = no

#共享打印機,writable必須設置爲no

   printable = yes

#允許用戶更改打印機隊列中的文件

[fredsprn]

#該共享的打印機只允許fred私人使用

  comment = Fred’s Printer

  valid users = fred

  path = /home/fred

#打印機隊列是fred的用戶目錄,要主義fred必須有權訪問該目錄。

  printer = freds_printer

  #設置共享打印機的名稱,此參數又可以寫成“printer name=”,該參數如果放在[global]字段,所有打印服務用到的打印機名都將是一樣的

  public = no

  writable = no

printable = yes

4.爲Windows 客戶機準備打印驅動

爲了給Windows 客戶機準備打印驅動,可以運行cupsaddsmb命令。執行如下的操作將打印機驅動程序放置在/etc/samba/drivers目錄下。

創建/etc/samba/drivers目錄

[root@smb_sever root] #mkdir /etc/samba/drivers

運行cupsaddsmb命令,以root身份執行該命令,共享所有打印機

[root@smb_sever root]# cupsaddsmb  -a  -U  root

5.從Windows 客戶機訪問Samba 共享打印機

當配置好Samba 共享打印機之後,合法用戶就可以在Windows 的網上鄰居看到被共享的打印機。雙擊共享的打印機,在彈出的窗口中確認安裝此打印機驅動即可。

4.5 Linux環境下應用Samba服務

在Linux平臺客戶機上使用Windows 計算機提供的共享資源或Linux Samba 服務器提供的共享資源,通常有兩種方法。分別是使用smbclient命令和使用smbmount命令。

現在以使用Windows 計算機提供的共享資源爲例分別介紹這兩種方法。先在Windows 中設置共享的文件夾,Windows 計算機NetBios名爲win,IP地址爲192.168.0.3,共享的文件夾共享名爲share_dir。Linux計算機名爲lin,且安裝了smb組件。

4.5.1 使用smbclient命令

在Linux計算機上,執行以下命令

[root@lin  root] # smbclient  -L  win

或者

[root@lin  root] # smbclient  -L  192.168.0.3

結果在Linux計算機上列表顯示出win所提供的所有共享信息。

在Linux計算機上,執行以下命令

[root@lin  root] # smbclient  //win(或IP地址)/share_dir  -U  tom

其中tom是Windows 計算機上的用戶。系統提示輸入tom的密碼,輸入正確後,系統提示

smb:>

此時,就可以向使用FTP客戶的方法使用smbclient。

4.5.2 使用smbmount命令

知道某臺主機所共享的資源後,執行smbmonut命令將遠程共享掛載到本地。

[root@lin  root] # mkdir –p /mnt/smb/win_share_dir

先創建掛載點目錄

[root@lin  root] #smbmount  //win/share_dir  /mnt/smb/win_share_dir

將遠程共享//win/share_dir//win/share_dir掛載到本地目錄/mnt/smb/win_share_dir

這樣就可以象訪問本機目錄一樣操作此掛載的目錄了。若要卸載已掛載的目錄,則執行umount命令即可。

[root@lin  root]#umount   /mnt/smb/win_share_dir

發佈了3 篇原創文章 · 獲贊 2 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章