自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

出于各種目的 輕松設(shè)置Samba

運(yùn)維 系統(tǒng)運(yùn)維
Samba 使用一種人類可讀的文件管理和存儲其配置參數(shù),因此配置 Samba 所需的最精密的工具就是文本編輯器。了解配置文件是如何構(gòu)造的,Samba 如何與網(wǎng)絡(luò)交互,如何配置日志,如何使用 Samba 調(diào)試問題。

 在本文中,學(xué)習(xí)以下概念:

  • 瀏覽 Samba 服務(wù)器配置文件結(jié)構(gòu)
  • 使用 Samba 變量和配置參數(shù)
  • 識別對 Server Message Block (SMB)/Common Internet File System (CIFS) 使用的關(guān)鍵 TCP/User Datagram Protocol (UDP) 端口
  • 配置 Samba 日志
  • 使用 Samba 診斷和調(diào)試問題

Samba 配置文件

與大部分 UNIX 守護(hù)進(jìn)程一樣,Samba 是通過人類可讀的文本文件配置的,而非通過一個(gè)用于編輯二進(jìn)制文件的圖形工具。最重要的配置文件稱為 smb.conf,它包含 Samba 在您的環(huán)境中運(yùn)行所需的所有參數(shù)。

注意:盡管 smb.conf 是設(shè)計(jì)為通過文本編輯器編輯的,Samba 團(tuán)隊(duì)開發(fā)出了一個(gè)基于 web 的工具,名為 Samba Web Administration Tool。另外也有 webmin 等其他工具。重要的是要記住,在運(yùn)行這些工具之前或之后,您仍然可以編輯 smb.conf,因?yàn)槟诓僮饕粋€(gè)文本文件。

Samba 的配置文件有一個(gè)相對簡單的格式,使用三個(gè)不同的結(jié)構(gòu):

  • Sections。Sections 將配置文件分成獨(dú)立的部分。例如,一個(gè)文件共享有其自己的區(qū)域。
  • Parameters。 Parameters 是鍵值對。鍵是眾所周知的屬性,比如 “read only”。
  • Comments。Comments 允許您對配置文件做注解,而不影響不配置,比如指示記載共享信息的服務(wù)臺票證。

Sections

構(gòu)建您自己的提要您可以構(gòu)建一個(gè) RSS、Atom 或 HTML 提要,以便在我們添加新文章或更新內(nèi)容時(shí)收到通知。訪問developerWorks RSS 提要。選擇 Linux 作為專區(qū),Articles 作為類型,輸入 Linux Professional Institute 作為關(guān)鍵字。然后選擇您想要的提要類型。Sections 將配置文件分成不同的部分。您可以將 section 名包含在方括號([])中來開始一個(gè) section。本 section 將持續(xù)到下一 section 被定義或達(dá)到文件的結(jié)尾。

有三個(gè) section 名具有特殊的含義:

  • global。該 section 中的所有內(nèi)容都適用于整個(gè)服務(wù)器。如有需要,可在共享級別覆蓋 global 部分中的配置項(xiàng)。
  • homes。homes 部分充當(dāng)所有用戶共享的模板,且 Samba 負(fù)責(zé)將用戶名映射到該部分中的配置,每次您想讓用戶進(jìn)入其主目錄時(shí)都幾乎無需配置獨(dú)立的共享。
  • printers。該部分類似于 homes,區(qū)別在于它用于打印機(jī)。

如果使用的 section 名不是上述之一,那么會(huì)被看作是文件或打印機(jī)共享。

當(dāng)針對特定共享名的一個(gè)連接請求進(jìn)入 Samba 時(shí),守護(hù)進(jìn)程尋找具有該名稱的、會(huì)定義該共享的屬性的 section。如果未找到這個(gè) section,Samba 瀏覽系統(tǒng)上的用戶列表,看看連接是否是指一個(gè)用戶。如果不是,Samba 查詢系統(tǒng)打印機(jī)列表,看具有該名稱的打印機(jī)是否存在。如果連接匹配用戶,則使用 homes 部分的配置。如果打印機(jī)匹配,則使用 printers 部分。在所有情況下,區(qū)域級配置覆蓋 global 配置部分。

如果上述情況都不匹配,還有最后一項(xiàng)檢查。如果配置了默認(rèn)服務(wù),則使用該服務(wù)。如果沒有,一個(gè)錯(cuò)誤會(huì)傳回客戶端。默認(rèn)情況下,不配置默認(rèn)服務(wù),因此不正確的共享名會(huì)導(dǎo)致錯(cuò)誤。

