Linux 系統中的Samba配置(轉)

empo007發表於2007-06-30
前言:
為了實現windows 和 Linux以及其他作業系統之間的資源共享,軟體商推出nfs 和samba兩種解決方式。由於市場上缺乏象pc-nfs那樣的客戶端工具,使得Linux和windows的資源共享變得複雜。Samba的出現解決了這一問題,它以其簡潔、實用、靈活配置的特點受到越來越多人們的廣泛關注。
Windows利用SMB協議來實現作業系統間檔案和印表機共享,而Samba本身具備SMB協議,它實現區域網內和Windows系列計算機的資源共享。
本文就Samba在Linux系統下的配置為重點,討論區域網內windows 與 Linux 的資源共享。[@more@]一、Samba 介紹
1、SMB協議
SMB (Server Message Block,服務資訊塊) 協議,是區域網上的共享檔案/印表機的一種協議,它可以為網路內部的其他windows和linux 機器提供檔案系統、列印服務。SMB的工作原理是讓NetBIOS和SMB執行在TCP/IP之上,且使用NetBIOS的nameserver讓linux機器可以在windows 網路鄰居里被瀏覽。

2、Samba
Samba是用來實現SMB的一種軟體,由澳大利亞的Andew Tridgell開發,是一種在Linux 環境裡執行的自由軟體。它可以完成如下功能:
檔案服務和列印服務,實現Windows和Linux的資源共享。
登入伺服器,可以作為區域網的伺服器。
作為主域控制器。
WINS伺服器。
支援SSL。
支援SWAT。

二、 Samba服務
1、 核心程式
Samba 有兩個守護程式:smbd 和nmbd,它們是Samba的核心程式。nmbd程式使其他計算機瀏覽Linux伺服器,Smbd程式在SMB服務請求到達時對它們進行處理,並且為使用或共享的資源進行協調。

2、 啟動服務
Samba 有兩種啟動方式:Daemon形式和Inetd形式。
(1)Daemon形式 建立啟動指令碼:rc.samba
smbd -D -d1
nmbd -D -d1

-D 表示以Daemon形式執行;-d1 表示除錯記錄級別
執行指令碼檔案rc.samba

(2)Inetd形式
設定檔案:/etc/services
netbios -ssn 139/ tcp
netbios -ns 137/ udp

設定檔案:/etc/inetd.conf
netbios -ssn stream tcp nowait root /usr/sbin/smbd smbd
netbios -ns dgram udp wait root /usr/sbin/nmbd nmbd

重啟動Inetd daemon
# kill -HUP 1

3、 客戶工具 smbclient
Smbclient命令用來存取遠端Samba伺服器上的資源。其命令形式與ftp相似。
命令語法是:#smbclient [password] [option]
(1) 解釋:servicename是要連線的資源名稱,資源名稱的形式如下:
//server/service server 是遠端伺服器的NetBIOS名字,對於windows伺服器而言,就是出現在網路上的芳鄰中的名字。
Service是各server所提供的資源的名字。
pssword 是存取該資源所需的口令
option 各種命令選項,其中 -L 用於列出遠端伺服器提供的所有資源
-I 指定遠端伺服器的IP地址。此時,servicesname 中的NetBIOS名部分將被忽略。

(2)多種smbclient命令:
執行smbclient命令成功後,進入smbclient環境,出現提示符: smb:>
這裡有許多命令和ftp命令相似,如cd 、lcd、get、megt、put、mput等。透過這些命令,我們可以訪問遠端主機的共享資源。

4、 Samba系統裝載與解除安裝
(1) 裝載其他主機的資源
我們可以利用Samba提供的smbmount命令,裝載其他主機的共享資源。
Smbmount的命令語法:# smbmount
其中 servicename 是資源名,mount-point是安裝點。

例如: # smbmount "servertmp" -c ' mount /mnt'
表示:把名字為“server”的計算機上的共享資源“tmp”的內容裝載到本地的 /mnt
目錄下。

(2) 解除安裝資源
解除安裝一個已經裝載的SMB檔案系統,使用smbunmount命令,同時指定要解除安裝的裝載點。 例如: # smbunmount / mnt

三、Samba配置
Samba元件的配置檔案是 /etc/smb.conf ,該檔案幾乎包含了Samba系統程式執行時所需的所有配置資訊。

1、 配置選項
配置檔案中有比較重要的幾個節:[gloabal]、[homes]、[printers],下面分別給與說明。
(1)[gloabal]節 在全域性引數中,引數的設定直接影響samba系統。
NetBIOS name:設定主機名稱
Workgroup:用來指定主機所在網路上所屬的NT域名或者工作組名稱。格式是
Workgroup= Nt Domain-Name or workgroup-name
Server string:用來設定本機描述,預設是 Samba Server
Host Allow:它允許設定哪些領域的機器可以訪問它的Samba伺服器
Load printers:允許自動載入印表機列表,而不需要單獨設定每一臺印表機。
Interface:配置Samba使用多個網路介面。
Domain controller: 僅當網路中有一臺在安裝時設定為主域控制器時使用此選項。
Security: 設定安全引數,定義安全模式。Samba 的安全模式有四種
Share、 user、 server 、domain
encrypt passwords 、smb passwd file:用於適用加密口令。

下面是一段引數配置例子:
[global]
smb passwd file = /etc/smbpasswd
remote announce = 172.18.158.234 172.18.153.55 172.18.153.255
dns proxy = no
security = user
encrypt passwords = yes
server string = Ftp Server
workgroup = turing
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
log file = /var/log/samba/log.%m
load printers = yes
guest account = dscan
remote browse sync = 172.18.158.234 172.18.153.55 172.18.153.255
printcap name = /etc/printcap
max log size = 50
hosts allow = 172.18.158. 172.18.153. 127.
... ...

