Samba服务smb.conf文件简约配置

因为近期局域网需要,搭建了 Samba 服务,了解一下 Samba 服务 smb.conf 配置文件,顺便组一下配置选项,方便后续复制粘贴。以下是对官方文档一小部分内容的个人翻译,仅供参考,需深入了解最新配置信息请查看官方文档[1]

文件格式

  • 各节包含以下形式的参数:
'name' = 'value'
  • 节名和参数名不区分大小写
  • 参数中只有第一个 = 才有意义,第一个 = 之前或之后的空格将被丢弃,节名和参数名中的带头、结尾和内部的空格无关,参数值带头和结尾的空格将会被丢弃,内部空格保留
  • 任何以 ;# 字符开头的行都会被忽略,仅包含空格的行也会被忽略
  • \ 结尾的任何行都以常规 UNIX 方式在下一行继续
  • 等号参数后面的值都是字符串(不需要引号)或布尔值,它们可以表示为 yes /no,1/0 或 true /false。布尔值中的大小写无关紧要,但保留在字符串值中。

特殊节名: [global]、 [homes]、[printers]

参数替换符

配置文件中可设置的许多字符串都可以替换。例如,如果用户使用用户名 john 连接,则将选项 “path = /tmp/%u” 解释为 “ path = /tmp/john”。

%U 会话用户名(客户端想用的用户名,不一定与他们获得的用户名相同)。

%G %U 的主要组名称。

%h 运行 Samba 的 Internet 主机名。

%m 客户端计算机的 NetBIOS 名称(非常有用)。👇

当 Samba 侦听端口 445 时,此参数不可用,因为客户端不再发送此信息。如果在具有 Samba 域控制器的域上的 include 语句中使用此宏,请确保在 [global] 部分中设置 smb ports =139。这将导致 Samba 无法在端口 445 上进行侦听,并允许包含功能起作用就像使用 Samba 2.x 一样。

%L 服务器的 NetBIOS 名称。这使您可以根据客户端呼叫您的方式更改配置。您的服务器可以具有 “双重个性”。

%M 客户端计算机的 Internet 名称。

%R 协议协商后选定的协议级别。

它可以是 CORE,COREPLUS,LANMAN1,LANMAN2,NT1,SMB2_02,SMB2_10,SMB2_22,SMB2_24,SMB3_00,SMB3_02,SMB3_10,SMB3_11 或 SMB2_FF 之一。

%d 当前服务器进程的进程 ID。

%a 远程计算机的体系结构。

它目前可以识别 Samba(Samba),Linux CIFS 文件系统(CIFSFS),OS / 2,(OS2),Mac OS X(OSX),Windows for Workgroups(WfWg),Windows 9x / ME(Win95),Windows NT( WinNT),Windows 2000(Win2K),Windows XP(WinXP),Windows XP 64 位(WinXP64),包括 2003R2 的 Windows 2003(Win2K3)和 Windows Vista(Vista)。其他任何东西都将被称为未知。

%I 客户端计算机的 IP 地址。
%i 客户端连接到的本地 IP 地址。

在 4.0.0 之前,它可以包含 IPv4 映射的 IPv6 地址,现在它仅包含 IPv4 或 IPv6 地址。

%J 客户端计算机的 IP 地址,用下划线代替冒号或点。
%j 客户端连接到的本地 IP 地址,用下划线代替冒号或点。

%T 当前日期和时间。
%t 当前日期和时间,以不带冒号(YYYYYmmdd_HHMMSS)的最小格式显示。

%D 当前用户的域或工作组的名称。

%w Winbind 分隔符。
%$(envvar) 环境变量 envvar 的值。

以下替代仅适用于某些配置选项(仅适用于建立连接时使用的配置选项):
%S 当前服务的名称(如果有)。

%P 当前服务的根目录(如果有)。

%u 当前服务的用户名(如果有)。

%g %u 的主要组名称。

%H %u 给出的用户的主目录。

%N NIS 主目录服务器的名称。

这是从您的 NIS auto.map 条目获得的。如果尚未使用 --with-automount 选项编译 Samba,则此值将与%L 相同。

%p 服务的主目录的路径,该路径是从您的 NIS auto.map 条目获得的。 NIS auto.map 条目分为%N:%p。

这些替换和其他 smb.conf 选项可以完成一些非常有创意的事情。

自选参数说明

server role

此选项确定 Samba 服务器的基本操作模式,并且是 smb.conf 文件中最重要的设置之一。

默认值为 server role = auto 因为这会使 Samba 根据安全性设置运行,或者如果未指定为未连接到任何域的简单文件服务器,则该服务器将运行。

备用 server role = standaloneserver role = member server 它们支持将 Samba 加入 Windows 域,以及 server role = domain controller ,后者将 Samba 作为 Windows 域控制器运行。

如果要主要设置不带密码的共享(来宾共享),则应使用 server role = standalonemap to guest 。这通常用于共享打印机服务器。
......

map to guest

该参数可以采用四个不同的值,这些值告诉 smbd(8)如何处理与某种有效 UNIX 用户不匹配的用户登录请求。

四个设置是:
Never - 表示用户登录请求的密码无效。这是默认值。

Bad User - 除非用户名不存在,否则使用无效密码的用户登录将被拒绝,在这种情况下,用户名将被视为访客登录并映射到访客帐户。

Bad Password - 意味着使用无效密码的用户登录将被视为访客登录,并映射到访客帐户中。请注意,这可能会引起问题,因为这意味着任何错误输入密码的用户都将以 “来宾” 身份静默登录 - 并且不知道他们无法访问他们认为应该访问的文件的原因 - 不会收到任何消息他们输入的密码错误。如果您通过以下方式将地图设置为来宾参数,则技术支持服务会讨厌您:-)。

Bad Uid - 仅在以某种类型的域模式安全性配置了 Samba 时才适用 (security = {domain|ads}),这意味着已成功通过身份验证但没有有效的 Unix 用户帐户(并且 smbd 无法创建)的用户登录名一个)应映射到已定义的来宾帐户。这是 Samba 2.x 发行版的默认行为。请注意,如果成员服务器正在运行 winbindd,则永远不需要此选项,因为 nss_winbind 库将通过名称服务切换界面将 Windows 域用户和组导出到基础 OS。

请注意,设置 “来宾” 共享服务需要此参数。这是因为在这些模式下,直到服务器成功验证了客户端之后,请求的资源的名称才被发送到服务器,因此服务器无法在正确的时间(“共享” 连接)对 “来宾” 共享做出认证决定。。
...

usershare allow guests

此参数控制未经身份验证的用户是否允许访问用户定义的共享。 这等效于允许可以创建共享的人员在共享定义中将 guest ok = yes 设置为选项。 由于其对安全性敏感的性质,默认设置为关闭。

默认值: usershare allow guests = no

hosts allow/hosts allow

hosts allow 与 hosts allow 是同义词。

此参数是逗号,空格或制表符分隔的主机集,允许访问服务。

如果在 [global] 部分中指定,则它将应用于所有服务,而不管单个服务是否具有不同的设置。

您可以按名称或 IP 号指定主机。例如,您可以使用诸如 allow hosts = 150.203.5. 。这样的限制访问 C 类子网中的主机。...

注意,除非主机拒绝选项明确拒绝,否则将始终允许访问本地地址 127.0.0.1。

如果系统支持网络组,还可以按网络 / 网络掩码对和网络组名称指定主机。 EXCEPT 关键字也可以用于限制通配符列表。以下示例可能会提供一些帮助:

示例 1:允许 IPs in 150.203.*.*; 除了一个

hosts allow = 150.203. EXCEPT 150.203.6.66

示例 2:允许与给定网络 / 网络掩码匹配的主机

hosts allow = 150.203.15.0/255.255.255.0

示例 3:允许几个主机

hosts allow = lapland, arvidsjaur

示例 4:仅允许 NIS 网络组 “foonet” 中的主机,但拒绝来自一台特定主机的访问

hosts allow = @foonet
hosts deny = pirate

请注意,访问仍然需要适当的用户级密码。...

默认值: hosts allow = # none (即所有主机都允许访问)

示例: hosts allow = 150.203.5. myhost.mynet.edu.au

hosts deny/deny hosts

hosts deny 与 deny hosts 是同义词。

与 hosts allow 相反,不允许此处列出的主机访问服务,除非特定服务具有自己的列表以覆盖该列表。 如果列表冲突,则允许列表优先。

如果需要默认情况下拒绝所有主机,请使用关键字 ALL(或网络掩码 0.0.0.0/0),然后指定 hosts allow = hosts 参数,这些主机应被允许访问。