Parameters

Parameters 采用的形式是 key = value,即將 value 賦給 key。鍵都記錄在 smb.conf 手冊頁中。Samba 配置很大程度上就是了解實(shí)現(xiàn)想要的行為所需的鍵并確定要使用的適當(dāng)?shù)逆I。

Parameters 一般將字符串作為值。Samba 支持宏,允許您根據(jù)共享名或用戶輸入等項(xiàng)目改變參數(shù)的值。例如,homes 部分默認(rèn)設(shè)置為用戶的 UNIX 主目錄,但是您可以使用宏將該參數(shù)用于任何位置,并在連接時(shí)替換文件路徑中的用戶名。宏以 % 字符開頭,會(huì)在需要時(shí)加以討論。

如果一個(gè)參數(shù)的值必須擴(kuò)展到兩行或更多行,除最后一行的所有行必須以反斜杠(\)結(jié)束,就像一個(gè) UNIX shell。

Comments

Comments 以分號(;)或散列字符(哈希符號或 #)開頭。Comments 可用于解釋項(xiàng)目原由、跟蹤變更或顯示 section 邊界。

配置示例

清單 1 顯示 smb.conf 文件示例,說明文件的不同組成部分。

清單 1. 配置文件示例

# This is a comment
; So is this
# Remember that all shares need to be entered in the Wiki! -Opsteam
[global]
workgroup = BIGCO
# %v gets expanded to the version of Samba
server string = Samba Server Version %v
# By default any file starting with . will have the hidden attribute set
hide dot files = yes
# Home directories come from the UNIX password file
# anyone matching a user will use this section
[homes]
comment = Home directories
# dot files will be hidden because it's a global
[printers]
comment = System printers
printable = yes
# A share that everyone can see
[projecta]
path = /var/spool/projects/projecta
# Override the global version of hiding dot files
hide dot files = no

對于該配置示例特別需要注意的是:

  • 使用了兩種不同類型的注釋。一個(gè)以哈希符號開頭,另一個(gè)以分號開頭。
  • 該文件定義了一個(gè)名為 projecta 的共享。任何其他共享將自動(dòng)通過系統(tǒng)上定義的用戶和打印機(jī)予以創(chuàng)建。
  • server string 參數(shù)將 %v 宏作為其值的一部分。在運(yùn)行時(shí),%v 將被替換為 Samba 的版本。
  • 在全局級別,hide dot files 被設(shè)置為 yes,但在 projecta 共享內(nèi)被設(shè)置為 no。主目錄使用 homes 部分中的配置,因此會(huì)隱藏其 dot 文件(比如 .profile)。projecta 文件的 dot 文件可見。

Samba 網(wǎng)絡(luò)交互

Samba 是通過 IP 運(yùn)行的一項(xiàng)網(wǎng)絡(luò)服務(wù),因而它可以與網(wǎng)絡(luò)上也在使用 IP 的其他主機(jī)通信。作為一名 Samba 管理員,您需要理解 Samba 服務(wù)在網(wǎng)絡(luò)上的運(yùn)作方式,以便解決連接問題。

在較高的級別,您可以將 Samba 看作是提供三種不同的網(wǎng)絡(luò)服務(wù):

  • 文件和打印共享。提供文件和打印機(jī)給其他網(wǎng)絡(luò)服務(wù)并在其他機(jī)器上使用這些服務(wù)
  • 名稱服務(wù)。加入 Microsoft 網(wǎng)絡(luò)所需的名稱解析服務(wù)
  • 域服務(wù)。Samba 可取代各種 Microsoft 服務(wù)器角色,比如舊的域控制器,并與較新的 Active Directory Domain Services (AD DS) 服務(wù)器集成

文件和打印共享

文件和打印共享在 smbd 內(nèi)實(shí)現(xiàn),它是 Samba 守護(hù)進(jìn)程之一。Microsoft 在初次涉足 IP 時(shí)其文件共享使用了經(jīng)由 TCP 的基本網(wǎng)絡(luò)輸入/輸出系統(tǒng)(NetBIOS)。該方法使用 TCP 端口 139 將 NetBIOS 封裝在 TCP 會(huì)話內(nèi)。

NetBIOS 協(xié)議包括以下幾個(gè)特性。TCP 端口 139 僅用于會(huì)話服務(wù),即文件傳輸和消息解析。在該端口上不處理名稱查找服務(wù)。

NetBIOS over TCP 有效運(yùn)作,但是 NetBIOS 與 TCP 提供的會(huì)話和可靠性功能之間有重疊。經(jīng)過一些微小的更改之后,就可以在 TCP 之上運(yùn)行 SMB/CIFS 了。該方法被稱為直接宿主,用于簡化協(xié)議。直接宿主發(fā)生在 TCP 端口 445 上。

當(dāng)從協(xié)議集中刪除 NetBIOS 時(shí),Microsoft 需要另一種方式來處理名稱查找。Domain Name System (DNS) 自然是一個(gè)選擇,它是 DNS 形成 AD DS 基礎(chǔ)的原因。

默認(rèn)情況下,Samba 監(jiān)聽端口 139 和 445。您可以使用 smb ports 全局參數(shù)更改這個(gè)行為。例如,smb ports = 445 告訴 Samba 僅監(jiān)聽端口 445。您可以讓 Samba 監(jiān)聽任何您想要監(jiān)聽的端口,不過必須告訴想要連接的任何客戶端使用非標(biāo)準(zhǔn)端口。

如果您不確定 Samba 在監(jiān)聽哪些端口,可以使用 netstat 命令查明。清單 2 顯示運(yùn)行中的該命令。

清單 2. 使用 netstat 查找 SMB 在監(jiān)聽哪個(gè)端口

# netstat -antp | grep smbd
# netstat -antp | grep smb
tcp 0 0 :::445 :::* LISTEN 2830/smbd
tcp 0 0 ::ffff:192.168.1.143:445 ::ffff:192.168.1.147:4724 ESTABLISHED 2877/smbd

清單 2 顯示運(yùn)行的 netstat 命令,通過 grep 為字符串 smb 篩選了輸出。使用的 netstat 選項(xiàng)以數(shù)字格式(-n)顯示所有(-a)TCP(-t)連接,以及所負(fù)責(zé)進(jìn)程(-p)的名稱。該輸出顯示兩行:第一行包含字符串 LISTEN,這表示守護(hù)進(jìn)程在監(jiān)聽傳入的連接。這里守護(hù)進(jìn)程在監(jiān)聽端口 445。第二行顯示 ESTABLISHED 連接,其中 192.168.1.147 連接到本地主機(jī)(192.168.1.143)上的端口 445。因此,通過 清單 2 中的輸出,您可以總結(jié)出 smbd 僅在監(jiān)聽端口 445,且連接了一個(gè)客戶端。

名稱服務(wù)

NetBIOS 提供一個(gè)名稱服務(wù)層,負(fù)責(zé)網(wǎng)絡(luò)瀏覽和名稱查找。例如,通過在 UDP 端口 137 上使用 NetBIOS 名稱服務(wù)請求,解析出了主機(jī) SERVER1 的 IP 地址。對支持角色(比如主瀏覽器)的瀏覽和選擇發(fā)生在 UDP 端口 138,或稱為數(shù)據(jù)報(bào)服務(wù)端口。名稱服務(wù)是在 nmbd 守護(hù)進(jìn)程中實(shí)現(xiàn)的。

重要的是要注意,名稱服務(wù)使用 UDP 而非 TCP。UDP 數(shù)據(jù)包無連接,可廣播到所有主機(jī),而非單一單播流。使用 UDP 的播放功能,就更容易在網(wǎng)絡(luò)上處理 NetBIOS 名稱服務(wù)。

Samba 版本 3 沒有任何參數(shù)用來控制 nmbd 在監(jiān)聽哪些端口,但是 Samba 版本 4 實(shí)現(xiàn)了 nbt port 和 dgram port 全局參數(shù),它們分別控制名稱空間和數(shù)據(jù)報(bào)服務(wù)端口。

您可以使用類似于 清單 2 中的命令顯示哪個(gè)端口 nmbd 開著。這如清單 3 所示。

清單 3. 顯示 nmbd 監(jiān)聽的端口

# netstat -anup | grep nmbd
udp 0 0 192.168.1.255:137 0.0.0.0:* 2975/nmbd
udp 0 0 192.168.1.143:137 0.0.0.0:* 2975/nmbd
udp 0 0 0.0.0.0:137 0.0.0.0:* 2975/nmbd
udp 0 0 192.168.1.255:138 0.0.0.0:* 2975/nmbd
udp 0 0 192.168.1.143:138 0.0.0.0:* 2975/nmbd
udp 0 0 0.0.0.0:138 0.0.0.0:* 2975/nmbd

除了查找 nmbd 而非 smbd 之外,清單 3 中的命令使用 netstat 的 -u 選項(xiàng)查找 UDP 端口而非 TCP 端口。結(jié)果顯示 nmbd 在各個(gè)接口監(jiān)聽端口 137 和 138,且在監(jiān)聽 192.168.1.255 的廣播地址。兩個(gè)名稱服務(wù)端口都依賴于主機(jī)對主機(jī)通信和廣播通信。

域服務(wù)

Samba 團(tuán)隊(duì)在不斷更新軟件,以使其更緊密地與 Microsoft 網(wǎng)絡(luò)集成,并替換 Microsoft 基礎(chǔ)架構(gòu)。為此,Samba 必須枚舉網(wǎng)絡(luò)上的這些基礎(chǔ)架構(gòu)服務(wù)。

這些服務(wù)的大部分都在一定程度上涉及到 Kerberos 和 Lightweight Directory Access Protocol (LDAP)。這些是高級主題,將在后面的文章中更詳細(xì)地介紹。目前,只需知道 Samba 可以做的不僅僅是文件共享。#p#

Samba 使用的端口匯總

表 1 提供 Samba 守護(hù)進(jìn)程監(jiān)聽的與文件共享相關(guān)的端口的匯總。

表 1. Samba 使用的端口匯總

端口 協(xié)議 服務(wù) 守護(hù)進(jìn)程 描述
137 UDP netbios-ns nmbd NetBIOS 名稱服務(wù)
138 UDP netbios-dgm nmbd NetBIOS 數(shù)據(jù)報(bào)服務(wù)
139 TCP netbios-ssn smbd NetBIOS over TCP(會(huì)話服務(wù))
445 TCP microsoft-ds smbd 直接托管的 SMB

 服務(wù)列中的標(biāo)記是知名的服務(wù)名稱,它來自一個(gè)名為 /etc/services 的文件。服務(wù)文件幫助應(yīng)用程序?qū)⒎?wù)名稱解析為端口號。該文件還幫助人們將端口號關(guān)聯(lián)到服務(wù)名稱。盡管大部分服務(wù)同時(shí)保留 TCP 和 UDP 端口,應(yīng)用程序不必同時(shí)使用 UDP 和 TCP。當(dāng)兩個(gè)不同的服務(wù)嘗試使用不同協(xié)議上的同一端口號時(shí),保留兩者可消除可能的混淆。

另外值得一提的是,/etc/services 中的端口號和名稱不是強(qiáng)制實(shí)施的。您可以在與預(yù)期的不同的端口上運(yùn)行守護(hù)進(jìn)程,前提是您可以將這一變更傳遞給客戶端。例如,只要您的客戶端不打算在標(biāo)準(zhǔn)端口上對話,您可以在端口 5137 到 5139 和 5445 上運(yùn)行 Samba。

Samba 問題故障排除

Samba 也難免有問題。有時(shí),這些問題是由系統(tǒng)管理員引起的;有時(shí)是由用戶引起的。作為系統(tǒng)管理員,您的工作就是找出問題所在,然后查明解決方法。

測試配置文件

如果 Samba 無法啟動(dòng),或您想檢查配置文件看是否正確,那么 testparm 實(shí)用程序?qū)⒂兴鶐椭?。該?shí)用程序檢查 smb.conf 是否正確。清單 4 顯示出現(xiàn)錯(cuò)誤時(shí) testparm 的結(jié)果。

清單 4. 在一個(gè)不正確的 smb.conf 文件上使用 testparm

# testparm
Load smb config files from /etc/samba/smb.conf
Unknown parameter encountered: "hide dto files"
Ignoring unknown parameter "hide dto files"
Processing section "[homes]"
Processing section "[printers]"
Processing section "[public]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
passdb backend = tdbsam
log file = /var/log/samba/log.%m
max log size = 50
cups options = raw
<< rest of the output omitted >>