(2)[homes]節 所有使用者的home目錄
當任何一個客戶訪問Samba伺服器時,在網路資源中都能出現自己的home目錄共享。其配置如下:
[homes]
comment = Hnnw Directories
browseable = no
writable = yes
(3)使用者共享目錄
用來指定某一特定使用者組或者使用者擁有訪問許可權的目錄配置,下列引數配置僅有hnnw組的使用者有權訪問目錄/home/samba。
[public]
comment = Public Hnnw
path = /home/samba
public = yes
writable = yes
printable = no
write list = @hnnw

2、 使用者對映
全域性引數“username map”用來控制使用者對映,它允許管理員指定一個對映檔案,該檔案包含了在客戶機和伺服器之間進行使用者對映的資訊。
如:username map= /etc/smbuser
使用者對映經常在windows 和linux 主機間進行。 兩個系統擁有不同的使用者賬號,使用者對映的目的是將不同的使用者對映成為一個使用者,便於共享檔案。
下面是一個對映檔案的例子:
# Map Windows admin to root
root=admin administrator
;Map the member of developer to studio
studio = @developer

等號左邊是單獨的Linux賬號,等號右邊是要對映的賬號列表。
伺服器逐行分析對映檔案,如果提供的賬號和某行有右側列表中的賬號匹配,就把它
替換為等號左邊的賬號。

3、 使用加密口令
新版本的windows 95以及windows98、winnt(sp3以上版本),在網路傳輸中僅傳遞加密口令作為使用者認證的資訊。這類客戶機和不支援加密口令並且以user安全級執行的Samba伺服器通訊時,會出現故障。為了正常的通訊,samba伺服器使用加密口令。下面討論如何在samba中使用加密口令。
(1) 口令檔案 /etc/smbpasswd
為了使用加密口令,samba 需要一份口令檔案(/etc/smbpasswd),並且該檔案應該和Linux的口令檔案(/etc/passwd)保持同步。下面是生成檔案命令:

# cat /etc/password | mksmbpasswd > /etc/smbpasswd

smbpasswd 是需要的口令檔案,其許可權是0600,所有者是root
smbpasswd和passwd檔案的記錄對應,密碼部分不同。密碼有兩部分組成,每部分
是32個"X",前部分用於和Lanman通訊,後部分和Windows NT通訊。
Root使用者可以使用smbpasswd命令為每個使用者設定samba口令。

(2) 修改配置檔案 /etc/smb.conf
要使Samba使用加密口令,需要在配置檔案smb.conf中加入如下引數。
Encrypt passwords=yes
Smb passwd file= /etc/smbpasswd
第一行通知samba使用加密口令,第二行給出口令檔案的位置。

(3) 重啟動samba 服務。
修改完配置檔案後,需要重新啟動samba服務,可用如下命令:
# /usr/sbin/samba restart

4、windows系統中的明碼口令使用
Samba系統中使用明碼口令作為連線SMB的預設設定。當SMB伺服器對協商協議做出響應時,響應資訊包含了一位,以說明伺服器是否支援詢問或者響應加密。隨著win95的網路重定向更新程式的釋出,Microsoft修改了預設值,這樣,windows客戶就不會向不支援加密的伺服器傳送明碼口令了。
在這種情況下,有兩種解決辦法:
(1)設定Samba伺服器使用加密口令
(2)讓windows客戶使用明碼口令
這裡選用第2種解決辦法,透過修改登錄檔來實現。下面對win95/win98、winnt使用者分別給與說明。
(1)win98/win95系統使用者
在登錄檔中加入下列註冊字,並重新啟動機器:
[HKLMSystemCurrentCntrolSetServicesVxDVNETSUP]
“EnablePlainTextPAssword”= dword:00000001

(2)Winnt系統使用者
修改登錄檔,加入下列登錄檔項,並重新啟動機器:
[HKLMSystemCurrentCntrolSetServicesRdrParameters]
“EnablePlainTextPAssword”= dword:00000001

四、Samba應用
1、 windows資源共享與使用
(1)windows資源共享
a. 使用TCP/IP協議作為網路預設通訊協議
b. 修改網路配置,設定檔案和印表機共享。
c. 設定好計算機名和所屬工作組
d.共享系統資源

(2)在windows系統中使用Linux共享資源
a. 登入進入windows網路
b. 透過網路上的芳鄰檢視、使用共享資源。
c. 命令列下工具使用共享資源
使用命令列下的net.txt工具來檢視、使用共享資源:
net use 命令的語法: c:>net use X:servernamesharename
在這裡,X:是共享的驅動器磁碟機代號,servernamesharename是到共享的UNC的網路路徑。
例如: c:>net use h:heymyfile
表示:將hey機器上的myfile共享資源對映為本地的h盤

2、Linux資源共享與使用
(1)將Linux 的資源共享
透過編輯Samba配置檔案,新增需要共享的Linux資源。同時可以設定訪問此資源的使用者群及其訪問許可權。下面是一段例子,將本機的 /public/data 目錄共享,所有人都有讀寫許可權。
[data]
comment = Public Data
path = /public/data
public = yes
writable = yes
printable = no

(2)在Linux中使用共享資源
可以使用smbclient命令,訪問所有的Samba資源。具體使用方法見前述。

五、Samba應用程式
smbclient :訪問所有共享資源
smbstatus: 列出當前所有的samba連線狀態
smbpasswd:修改samba使用者口令、增加samba使用者。
Nmblookup:用於查詢主機的NetBIOS名,並將其對映為IP地址
Testparam: 用於檢查配置檔案中的引數設定是否正確

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/85922/viewspace-922463/,如需轉載,請註明出處,否則將追究法律責任。

相關文章