默认值: hosts deny =#none (即,没有专门排除的主机)
示例: hosts deny = 150.203.4. badhost.mynet.edu.au

guest ok

如果服务的此参数为 yes,则不需要密码即可连接到服务。 特权将是来宾帐户的特权。

默认值: guest ok = no

read only

反义词是 writeable

如果此参数为 yes,则服务的用户不能在该服务的目录中创建或修改文件。

请注意,可打印服务(printable = yes)将始终允许写入目录(允许用户权限),但只能通过假脱机操作进行。
默认值: read only = yes

path

此参数指定要向服务用户授予访问权限的目录。 对于可打印服务,这是在将打印数据提交给主机进行打印之前将其后台打印的位置。

对于提供来宾访问的可打印服务,该服务应为只读,并且路径应为世界可写的并且设置了粘性位。 这当然不是强制性的,但是如果不这样做,您可能不会获得预期的结果。

路径中所有出现的%u 都将替换为客户端在此连接上使用的 UNIX 用户名。 任何出现的%m 都将由它们连接到的计算机的 NetBIOS 名称替换。 这些替换对于为用户设置伪主目录非常有用。

请注意,如果指定了该路径,则该路径将基于根目录。

默认值: path =

示例: path = /home/fred

comment

这是一个文本字段,当客户端通过网络邻域或通过网络视图查询可用的共享时,在客户端对服务器进行查询时会显示在共享旁边。

如果要设置机器名称旁边显示的字符串,请参阅服务器字符串参数。

默认值: comment =#无评论

示例: comment = Fred's Files

force create mod

此参数指定一组 UNIX 模式位权限,这些权限将始终在 Samba 创建的文件上设置。 这是通过将这些位按位 “或” 到正在创建的文件的模式位上来完成的。 此参数的默认值为(八进制)000。应用了 create mask 参数中设置的掩码后,此参数中的模式按位 “或” 到文件模式。

下面的示例将强制所有新创建的文件具有为 “group” 和 “other” 设置的读取和执行权限,以及为 “用户” 设置的读取 / 写入 / 执行位。

默认值: force create mode = 0000
示例: force create mode = 0755

force group

这指定了一个 UNIX 组名称,该名称将分配给所有连接到该服务的用户的默认主要组。通过确保对服务中文件的所有访问都将使用命名组进行权限检查,这对于共享文件很有用。因此,通过将此组的权限分配给此服务中的文件和目录,Samba 管理员可以限制或允许共享这些文件。

在 Samba 2.0.5 及更高版本中,此参数以以下方式扩展了功能。如果此处列出的组名前面带有 “+” 字符,则访问共享的当前用户仅将默认主组分配给该组(如果已将其分配为该组的成员)。这样,管理员可以决定只有已经在特定组中的用户才能创建具有该组的组所有权的文件。这样可以为所有权分配提供更好的粒度。例如,设置 force group = + sys 表示仅当已经在 sys 组中的用户访问此 Samba 共享时,才将其默认主组分配给 sys。所有其他用户将保留其普通的主要组。

如果还设置了 force user 参数,则在 force group 中指定的组将覆盖在 force user 中设置的主要组。

默认值: force group =
示例: force group = agroup

force user

这指定了一个 UNIX 用户名,该用户名将分配给所有连接到该服务的用户的默认用户。 这对于共享文件很有用。 您还应谨慎使用它,因为不正确使用它会导致安全问题。

建立连接后,才会使用此用户名。 因此,客户端仍然需要以有效用户身份连接并提供有效密码。 连接后,无论客户端以何种用户名连接,所有文件操作都将作为 “强制用户” 执行。 这可能非常有用。

在 Samba 2.0.5 及更高版本中,此参数还将使强制用户的主要组用作所有文件活动的主要组。 在 2.0.5 之前,主要组保留为连接用户的主要组(这是一个错误)。

默认值: force user =

示例: force user = auser

-END-

自选配置项

[global]
	server role = standalone server
	map to guest = Bad User
	usershare allow guests = yes
	hosts allow = 192.168.0.0/16
	hosts deny = 0.0.0.0/0
	
[sharedfolder]
	path = /home/feicy/shared folder
	comment = shared folder
	read only = no
	guest ok = yes
	force create mod = 0755
	force group = feicy
	force user = feicy
	

  1. https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html ↩︎


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以邮件至feicyblog@hotmail.com