testparm 的輸出從文件的位置開始。如果您想指定一個(gè)不同的文件,在命令行上傳遞文件的名稱,如下面的例子:

testparm /home/me/smb.conf

接下來,testparm 抱怨有一個(gè)名為 hide dto files 的無效參數(shù)。實(shí)際上該參數(shù)應(yīng)當(dāng)是 hide dot 文件。

在處理配置文件之后,您就得到一些有關(guān)服務(wù)器角色和配置文件精簡版的信息。該版本將注釋剝離出來,且始終經(jīng)過格式化,因此有時(shí)您會(huì)捕捉到這里漏掉的錯(cuò)誤,同時(shí)在文本編輯器中瀏覽 smb.conf。

在作出更改之后您應(yīng)當(dāng)在您的配置文件上運(yùn)行 testparm。Samba 忽略配置文件中的大多數(shù)印刷錯(cuò)誤,且在啟動(dòng)時(shí)并不總是寫入消息到控制臺。在發(fā)現(xiàn)某些東西不能正常工作之前,您可能不會(huì)捕捉到這類錯(cuò)誤。Testparm 會(huì)提醒您 smb.conf 中的任何印刷錯(cuò)誤。

默認(rèn)情況下,testparm 僅向您展示 smb.conf 中輸入的配置。如果您懷疑您在某個(gè)地方使用了默認(rèn)值,可以使用 -v 選項(xiàng)強(qiáng)制testparm 也顯示默認(rèn)值。

testparm 的另一個(gè)用法是將輸出限制到單一部分或參數(shù)。清單 5 顯示如何使用 testparm 查看 security mask 選項(xiàng)的值。

清單 5. 將 testparm 限制到單一參數(shù)

# testparm -s --parameter-name "security mask"
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[public]"
Loaded services file OK.
0777

在清單 5 中,-s 參數(shù)阻止 testparm 在解析 smb.conf 與將其顯示到屏幕之間的用戶輸入。使用 --parameter name "security mask"詢問 security mask 的值。結(jié)果是 0777,即默認(rèn)值。在該模式下,沒有必要指定 -v 來顯示默認(rèn)值。

作為客戶端進(jìn)行連接

您可以不用到用戶桌面并親自試驗(yàn)一些東西,而是可以在您自己的桌面通過命令行執(zhí)行大量測試。第一個(gè)最簡單的測試是確保您可以連接到 Samba 端口。做到這一點(diǎn)的最簡單的方法是使用 telnet 命令,如清單 6 所示。

清單 6. 測試與 telnet 的連接

# telnet bob 139
Trying 192.168.1.134...
telnet: connect to address 192.168.1.134: Connection refused

在清單 6 中,root 用戶在端口 139 上連接到服務(wù)器 bob。您還可以使用端口 445 測試直接托管的 SMB 端口。結(jié)果是 Connection refused,這表示守護(hù)進(jìn)程沒有監(jiān)聽該地址,或防火墻阻止連接。其他結(jié)果,比如 No route to host 或 Connection timed out 如出一轍。

客戶端通常使用一個(gè)名稱而非 IP 地址連接到一臺服務(wù)器。如果您使用 telnet 連接到服務(wù)器名稱,而非 IP 地址,要特別注意返回的 IP 地址。在上述示例中,服務(wù)器(bob) 被解析為 192.168.1.134。有時(shí),您的 DNS 記錄會(huì)有錯(cuò)誤,導(dǎo)致客戶端連接到錯(cuò)誤的地址。

如果您不使用 DNS 進(jìn)行 Windows 名稱解析,那么可以使用 nmblookup 命令執(zhí)行一個(gè) NetBIOS 名稱查詢。清單 7 顯示 bob 服務(wù)器查詢。

清單 7. 為 bob 執(zhí)行一個(gè) NetBIOS 名稱查詢

# nmblookup bob
querying bob on 192.168.1.255
192.168.1.138 bob<00>

根據(jù)清單 7,服務(wù)器 bob 的 IP 地址是 192.168.1.138,而非 192.168.1.134,如 清單 6 所示。結(jié)果表示 DNS 出現(xiàn)問題,特別是當(dāng)端口 139 和 445 在 192.168.1.138 上做出反應(yīng)時(shí)。

另一項(xiàng)測試是看看配置文件是否拒絕訪問某一主機(jī)。Testparm 再次在清單 8 中用到。

清單 8. 使用 testparm 檢查訪問

# testparm /etc/samba/smb.conf seanspc 192.168.1.147
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[public]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Deny connection from seanspc (192.168.1.147) to homes
Deny connection from seanspc (192.168.1.147) to printers

Deny connection from seanspc (192.168.1.147) to public

在清單 8 中,有三個(gè)項(xiàng)目被傳遞給 testparm:

  • Samba 配置文件的路徑
  • 要測試的機(jī)器的 NetBIOS 名稱
  • 要測試的機(jī)器的 IP 地址

清單 8 中的輸出顯示拒絕考慮中的機(jī)器訪問所有共享。在這種模式下使用 testparm 時(shí),實(shí)用程序?qū)嶋H上不作為該機(jī)器進(jìn)行連接。相反地,testparm 處理配置文件,以查看是否允許訪問。

如果目前為止的所有測試都成功,您可以嘗試使用 smbclient 實(shí)用程序建立一個(gè)客戶端連接。第一個(gè)測試是要試圖瀏覽共享列表,如清單 9 所示。

