快捷搜索:  FfwG   STM8S003  FfwG.(.))),.  +STM8S003

出于各种目的 轻松设置Samba

在本文中,进修以下观点:

浏览 Samba 办事器设置设置设备摆设摆设文件布局

应用 Samba 变量和设置设置设备摆设摆设参数

识别对 Server Message Block (SMB)/Common Internet File System (CIFS) 应用的关键 TCP/User Datagram Protocol (UDP) 端口设置设置设备摆设摆设 Samba 日志应用 Samba 诊断和调试问题

Samba 设置设置设备摆设摆设文件

与大年夜部分 UNIX 守护进程一样,Samba 是经由过程人类可读的文本文件设置设置设备摆设摆设的,而非经由过程一个用于编辑二进制文件的图形对象。最紧张的设置设置设备摆设摆设文件称为 smb.conf,它包孕 Samba 在您的情况中运行所需的所有参数。

留意:只管 smb.conf 是设计为经由过程文本编辑器编辑的,Samba 团队开拓出了一个基于 web 的对象,名为 Samba Web Administration Tool。别的也有 webmin 等其他对象。紧张的是要记着,在运行这些对象之前或之后,您仍旧可以编辑 smb.conf,由于您在操作一个文本文件。

Samba 的设置设置设备摆设摆设文件有一个相对简单的款式,应用三个不合的布局:

Sections。Sections 将设置设置设备摆设摆设文件分成自力的部分。例如,一个文件共享有其自己的区域。

Parameters。 Parameters 是键值对。键是众所周知的属性,比如 “read only”。

Comments。Comments 容许您对设置设置设备摆设摆设文件做评释,而不影响不设置设置设备摆设摆设,比如唆使纪录共享信息的办事台票证。

Sections

构建您自己的提纲您可以构建一个 RSS、Atom 或 HTML 提纲,以便在我们添加新文章或更新内容时收到看护。造访developerWorks RSS 提纲。选择 Linux 作为专区,Articles 作为类型,输入 Linux Professional Institute 作为关键字。然后选择您想要的提纲类型。Sections 将设置设置设备摆设摆设文件分成不合的部分。您可以将 section 名包孕在方括号([])中来开始一个 section。本 section 将持续到下一 section 被定义或达到文件的结尾。

有三个 section 名具有特殊的含义:

global。该 section 中的所有内容都适用于全部办事器。如有必要,可在共享级别覆盖 global 部分中的设置设置设备摆设摆设项。

homes。homes 部分充当所有用户共享的模板,且 Samba 认真将用户名映射到该部分中的设置设置设备摆设摆设,每次您想让用户进入其主目录时都险些无需设置设置设备摆设摆设自力的共享。

printers。该部分类似于 homes,差别在于它用于打印机。

假如应用的 section 名不是上述之一,那么会被看作是文件或打印机共享。

当针对特定共享名的一个连接哀求进入 Samba 时,守护进程探求具有该名称的、会定义该共享的属性的 section。假如未找到这个 section,Samba 浏览系统上的用户列表,看看连接是否是指一个用户。假如不是,Samba 查询系统打印机列表,看具有该名称的打印机是否存在。假如连接匹配用户,则应用 homes 部分的设置设置设备摆设摆设。假如打印机匹配,则应用 printers 部分。在所有环境下,区域级设置设置设备摆设摆设覆盖 global 设置设置设备摆设摆设部分。

假如上述环境都不匹配,还有着末一项反省。假如设置设置设备摆设摆设了默认办事,则应用该办事。假如没有,一个差错会传回客户端。默认环境下,不设置设置设备摆设摆设默认办事,是以不精确的共享名会导致差错。

Parameters

Parameters 采纳的形式是 key = value,即将 value 赋给 key。键都记录在 smb.conf 手书页中。Samba 设置设置设备摆设摆设很大年夜程度上便是懂得实现想要的行径所需的键并确定要应用的适当的键。

Parameters 一样平常将字符串作为值。Samba 支持宏,容许您根据共享名或用户输入等项目改变参数的值。例如,homes 部分默认设置为用户的 UNIX 主目录,然则您可以应用宏将该参数用于任何位置,并在连接时调换文件路径中的用户名。宏以 % 字符开首,会在必要时加以评论争论。

假如一个参数的值必须扩展到两行或更多行,除着末一行的所有行必须以反斜杠()停止,就像一个 UNIX shell。

Comments