清單 9. 顯示機(jī)器的共享

[sean@bob source3]$ smbclient -L '\\bob'
Enter sean's password:
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.5.6-69.fc13]
Sharename Type Comment
--------- ---- -------
extdrive Disk
Sean Walberg's iMac Disk
timemachine Disk
IPC$ IPC IPC Service (Samba Server Version 3.5.6-69.fc13)
test Printer test
Downstairs_Laser Printer HP 6L
Cups-PDF Printer Cups-PDF
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.5.6-69.fc13]
Server Comment
--------- -------
BOB Samba Server Version 3.5.6-69.fc13
Workgroup Master
--------- -------
MYGROUP BOB
WORK SWALBERG-XPLT
WORKGROUP IMAC-1FC525

在清單 9 中,用戶在 bob 服務(wù)器上使用 -L 參數(shù)請求共享列表。服務(wù)器名稱以兩個(gè)反斜杠(\\)為前綴,因?yàn)樗且粋€(gè) Universal Naming Convention (UNC) 路徑。在選擇單引號和雙引號時(shí)要小心。單引號插入并將反斜杠看作是轉(zhuǎn)義符。

如果您的服務(wù)器有更多的安全設(shè)置,您可能需要分別使用 -W 和 -U 參數(shù)傳遞用戶名或域。

最后,您可以嘗試連接到一個(gè)共享,方法就是省略掉 -L 參數(shù)并指定到共享的一個(gè)完整的 UNC 路徑。清單 10 顯示客戶端使用不同的工作組和用戶名連接到一臺服務(wù)器。

清單 10. 使用不同的用戶名和域連接到共享

[sean@bob source3]$ smbclient '\\swalberg-xplt\photos' -U swalberg -W WORK
Enter swalberg's password:
Domain=[WORK] OS=[Windows 5.1] Server=[Windows 2000 LAN Manager]
smb: \> dir
. D 0 Thu Jan 6 11:39:50 2011
.. D 0 Thu Jan 6 11:39:50 2011
<< files omitted >>
38156 blocks of size 4194304. 2938 blocks available
smb: \>>

如果這些測試通過,您可以很確定問題與 Samba 配置無關(guān),而是客戶端與服務(wù)器之間或客戶端本身某個(gè)地方有問題。您可以查看下一節(jié)將要介紹的日志,其中就問題所在提供了一些線索。#p#

日志記錄和調(diào)試

日志記錄和故障排除相伴而行。日志允許您回顧歷史,查看是否有錯(cuò)誤發(fā)生并在問題發(fā)生時(shí)獲取有關(guān)問題的更多細(xì)節(jié)。如果您嘗試弄清為何有些東西不能正常運(yùn)作,可以增加日志數(shù)量,直至獲得必要的詳細(xì)程度。Samba 在 smb.conf 中提供了一些參數(shù)來處理日志記錄;您可以一起使用這些參數(shù)來定制生成的日志類型。

Samba 就像一個(gè)傳統(tǒng)的 UNIX 守護(hù)進(jìn)程,在于它可以將日志記錄到 syslog 工具,并生成其自己的日志文件。此外,Microsoft Event Viewer 工具可以連接到一個(gè) Samba 服務(wù)器來提取日志。后一特性的要點(diǎn)在于,Samba 不能直接將日志記錄為事件日志格式:您必須使用 Samba 工具對您的日志文件進(jìn)行后處理。

日志級別

Samba 生成的每條日志消息都有一個(gè) 級別,即從 0 到 10 的一個(gè)整數(shù)。較高級的消息,比如新連接和重要錯(cuò)誤,具有較低的級別。消息調(diào)試具有較高的級別。通過指定您想記錄的日志的最大級別,可以控制日志量。級別為 1 的日志僅記錄優(yōu)先級為 0 或 1 的消息。如果您想要更多的日志記錄,可以使用一個(gè)較高的數(shù)字。

級別大于 3 的任何日志都旨在用于開發(fā)人員,對系統(tǒng)管理員沒有太大的幫助。使用日志級別 0 將避開除一些啟動(dòng)消息和關(guān)鍵錯(cuò)誤之外的任何消息。

要配置日志級別,在 global 部分使用 log level 參數(shù);例如,使用 log level = 2 將日志級別設(shè)置為 2。該設(shè)置記錄優(yōu)先級為 2 或更小的任何消息。

您可以在運(yùn)行時(shí)更改日志級別,方法就是發(fā)送 SIGUSR1 信號給 Samba 進(jìn)程來增加日志級別,或發(fā)送 SIGUSR2 減少日志級別。

您還可以讓您的日志級別更細(xì)粒度一些,僅在某些功能中通過指定想要記錄的類別來增加詳細(xì)程度。這些類別是:

  • all。該參數(shù)是可選的:如果您不指定額外的關(guān)鍵字,假定使用all。
  • tdb。與不重要的數(shù)據(jù)庫相關(guān)的日志消息,這是 Samba 使用的鍵值存儲。
  • printdrivers。打印機(jī)驅(qū)動(dòng)程序管理例程。
  • lanman。 NT LAN Manager 調(diào)試。
  • smb。 SMB 協(xié)議調(diào)試。
  • rpc_parse。遠(yuǎn)程過程調(diào)用(RPCs)解析。
  • rpc_srv。服務(wù)器端 RPCs。
  • rpc_cli??蛻舳?RPCs。
  • passdb。在 Samba 主機(jī)上存儲密碼的舊有方式。
  • sam。本地 Samba 帳戶數(shù)據(jù)庫。
  • auth。Samba 內(nèi)與用戶身份驗(yàn)證相關(guān)的各個(gè)模塊。
  • winbind。用于允許 Microsoft 用戶透明地登錄到 UNIX 系統(tǒng)的組件。
  • vfs。為 Virtual File System 模塊調(diào)試消息,允許您通過可插入模塊添加功能到 Samba。
  • idmap。在 UNIX 用戶 IDs 與 Microsoft 安全標(biāo)識符之間映射身份。
  • quota。與配額處理相關(guān)的消息,同時(shí)由 Microsoft Windows NT 策略和 UNIX 文件系統(tǒng)處理。
  • acls。訪問控制列表處理。
  • locking。文件鎖定狀態(tài)和錯(cuò)誤。
  • msdfs。與 Samba 的分布式文件系統(tǒng)支持相關(guān)的日志消息。
  • dmapi。數(shù)據(jù)管理應(yīng)用程序編程接口(API)功能。必須使用第三方 DMAPI 實(shí)現(xiàn)編譯 Samba 來使用該功能。
  • registry。Windows 注冊表的模仿。

要使用這些額外的日志記錄,將關(guān)鍵字和值附加到日志級別參數(shù),用冒號(:)分割。例如,log level = 1 winbind:3 將系統(tǒng)默認(rèn)日志級別設(shè)置為 1,并將 winbind 日志級別增加到 3。這一變更可以幫助您調(diào)試有關(guān)單點(diǎn)登錄的問題,而無需淹沒于無關(guān)的日志文件中。

日志文件位置

要更改日志文件的名稱,使用 log file 參數(shù)。您還可以在值中使用宏。一個(gè)常用的設(shè)置是讓一個(gè)客戶端擁有一個(gè)日志文件。為此,請指定:

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

該命令將單個(gè)日志文件分割為每個(gè)客戶端一個(gè)文件,其余消息歸入 log.smbd。

如果您想將日志記錄到 syslog,可以指定 syslog = 1 來將級別 1 或 0 的所有日志發(fā)送到本地 syslog 服務(wù)器。Samba 使用LOG_DAEMON 工具并將 Samba 日志級別按照如下優(yōu)先級映射到 syslog:

  • LOG_ERR。日志級別 0
  • LOG_WARNING。日志級別 1
  • LOG_NOTICE。日志級別 2
  • LOG_INFO。日志級別 3
  • LOG_DEBUG。日志級別 4 或更高

您使用可以過濾傳入的消息并警惕系統(tǒng)管理員的一個(gè)更高級的 syslog 守護(hù)進(jìn)程,這是監(jiān)視您的 Samba 服務(wù)器的一種很好的方式。

日志元數(shù)據(jù)

您可以添加或刪除顯示在帶有更多全局參數(shù)的所有日志條目中的一些消息:

  • debug timestamp。添加一個(gè)時(shí)間戳到日志消息,且是默認(rèn)啟用的
  • debug uid。記錄生成日志的 Samba 進(jìn)程的用戶和組 IDs
  • debug prefix timestamp。繼續(xù)使用時(shí)間戳,但是在生成日志的 Samba 源代碼中刪除有關(guān)位置的信息
  • debug pid。記錄生成日志的 Samba 進(jìn)程的進(jìn)程標(biāo)識符
  • debug hires timestamp。將時(shí)間戳分辨率改為微秒,而非秒
  • debug class。記錄日志消息的類別,如果您要更改某個(gè)類的詳細(xì)程度這會(huì)有所幫助(該選項(xiàng)幫助確定您想要的類。)

日志記錄可幫助您找到問題,或者也可以讓您處于雜亂中。Samba 提供各種日志記錄選項(xiàng);要謹(jǐn)慎使用它們。

系統(tǒng)調(diào)用跟蹤

如果其他方法都失敗了,您可以使用 UNIX 系統(tǒng)工具查看進(jìn)程內(nèi)的狀況。Linux strace 程序允許您跟蹤應(yīng)用程序做出的所有系統(tǒng)調(diào)用。一個(gè)應(yīng)用程序使用系統(tǒng)調(diào)用打開和讀取文件、創(chuàng)建和銷毀進(jìn)程,并與操作系統(tǒng)其余進(jìn)程進(jìn)行交互。

清單 11 顯示 root 用戶跟蹤一個(gè) Samba 進(jìn)程,該進(jìn)程向客戶端拋出一個(gè)錯(cuò)誤。

清單 11. 使用 strace 程序跟蹤進(jìn)程

# ps -ef | grep smb
sean 13375 28812 0 21:54 ? 00:00:00 smbd -D
root 14294 13593 0 21:55 pts/2 00:00:00 grep smb
root 16132 28812 0 Feb27 ? 00:00:36 smbd -D
root 28812 1 0 Feb14 ? 00:00:28 smbd -D
root 28814 28812 0 Feb14 ? 00:00:00 smbd -D
[root@bob /]# strace -e trace=file -p 13375
Process 13375 attached - interrupt to quit
<< Output omitted >>
chdir("/home/sean") = 0
stat64("somedir", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
stat64("somedir/*", 0xbfcb5f60) = -1 EACCES (Permission denied)
getcwd("/home/sean", 4096) = 11
lstat64("/home/sean/somedir", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
lstat64("/home/sean/somedir/*", 0xbfcb5ffc) = -1 EACCES (Permission denied)

第一個(gè)命令查找 Samba 進(jìn)程列表。由于 Samba 采用所連接用戶的身份,可以輕松將進(jìn)程 13375 識別為屬于該用戶的進(jìn)程。接下來,運(yùn)行帶有兩個(gè)參數(shù)的 strace 命令:-e trace=file 限制與文件相關(guān)的系統(tǒng)調(diào)用的輸出。對于您會(huì)遇到的 Samba 問題,這是一個(gè)很好的初始估計(jì)。第二個(gè)參數(shù) -p 13375 告訴 strace 使用這個(gè)進(jìn)程 ID 連接到運(yùn)行的進(jìn)程。

從該命令的輸出中,您會(huì)看到 smb 在不斷掃描目錄看是否有變更。當(dāng)用戶嘗試有問題的操作時(shí),您可能會(huì)看到如 清單 11 所示的輸出。最后幾個(gè)命令嘗試使用 stat64 調(diào)用獲取目錄內(nèi)有關(guān)文件的信息。結(jié)果是 permission denied,這表示用戶在系統(tǒng)文件級被拒絕,而非由 Samba 拒絕。該命令可以為您提供更多信息來解決問題,比如更改目錄屬性或告訴用戶不允許他/她訪問目錄。

原文:http://www.ibm.com/developerworks/cn/linux/l-lpic3-312-1/index.html?ca=drs-

【編輯推薦】

  1. 從源碼配置和構(gòu)建 Samba
  2. Samba在企業(yè)中的簡單應(yīng)用案例
  3. Samba服務(wù)器安裝配置全攻略
責(zé)任編輯:黃丹 來源: IBMDW
相關(guān)推薦

2025-01-02 11:01:13

Apache文件類型部署

2011-03-04 15:34:52

FileZilla

2022-03-29 09:14:23

LinuxWindows文件

2012-12-11 15:46:46

2010-01-06 16:38:31

2010-09-17 14:04:14

JVM內(nèi)存設(shè)置

2009-12-16 14:26:19

Linux VMwar

2009-11-26 09:02:30

Suse Linux

2009-12-02 11:39:15

samba設(shè)置用戶

2023-10-11 13:32:30

2020-07-14 08:48:07

數(shù)據(jù)分析技術(shù)IT

2018-10-19 09:51:05

服務(wù)器內(nèi)存RAM

2010-05-25 13:11:21

SVNClient

2012-04-27 10:20:45

2010-08-26 09:03:05

IE6

2010-08-19 09:48:46

IE6

2010-09-27 10:01:02

Tomcat5JVM

2010-01-14 13:59:01

2010-01-21 16:57:35

交換機(jī)網(wǎng)關(guān)設(shè)置

2014-08-04 11:22:21

linuxsamba服務(wù)器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號