Comments 以分号(;)或散列字符(哈希符号或 #)开首。Comments 可用于解释项目因由、跟踪变化或显示 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对付该设置设置设备摆设摆设示例分外必要留意的是:

应用了两种不合类型的注释。一个以哈希符号开首,另一个以分号开首。

该文件定义了一个名为 projecta 的共享。任何其他共享将自动经由过程系统上定义的用户和打印机予以创建。

server string 参数将 %v 宏作为其值的一部分。在运行时,%v 将被调换为 Samba 的版本。

在全局级别,hide dot files 被设置为 yes,但在 projecta 共享内被设置为 no。主目录应用 homes 部分中的设置设置设备摆设摆设,是以会暗藏其 dot 文件(比如 .profile)。projecta 文件的 dot 文件可见。

Samba 收集交互

Samba 是经由过程 IP 运行的一项收集办事,因而它可以与收集上也在应用 IP 的其他主机通信。作为一名 Samba 治理员,您必要理解 Samba 办事在收集上的运作要领,以便办理连接问题。

在较高的级别,您可以将 Samba 看作是供给三种不合的收集办事:

文件和打印共享。供给文件和打印机给其他收集办事并在其他机械上应用这些办事

名称办事。加入 Microsoft 收集所需的名称解析办事

域办事。Samba 可取代各类 Microsoft 办事器角色,比如旧的域节制器,并与较新的 Active Directory Domain Services (AD DS) 办事器集成

文件和打印共享

文件和打印共享在 smbd 内实现,它是 Samba 守护进程之一。Microsoft 在初次涉足 IP 时其文件共享应用了经过 TCP 的基础收集输入/输出系统(NetBIOS)。该措施应用 TCP 端口 139 将 NetBIOS 封装在 TCP 会话内。

NetBIOS 协议包括以下几个特点。TCP 端口 139 仅用于会话办事,即文件传输和消息解析。在该端口上不处置惩罚名称查找办事。

NetBIOS over TCP 有效运作,然则 NetBIOS 与 TCP 供给的会话和靠得住性功能之间有重叠。颠末一些微小的变动之后,就可以在 TCP 之上运行 SMB/CIFS 了。该措施被称为直接宿主,用于简化协议。直接宿主发生在 TCP 端口 445 上。

当从协议集中删除 NetBIOS 时,Microsoft 必要另一种要领来处置惩罚名称查找。Domain Name System (DNS) 自然是一个选择,它是 DNS 形成 AD DS 根基的缘故原由。

默认环境下,Samba 监听端口 139 和 445。您可以应用 smb ports 全局参数变动这个行径。例如,smb ports = 445 奉告 Samba 仅监听端口 445。您可以让 Samba 监听任何您想要监听的端口,不过必须奉告想要连接的任何客户端应用非标准端口。

假如您不确定 Samba 在监听哪些端口,可以应用 netstat 敕令查明。清单 2 显示运行中的该敕令。

清单 2. 应用 netstat 查找 SMB 在监听哪个端口

# 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 显示运行的 netstat 敕令,经由过程 grep 为字符串 smb 筛选了输出。应用的 netstat 选项以数字款式(-n)显示所有(-a)TCP(-t)连接,以及所认真进程(-p)的名称。该输出显示两行:第一行包孕字符串 LISTEN,这表示守护进程在监听传入的连接。这里守护进程在监听端口 445。第二行显示 ESTABLISHED 连接,此中 192.168.1.147 连接到本地主机(192.168.1.143)上的端口 445。是以,经由过程 清单 2 中的输出,您可以总结出 smbd 仅在监听端口 445,且连接了一个客户端。

名称办事

NetBIOS 供给一个名称办事层,认真收集浏览和名称查找。例如,经由过程在 UDP 端口 137 上应用 NetBIOS 名称办事哀求,解析出了主机 SERVER1 的 IP 地址。对支持角色(比如主浏览器)的浏览和选择发生在 UDP 端口 138,或称为数据报办事端口。名称办事是在 nmbd 守护进程中实现的。

紧张的是要留意,名称办事应用 UDP 而非 TCP。UDP 数据包无连接,可广播到所有主机,而非单一单播流。应用 UDP 的播放功能,就更轻易在收集上处置惩罚 NetBIOS 名称办事。

Samba 版本 3 没有任何参数用来节制 nmbd 在监听哪些端口,然则 Samba 版本 4 实现了 nbt port 和 dgram port 全局参数,它们分手节制名称空间和数据报办事端口。

您可以应用类似于 清单 2 中的敕令显示哪个端口 nmbd 开着。这如清单 3 所示。

清单 3. 显示 nmbd 监听的端口

# 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 选项查找 UDP 端口而非 TCP 端口。结果显示 nmbd 在各个接口监听端口 137 和 138,且在监听 192.168.1.255 的广播地址。两个名称办事端口都依附于主机对主机通信和广播通信。

域办事

Samba 团队在赓续更新软件,以使其更慎密地与 Microsoft 收集集成,并调换 Microsoft 根基架构。为此,Samba 必须罗列收集上的这些根基架构办事。

这些办事的大年夜部分都在必然程度上涉及到 Kerberos 和 Lightweight Directory Access Protocol (LDAP)。这些是高档主题,将在后面的文章中更具体地先容。今朝,只需知道 Samba 可以做的不仅仅是文件共享。

Samba 应用的端口汇总

表 1 供给 Samba 守护进程监听的与文件共享相关的端口的汇总。

表 1. Samba 应用的端口汇总

办事列中的标记是有名的办事名称,它来自一个名为 /etc/services 的文件。办事文件赞助利用法度榜样将办事名称解析为端口号。该文件还赞助人们将端口号关联到办事名称。只管大年夜部分办事同时保留 TCP 和 UDP 端口,利用法度榜样不必同时应用 UDP 和 TCP。当两个不合的办事考试测验应用不合协议上的同一端口号时,保留两者可打消可能的肴杂。

别的值得一提的是,/etc/services 中的端口号和名称不是强制实施的。您可以在与预期的不合的端口上运行守护进程,条件是您可以将这一变化通报给客户端。例如,只要您的客户端不盘算在标准端口上对话,您可以在端口 5137 到 5139 和 5445 上运行 Samba。

Samba 问题故障扫除

Samba 也难免有问题。无意偶尔,这些问题是由系统治理员引起的;无意偶尔是由用户引起的。作为系统治理员,您的事情便是找出问题所在,然后查明办理措施。

测试设置设置设备摆设摆设文件

假如 Samba 无法启动,或您想反省设置设置设备摆设摆设文件看是否精确,那么 testparm 实用法度榜样将有所赞助。该实用法度榜样反省 smb.conf 是否精确。清单 4 显示呈现差错时 testparm 的结果。

清单 4. 在一个不精确的 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 的输出从文件的位置开始。假如您想指定一个不合的文件,在敕令行上通报文件的名称,如下面的例子:

testparm /home/me/smb.conf接下来,testparm 诉苦有一个名为 hide dto files 的无效参数。实际上该参数该当是 hide dot 文件。

在处置惩罚设置设置设备摆设摆设文件之后,您就获得一些有关办事器角色和设置设置设备摆设摆设文件精简版的信息。该版本将注释剥离出来,且始终颠末款式化,是以无意偶尔您会捕捉到这里遗漏落的差错,同时在文本编辑器中浏览 smb.conf。

在作出变动之后您该当在您的设置设置设备摆设摆设文件上运行 testparm。Samba 轻忽设置设置设备摆设摆设文件中的大年夜多半印刷差错,且在启动时并不老是写入消息到节制台。在发明某些器械不能正常事情之前,您可能不会捕捉到这类差错。Testparm 会提醒您 smb.conf 中的任何印刷差错。

默认环境下,testparm 仅向您展示 smb.conf 中输入的设置设置设备摆设摆设。假如您狐疑您在某个地方应用了默认值,可以应用 -v 选项强制testparm 也显示默认值。

testparm 的另一个用法是将输出限定到单一部分或参数。清单 5 显示若何应用 testparm 查看 security mask 选项的值。

清单 5. 将 testparm 限定到单一参数

# 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 参数阻拦 testparm 在解析 smb.conf 与将其显示到屏幕之间的用户输入。应用 --parameter name "security mask"扣问 security mask 的值。结果是 0777,即默认值。在该模式下,没有需要指定 -v 来显示默认值。

作为客户端进行连接

您可以不用到用户桌面并亲身试验一些器械,而是可以在您自己的桌面经由过程敕令行履行大年夜量测试。第一个最简单的测试是确保您可以连接到 Samba 端口。做到这一点的最简单的措施是应用 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 上连接到办事器 bob。您还可以应用端口 445 测试直接托管的 SMB 端口。结果是 Connection refused,这表示守护进程没有监听该地址,或防火墙阻拦连接。其他结果,比如 No route to host 或 Connection timed out 千篇一律。

客户端平日应用一个名称而非 IP 地址连接到一台办事器。假如您应用 telnet 连接到办事器名称,而非 IP 地址,要分外留意返回的 IP 地址。在上述示例中,办事器(bob) 被解析为 192.168.1.134。无意偶尔,您的 DNS 记录会有差错,导致客户端连接履新错的地址。

假如您不应用 DNS 进行 Windows 名称解析,那么可以应用 nmblookup 敕令履行一个 NetBIOS 名称查询。清单 7 显示 bob 办事器查询。

清单 7. 为 bob 履行一个 NetBIOS 名称查询

# nmblookup bob

querying bob on 192.168.1.255

192.168.1.138 bob根据清单 7,办事器 bob 的 IP 地址是 192.168.1.138,而非 192.168.1.134,如 清单 6 所示。结果表示 DNS 呈现问题,分外是当端口 139 和 445 在 192.168.1.138 上做出反映时。

另一项测试是看看设置设置设备摆设摆设文件是否回绝造访某一主机。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 中,有三个项目被通报给 testparm:

Samba 设置设置设备摆设摆设文件的路径

要测试的机械的 NetBIOS 名称

要测试的机械的 IP 地址

清单 8 中的输出显示回绝斟酌中的机械造访所有共享。在这种模式下应用 testparm 时,实用法度榜样实际上不作为该机械进行连接。相反地,testparm 处置惩罚设置设置设备摆设摆设文件,以查看是否容许造访。

假如今朝为止的所有测试都成功,您可以考试测验应用 smbclient 实用法度榜样建立一个客户端连接。第一个测试是要试图浏览共享列表,如清单 9 所示。

清单 9. 显示机械的共享

[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 办事器上应用 -L 参数哀求共享列表。办事器名称以两个反斜杠(\)为前缀,由于它是一个 Universal Naming Convention (UNC) 路径。在选择单引号和双引号时要小心。单引号插入并将反斜杠看作是转义符。

假如您的办事器有更多的安然设置,您可能必要分手应用 -W 和 -U 参数通报用户名或域。

着末,您可以考试测验连接到一个共享,措施便是省略掉落 -L 参数并指定到共享的一个完备的 UNC 路径。清单 10 显示客户端应用不合的事情组和用户名连接到一台办事器。

清单 10. 应用不合的用户名和域连接到共享

[sean@bob source3]$ smbclient '\swalberg-xpltphotos' -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 设置设置设备摆设摆设无关,而是客户端与办事器之间或客户端本身某个地方有问题。您可以查看下一节将要先容的日志,此中就问题所在供给了一些线索。

日志记录和调试

日志记录和故障扫除相伴而行。日志容许您回首历史,查看是否有差错发生并在问题发生时获取有关问题的更多细节。假如您考试测验弄清为何有些器械不能正常运作,可以增添日志数量,直至得到需要的具体程度。Samba 在 smb.conf 中供给了一些参数来处置惩罚日志记录;您可以一路应用这些参数来定制天生的日志类型。

Samba 就像一个传统的 UNIX 守护进程,在于它可以将日志记录到 syslog 对象,并天生其自己的日志文件。此外,Microsoft Event Viewer 对象可以连接到一个 Samba 办事器来提取日志。后一特点的要点在于,Samba 不能直接将日志记录为事故日志款式:您必须应用 Samba 对象对您的日志文件进行后处置惩罚。

日志级别

Samba 天生的每条日志消息都有一个 级别,即从 0 到 10 的一个整数。较高档的消息,比如新连接和紧张差错,具有较低的级别。消息调试具有较高的级别。经由过程指定您想记录的日志的最大年夜级别,可以节制日志量。级别为 1 的日志仅记录优先级为 0 或 1 的消息。假如您想要更多的日志记录,可以应用一个较高的数字。

级别大年夜于 3 的任何日志都旨在用于开拓职员,对系统治理员没有太大年夜的赞助。应用日志级别 0 将避解雇一些启动消息和关键差错之外的任何消息。

要设置设置设备摆设摆设日志级别,在 global 部分应用 log level 参数;例如,应用 log level = 2 将日志级别设置为 2。该设置记录优先级为 2 或更小的任何消息。

您可以在运行时变动日志级别,措施便是发送 SIGUSR1 旌旗灯号给 Samba 进程来增添日志级别,或发送 SIGUSR2 削减日志级别。

您还可以让您的日志级别更细粒度一些,仅在某些功能中经由过程指定想要记录的种别来增添具体程度。这些种别是:

all。该参数是可选的:假如您不指定额外的关键字,假定应用all。

tdb。与不紧张的数据库相关的日志消息,这是 Samba 应用的键值存储。

printdrivers。打印机驱动法度榜样治理例程。

lanman。 NT LAN Manager 调试。

smb。 SMB 协议调试。

rpc_parse。远程历程调用(RPCs)解析。

rpc_srv。办事器端 RPCs。

rpc_cli。客户端 RPCs。

passdb。在 Samba 主机上存储密码的旧有要领。

sam。本地 Samba 帐户数据库。

auth。Samba 内与用户身份验证相关的各个模块。

winbind。用于容许 Microsoft 用户透明地登录到 UNIX 系统的组件。

vfs。为 Virtual File System 模块调试消息,容许您经由过程可插入模块添加功能到 Samba。

idmap。在 UNIX 用户 IDs 与 Microsoft 安然标识符之间映射身份。

quota。与配额处置惩罚相关的消息,同时由 Microsoft Windows NT 策略和 UNIX 文件系统处置惩罚。

acls。造访节制列表处置惩罚。

locking。文件锁定状态和差错。

msdfs。与 Samba 的散播式文件系统支持相关的日志消息。

dmapi。数据治理利用法度榜样编程接口(API)功能。必须应用第三方 DMAPI 实现编译 Samba 来应用该功能。

registry。Windows 注册表的仿照。

要应用这些额外的日志记录,将关键字和值附加到日志级别参数,用冒号(:)瓜分。例如,log level = 1 winbind:3 将系统默认日志级别设置为 1,并将 winbind 日志级别增添到 3。这一变化可以赞助您调试有关单点登录的问题,而无需淹没于无关的日志文件中。

日志文件位置

要变动日志文件的名称,应用 log file 参数。您还可以在值中应用宏。一个常用的设置是让一个客户端拥有一个日志文件。为此,请指定:

log file = /var/log/samba/log.%m该敕令将单个日志文件瓜分为每个客户端一个文件,另外消息归入 log.smbd。

假如您想将日志记录到 syslog,可以指定 syslog = 1 来将级别 1 或 0 的所有日志发送到本地 syslog 办事器。Samba 应用LOG_DAEMON 对象并将 Samba 日志级别按照如下优先级映射到 syslog:

LOG_ERR。日志级别 0

LOG_WARNING。日志级别 1

LOG_NOTICE。日志级别 2

LOG_INFO。日志级别 3

LOG_DEBUG。日志级别 4 或更高

您应用可以过滤传入的消息并鉴戒系统治理员的一个更高档的 syslog 守护进程,这是监视您的 Samba 办事器的一种很好的要领。

日志元数据

您可以添加或删除显示在带有更多全局参数的所有日志条款中的一些消息:

debug timestamp。添加一个光阴戳到日志消息,且是默认启用的

debug uid。记录天生日志的 Samba 进程的用户和组 IDs

debug prefix timestamp。继承应用光阴戳,然则在天生日志的 Samba 源代码中删除有关位置的信息

debug pid。记录天生日志的 Samba 进程的进程标识符

debug hires timestamp。将光阴戳分辨率改为微秒,而非秒

debug class。记录日志消息的种别,假如您要变动某个类的具体程度这会有所赞助(该选项赞助确定您想要的类。)

日志记录可赞助您找到问题,或者也可以让您处于紊乱中。Samba 供给各类日志记录选项;要审慎应用它们。

系统调用跟踪

假如其他措施都掉败了,您可以应用 UNIX 系统对象查看进程内的状况。Linux strace 法度榜样容许您跟踪利用法度榜样做出的所有系统调用。一个利用法度榜样应用系统调用打开和读取文件、创建和销毁进程,并与操作系统另外进程进行交互。

清单 11 显示 root 用户跟踪一个 Samba 进程,该进程向客户端抛出一个差错。

清单 11. 应用 strace 法度榜样跟踪进程

# 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)第一个敕令查找 Samba 进程列表。因为 Samba 采纳所连接用户的身份,可以轻松将进程 13375 辨觉得属于该用户的进程。接下来,运行带有两个参数的 strace 敕令:-e trace=file 限定与文件相关的系统调用的输出。对付您会碰到的 Samba 问题,这是一个很好的初始预计。第二个参数 -p 13375 奉告 strace 应用这个进程 ID 连接到运行的进程。

从该敕令的输出中,您会看到 smb 在赓续扫描目录看是否有变化。当用户考试测验有问题的操作时,您可能会看到如 清单 11 所示的输出。着末几个敕令考试测验应用 stat64 调用获取目录内有关文件的信息。结果是 permission denied,这表示用户在系统文件级被回绝,而非由 Samba 回绝。该敕令可以为您供给更多信息来办理问题,比如变动目录属性或奉告用户不容许他/她造访目录。

您可能还会对下面的文章感兴趣: