第 16 章 文件和打印服务器
本章将引导您完成 Samba 的安装和配置,这是 服务器信息块( SMB)和 通用互联网文件系统 (CIFS)协议的开源实施,以及由 Red Hat Enterprise Linux 提供的主 FTP 服务器。此外,还介绍了如何使用 "打印设置" 工具来配置打印机。
16.1. Samba 复制链接链接已复制到粘贴板!
Samba 在红帽企业 Linux 中实施服务器消息块(SMB)协议。SMB 协议用于访问服务器上的资源,如文件共享和共享打印机。此外,Samba 实施由 Microsoft Windows 使用的分布式计算环境远程过程调用(DCE RPC)协议。
您可以以以下方式运行 Samba:
- Active Directory(AD)或 NT4 域成员
- 独立服务器
NT4 主域控制器(PDC)或备份域控制器(BDC)
注意红帽仅在支持 NT4 域的现有安装中支持这些模式。红帽建议不要设置新的 Samba NT4 域,因为 Microsoft 操作系统稍后于 Windows 7 和 Windows Server 2008 R2 不支持 NT4 域。
独立于安装模式,您可以选择共享目录和打印机。这可让 Samba 充当文件和打印服务器。
红帽不支持将 Samba 作为 AD 域控制器(DC)运行。
16.1.1. Samba 服务 复制链接链接已复制到粘贴板!
Samba 提供以下服务:
smbd此服务使用 SMB 协议提供文件共享和打印服务。另外,该服务负责资源锁定和验证连接用户。
smbsystemd服务启动并停止smbd守护进程。要使用
smbd服务,请安装 samba 软件包。nmbd此服务通过 IPv4 协议使用 NetBIOS 提供主机名和 IP 解析。除了名称解析之外,
nmbd服务还支持浏览 SMB 网络来查找域、工作组、主机、文件共享和打印机。为此,服务可将此信息直接报告给广播客户端,或者将其转发到本地或主浏览器。nmbsystemd服务启动并停止nmbd守护进程。请注意,现代 SMB 网络使用 DNS 解析客户端和 IP 地址。
要使用
nmbd服务,请安装 samba 软件包。winbinddwinbindd服务为名称服务交换机(NSS)提供接口,以使用 AD 或 NT4 域用户和组在本地系统上。例如,这使域用户能够向 Samba 服务器托管的服务或其他本地服务进行身份验证。winbindsystemd服务启动并停止winbindd守护进程。如果将 Samba 设置为域成员,必须在
smb。否则,本地系统无法使用域用户和组。d 服务之前启动 winbindd要使用
winbindd服务,请安装 samba-winbind 软件包。重要红帽仅支持将 Samba 作为带有
winbindd服务的服务器运行,以便为本地系统提供域用户和组。由于某些限制,如缺少 Windows 访问控制列表(ACL)支持和 NT LAN Manager(NTLM)回退,这些用例目前不支持使用带有 Samba 的系统安全服务守护进程(SSSD)。详情请查看 Red Hat 知识库文章在 IdM 客户端上运行的 Samba 文件服务器的支持状态是什么,或直接注册了 SSSD 用作客户端守护进程的 AD 客户端。
16.1.2. 使用 testparm 实用程序验证 smb.conf 文件 复制链接链接已复制到粘贴板!
testparm 实用程序验证 /etc/samba/smb.conf 文件中的 Samba 配置是否正确。实用程序检测无效的参数和值,但也检测不正确的设置,如 ID 映射。如果 testparm 报告没有问题,Samba 服务将成功加载 /etc/samba/smb.conf 文件。请注意,testparm 无法验证配置的服务是否可用或按预期工作。
红帽建议在每次修改此文件后使用 testparm 来验证 /etc/samba/smb.conf 文件。
要验证 /etc/samba/smb.conf 文件,请以 root 用户身份运行 testparm 实用程序。如果 testparm 报告了配置中不正确的参数、值或其他错误,请修复问题并再次运行 实用程序。
例 16.1. 使用 testparm
以下输出报告了一个不存在的参数和不正确的 ID 映射配置:
16.1.3. 了解 Samba 安全模式 复制链接链接已复制到粘贴板!
/etc/samba/smb.conf 文件中的 [global] 部分中的 security 参数管理 Samba 如何验证连接到该服务的用户的身份。根据您在其中安装 Samba 的模式,参数必须设为不同的值:
在 AD 域成员中,设置
security=ads。在这个模式中,Samba 使用 Kerberos 来验证 AD 用户。
有关将 Samba 设置为域成员的详情,请参考 第 16.1.5 节 “将 Samba 设置为域成员”。
在单机服务器上,设置
security=user。在这个模式中,Samba 使用本地数据库验证连接用户。
有关将 Samba 设置为单机服务器的详情,请参考 第 16.1.4 节 “将 Samba 设置为单机服务器”。
在 NT4 PDC 或 BDC 上,设置
security=user.在此模式中,Samba 将用户身份验证到本地或 LDAP 数据库。
在 NT4 域成员上,设置
security=domain。在此模式中,Samba 验证将用户连接到 NT4 PDC 或 BDC 的身份。您不能在 AD 域成员中使用这个模式。
有关将 Samba 设置为域成员的详情,请参考 第 16.1.5 节 “将 Samba 设置为域成员”。
详情请查看 smb.conf(5)man page 中的 security 参数描述。
16.1.4. 将 Samba 设置为单机服务器 复制链接链接已复制到粘贴板!
在某些情况下,管理员希望设置不属于某个域成员的 Samba 服务器。在此安装模式中,Samba 对用户进行本地数据库而非中央 DC 身份验证。另外,您可以启用客户机访问,允许用户在没有身份验证的情况下连接到一个或多个服务。
16.1.4.1. 为单机服务器设置服务器配置 复制链接链接已复制到粘贴板!
将 Samba 设置为单机服务器:
将 Samba 设置为单机服务器
安装 samba 软件包:
yum install samba
~]# yum install sambaCopy to Clipboard Copied! Toggle word wrap Toggle overflow 编辑
/etc/samba/smb.conf文件并设置以下参数:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此配置在
Example-learning 工作组中定义了一个名为此外,此配置启用了最小级别Server的单机服务器。(1)的日志记录,日志文件将存储在/var/log/samba/目录中。Samba 会将日志文件参数中的%m宏扩展到连接客户端的 NetBIOS 名称。这可为每个客户端启用独立的日志文件。详情请查看 smb.conf(5)man page 中的参数描述。
配置文件或打印机共享.请参阅:
验证
/etc/samba/smb.conf文件:testparm
~]# testparmCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 如果您设置了需要身份验证的共享,请创建用户帐户。详情请查看 第 16.1.4.2 节 “创建和启用本地用户帐户”。
打开所需的端口并使用
firewall-cmd工具重新载入防火墙配置:firewall-cmd --permanent --add-port={139/tcp,445/tcp} firewall-cmd --reload~]# firewall-cmd --permanent --add-port={139/tcp,445/tcp} ~]# firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启动
smb服务:systemctl start smb
~]# systemctl start smbCopy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,还可在系统引导时启用
smb服务自动启动:systemctl enable smb
~]# systemctl enable smbCopy to Clipboard Copied! Toggle word wrap Toggle overflow
16.1.4.2. 创建和启用本地用户帐户 复制链接链接已复制到粘贴板!
要让用户在连接到共享时进行身份验证,您必须在操作系统和 Samba 数据库中在 Samba 主机上创建帐户。Samba 要求操作系统帐户验证文件系统对象上的访问控制列表(ACL)和 Samba 帐户,从而对连接用户进行身份验证。
如果您使用 passdb backend = tdbsam 默认设置,Samba 会将用户帐户存储在 /var/lib/samba/private/passdb.tdb 数据库中。
例如,要创建 Samba 用户示例:
创建 Samba 用户
创建操作系统帐户:
useradd -M -s /sbin/nologin example
~]# useradd -M -s /sbin/nologin exampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 上一命令在不创建主目录的情况下添加
example帐户。如果帐户仅用于对 Samba 进行身份验证,请将/sbin/nologin命令指定为 shell,以防止帐户在本地登录。为操作系统帐户设置密码以启用它:
passwd example
~]# passwd example Enter new UNIX password: password Retype new UNIX password: password passwd: password updated successfullyCopy to Clipboard Copied! Toggle word wrap Toggle overflow Samba 不会使用操作系统帐户中的密码集进行身份验证。然而,您需要设置密码才能启用帐户。如果一个帐户被禁用,当这个用户连接时,Samba 会拒绝访问。
将用户添加到 Samba 数据库,并为帐户设置密码:
smbpasswd -a example
~]# smbpasswd -a example New SMB password: password Retype new SMB password: password Added user example.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当使用此帐户连接到 Samba 共享时,使用此密码进行验证。
启用 Samba 帐户:
smbpasswd -e example
~]# smbpasswd -e example Enabled user example.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.1.5. 将 Samba 设置为域成员 复制链接链接已复制到粘贴板!
运行 AD 或 NT4 域的管理员通常希望使用 Samba 将其红帽企业 Linux 服务器作为该域的成员加入。这可让您:
- 访问其他域成员上的域资源
-
向本地服务(如
sshd)验证域用户 - 托管在服务器上的共享目录和打印机,以充当文件和打印服务器
16.1.5.1. 加入域 复制链接链接已复制到粘贴板!
要将 Red Hat Enterprise Linux 系统加入到域中:
将 Red Hat Enterprise Linux 系统加入一个域
安装以下软件包:
yum install realmd oddjob-mkhomedir oddjob samba-winbind-clients \ samba-winbind samba-common-tools~]# yum install realmd oddjob-mkhomedir oddjob samba-winbind-clients \ samba-winbind samba-common-toolsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要在域成员中共享目录或打印机,请安装 samba 软件包:
yum install samba
~]# yum install sambaCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您加入 AD,还要安装 samba-winbind-krb5-locator 软件包:
yum install samba-winbind-krb5-locator
~]# yum install samba-winbind-krb5-locatorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 此插件可让 Kerberos 根据使用 DNS 服务记录的 AD 站点查找密钥分发中心(KDC)。
另外,还可重命名现有的
/etc/samba/smb.confSamba 配置文件:mv /etc/samba/smb.conf /etc/samba/smb.conf.old
~]# mv /etc/samba/smb.conf /etc/samba/smb.conf.oldCopy to Clipboard Copied! Toggle word wrap Toggle overflow 加入域。例如,要加入名为
ad.example.com的域realm join --membership-software=samba --client-software=winbind ad.example.com
~]# realm join --membership-software=samba --client-software=winbind ad.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用上一命令,
realm工具会自动:-
为
ad.example文件.com 域中的成员资格创建 /etc/samba/smb.conf -
将用户和组查找的
winbind模块添加到/etc/nsswitch.conf文件中 -
更新
/etc/pam.d/目录中的可插拔验证模块(PAM)配置文件 启动
winbind服务并使服务在系统引导时启动有关
realm实用程序的详情,请查看 域(8)man page 和 Red Hat Windows 集成指南中 的对应章节。
-
为
-
(可选)在
/etc/samba/smb.conf文件中设置替代 ID 映射后端或自定义 ID 映射设置。详情请查看 第 16.1.5.3 节 “了解 ID 映射”。 - (可选)验证配置。请参阅 第 16.1.5.2 节 “验证 Samba 正确加入为域成员”。
验证
winbindd是否正在运行:systemctl status winbind
~]# systemctl status winbindCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重要要启用 Samba 查询域用户和组信息,必须在启动
smb服务。d 之前运行 winbindd如果您安装了 samba 软件包来共享目录和打印机,请启动
smbd服务:systemctl start smb
~]# systemctl start smbCopy to Clipboard Copied! Toggle word wrap Toggle overflow
16.1.5.2. 验证 Samba 正确加入为域成员 复制链接链接已复制到粘贴板!
加入红帽企业 Linux 作为域成员后,您可以运行不同的测试来验证该连接是否成功。请参阅:
验证操作系统是否可以恢复域用户帐户和组
使用 getent 实用程序验证操作系统是否可以检索域用户和组。例如:
查询
AD域中的管理员帐户:getent passwd AD\\administrator
~]# getent passwd AD\\administrator AD\administrator:*:10000:10000::/home/administrator@AD:/bin/bashCopy to Clipboard Copied! Toggle word wrap Toggle overflow 查询
AD域中Domain Users组的成员:getent group "AD\\Domain Users"
~]# getent group "AD\\Domain Users" AD\domain users:x:10000:userCopy to Clipboard Copied! Toggle word wrap Toggle overflow
如果 命令正常工作,请验证您可以在设置文件和目录的权限时使用域用户和组。例如,将 /srv/samba/example.txt 文件的所有者设置为 AD\administrator,组设置为 AD\Domain Users :
chown "AD\administrator":"AD\Domain Users" /srv/samba/example.txt
~]# chown "AD\administrator":"AD\Domain Users" /srv/samba/example.txt
验证 AD 域用户是否可以获取 Kerberos 票据
在 AD 环境中,用户可以从 DC 获取 Kerberos 票据。例如,验证 管理员用户 是否可以获取 Kerberos 票据:
若要使用 kinit 和 klist 实用程序,可在 Samba 域成员 上安装 krb5-workstation 软件包。
获取 Kerberos 票据
获取
administrator@AD.EXAMPLE.COM主体的票据:kinit administrator@AD.EXAMPLE.COM
~]# kinit administrator@AD.EXAMPLE.COMCopy to Clipboard Copied! Toggle word wrap Toggle overflow 显示缓存的 Kerberos ticket:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
列出可用的域
要通过 winbindd 服务列出所有可用的域,请输入:
wbinfo --all-domains
~]# wbinfo --all-domains
如果 Samba 成功作为域成员加入,命令可显示内置和本地主机名,以及包含受信任域的成员。
例 16.2. 显示可用域
wbinfo --all-domains
~]# wbinfo --all-domains
BUILTIN
SAMBA-SERVER
AD
16.1.5.3. 了解 ID 映射 复制链接链接已复制到粘贴板!
Windows 域通过唯一的安全标识符(SID)区分用户和组。但是,Linux 需要为每个用户和组群有唯一的 UID 和 GID。如果您以域成员身份运行 Samba,winbindd 服务负责向操作系统提供域用户和组的信息。
要启用 winbindd 服务为用户和组向 Linux 提供唯一 ID,您必须在 /etc/samba/smb.conf 文件中为以下目的配置 ID 映射:
- 本地数据库(默认域)
- Samba 服务器所属的 AD 或 NT4 域
- 每个用户必须能够访问这个 Samba 服务器上的资源的可信域
16.1.5.3.1. 规划 ID 范围 复制链接链接已复制到粘贴板!
无论您是在 AD 中存储 Linux UID 和 GID,还是将 Samba 配置为生成它们,每个域配置都需要一个唯一的 ID 范围,不得与任何其他域重叠。
如果您设置了重叠 ID 范围,Samba 无法正常工作。
例 16.3. 唯一的 ID 范围
以下显示了默认(*)、AD-DOM 和 域的非覆盖 ID 映射范围。
TRUST-DOM
每个域只能分配一个范围。因此,在域范围之间有足够的空间。这可让您在域扩展后扩展范围。
如果您稍后将不同的范围分配给某个域,这些用户和组之前创建的文件和目录的所有权将会丢失。
16.1.5.3.2. * 默认域 复制链接链接已复制到粘贴板!
在域环境中,您可以为以下每个情况添加一个 ID 映射配置:
- Samba 服务器所属的域
- 每个可以访问 Samba 服务器的可信域
但是,对于所有其他对象,Samba 会从默认域分配 ID。这包括:
- 本地 Samba 用户和组
-
Samba 内置帐户和组,如
BUILTIN\Administrators
您必须配置默认域,如本节所述,才能使 Samba 正常运行。
默认域后端必须可写,才能永久存储分配的 ID。
对于默认域,您可以使用以下后端之一:
tdb当您将默认域配置为使用
tdb后端时,设置一个足够大的 ID 范围,使其包含将来将要创建并且不属于定义的域 ID 映射配置的对象。例如,在
/etc/samba/smb.conf文件中的[global]部分中设置以下内容:idmap config * : backend = tdb idmap config * : range = 10000-999999
idmap config * : backend = tdb idmap config * : range = 10000-999999Copy to Clipboard Copied! Toggle word wrap Toggle overflow autorid当您将默认域配置为使用
自动后端时,可以为域添加额外的 ID 映射配置是可选的。例如,在
/etc/samba/smb.conf文件中的[global]部分中设置以下内容:idmap config * : backend = autorid idmap config * : range = 10000-999999
idmap config * : backend = autorid idmap config * : range = 10000-999999Copy to Clipboard Copied! Toggle word wrap Toggle overflow 详情请查看 配置
自动后端。
16.1.5.4. 不同的 ID 映射后端 复制链接链接已复制到粘贴板!
Samba 为特定配置提供不同的 ID 映射后端。最常用的后端是:
| 后端 | 使用案例 |
|---|---|
|
|
|
|
| 仅限 AD 域 |
|
| AD 和 NT4 域 |
|
|
AD、NT4 和 |
以下小节介绍了后端的优势、使用后端的建议场景以及配置方法。
16.1.5.4.1. 使用 tdb ID 映射后端 复制链接链接已复制到粘贴板!
winbindd 服务默认使用可写 tdb ID 映射后端来存储安全标识符(SID)、UID 和 GID 映射表。这包括本地用户、组和内置主体。
仅将此后端用于 * 默认域。例如:
idmap config * : backend = tdb idmap config * : range = 10000-999999
idmap config * : backend = tdb
idmap config * : range = 10000-999999
有关 * 默认域的详情,请参考 第 16.1.5.3.2 节 “* 默认域”。
16.1.5.4.2. 使用 ad ID 映射后端 复制链接链接已复制到粘贴板!
ad ID 映射后端实施只读 API,以从 AD 读取帐户和组信息。它具有以下优点:
- 所有用户和组群设置都集中存储在 AD 中。
- 使用这个后端的所有 Samba 服务器中的用户和组群 ID 是一致的。
- ID 不会存储在本地数据库中(本地数据库可能会被损坏),因此文件所有者不会丢失。
ad 后端从 AD 中读取以下属性:
| AD Attribute Name | 对象类型 | 映射到 |
|---|---|---|
|
| 用户和组群 | 用户和组名称,具体取决于对象 |
|
| 用户 | 用户 ID(UID) |
|
| 组 | 组 ID(GID) |
|
| 用户 | 用户 shell 的路径 |
|
| 用户 | 用户主目录的路径 |
|
| 用户 | 主组群 ID |
[a]
如果您设置了 idmap config DOMAIN:unix_nss_info = yes,则 Samba 仅读取此属性。
[b]
如果您设置了 idmap config DOMAIN:unix_primary_group = yes,则 Samba 仅读取此属性。
| ||
后端 的先决条件
使用 ad ID 映射后端:
-
用户和组必须在 AD 中设置唯一 ID,并且 ID 必须在
/etc/samba/smb.conf文件中配置的范围范围内。ID 范围之外的对象在 Samba 服务器上不可用。 -
用户和组必须在 AD 中设置所有必需的属性。如果缺少所需的属性,该用户或组将无法在 Samba 服务器中可用。所需的属性取决于您的配置。请参阅 表 16.2 “属性从用户和组对象中读取
ad后端”。
配置 ad Backendd
将 Samba AD 成员配置为使用 ad ID 映射后端:
在域成员中配置 ad Backd
编辑
/etc/samba/smb.conf文件中的[global]部分:如果默认域(
*)不存在,请为它添加 ID 映射配置。例如:idmap config * : backend = tdb idmap config * : range = 10000-999999
idmap config * : backend = tdb idmap config * : range = 10000-999999Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关默认域配置的详情,请参考 第 16.1.5.3.2 节 “
*默认域”。为 AD 域启用
adID 映射后端:idmap config DOMAIN : backend = ad
idmap config DOMAIN : backend = adCopy to Clipboard Copied! Toggle word wrap Toggle overflow 设置分配给 AD 域中用户和组的 ID 范围。例如:
idmap config DOMAIN : range = 2000000-2999999
idmap config DOMAIN : range = 2000000-2999999Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要范围不得与这个服务器上的任何其他域配置重叠。此外,范围必须足够大,以便包含将来分配的所有 ID。详情请查看 第 16.1.5.3.1 节 “规划 ID 范围”。
设置 Samba 在读取 AD 属性时使用 RFC 2307 模式:
idmap config DOMAIN : schema_mode = rfc2307
idmap config DOMAIN : schema_mode = rfc2307Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要让 Samba 从对应的 AD 属性读取登录 shell 和用户主目录的路径,请设置:
idmap config DOMAIN : unix_nss_info = yes
idmap config DOMAIN : unix_nss_info = yesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,您可以设置应用于所有用户的统一的域范围的主目录路径和登录 shell。例如:
template shell = /bin/bash template homedir = /home/%U
template shell = /bin/bash template homedir = /home/%UCopy to Clipboard Copied! Toggle word wrap Toggle overflow 有关变量替换的详情,请查看 smb.conf(5)man page 中的 VARIABLE SUBSTITUTIONS 部分。
默认情况下,Samba 使用用户对象的
primaryGroupID属性作为 Linux 上用户的主组。或者,您可以将 Samba 配置为使用 thegidNumber属性中设置的值:idmap config DOMAIN : unix_primary_group = yes
idmap config DOMAIN : unix_primary_group = yesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
/etc/samba/smb.conf文件:testparm
~]# testparmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重新载入 Samba 配置:
smbcontrol all reload-config
~]# smbcontrol all reload-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证设置是否按预期工作。请参阅 “验证操作系统是否可以恢复域用户帐户和组”一节。
详情请查看 smb.conf(5)和 idmap_ad(8)man page。
16.1.5.4.3. 使用丢弃 的 ID 映射后端 复制链接链接已复制到粘贴板!
Samba 可以使用 Windows SID 的相对标识符(RID)在 Red Hat Enterprise Linux 上生成 ID。
RID 是 SID 的最后部分。例如,如果用户的 SID 是 S-1-5-21-5421822485-1151247151-421485315-30014,则 30014 是对应的 RID。详情请查看 Samba 如何计算本地 ID,请参阅 idmap_rid(8)man page。
删除的 ID 映射后端实施只读 API,以根据 AD 和 NT4 域的算法映射方案计算帐户和组信息。配置后端时,您必须在 idmap config DOMAIN : range 参数中设置最低和最高的 RID。Samba 不会映射比这个参数中设置低或更高 RID 的用户或组。
作为只读后端,删除 无法 分配新 ID,例如用于 BUILTIN 组。因此,请勿将此后端用于 * 默认域。
优点
- 所有在配置范围内具有 RID 的域用户和组都会自动在域成员中可用。
- 您不需要手动分配 ID、主目录和登录 shell。
缺陷
- 所有域用户可以获得相同的登录 shell 和主目录。但是,您可以使用变量。
-
如果所有删除
后端都使用相同的 ID 范围设置,则用户和组 ID 仅在 Samba 域成员之间相同。 - 您不能阻止单独的用户或组在域成员中可用。只有超出配置范围以外的用户和组才会包括。
-
根据
winbindd服务用于计算 ID 的公式,如果不同域中的对象具有相同的 RID,则重复 ID 可能会在多域环境中发生。
配置 删除 的后端
将 Samba 域成员配置为使用丢弃 ID 映射后端:
在 域 成员中配置删除的后端
编辑
/etc/samba/smb.conf文件中的[global]部分:如果默认域(
*)不存在,请为它添加 ID 映射配置。例如:idmap config * : backend = tdb idmap config * : range = 10000-999999
idmap config * : backend = tdb idmap config * : range = 10000-999999Copy to Clipboard Copied! Toggle word wrap Toggle overflow 有关默认域配置的详情,请参考 第 16.1.5.3.2 节 “
*默认域”。为域启用丢弃的
ID映射后端:idmap config DOMAIN : backend = rid
idmap config DOMAIN : backend = ridCopy to Clipboard Copied! Toggle word wrap Toggle overflow 设置一个足够大的范围,使其包含将来将分配的所有 RID。例如:
idmap config DOMAIN : range = 2000000-2999999
idmap config DOMAIN : range = 2000000-2999999Copy to Clipboard Copied! Toggle word wrap Toggle overflow Samba 会忽略此域中 RID 不在 范围内的用户和组。
重要范围不得与这个服务器上的任何其他域配置重叠。详情请查看 第 16.1.5.3.1 节 “规划 ID 范围”。
设置分配给所有映射用户的 shell 和主目录路径。例如:
template shell = /bin/bash template homedir = /home/%U
template shell = /bin/bash template homedir = /home/%UCopy to Clipboard Copied! Toggle word wrap Toggle overflow 有关变量替换的详情,请查看 smb.conf(5)man page 中的 VARIABLE SUBSTITUTIONS 部分。
验证
/etc/samba/smb.conf文件:testparm
~]# testparmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重新载入 Samba 配置:
smbcontrol all reload-config
~]# smbcontrol all reload-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证设置是否按预期工作。请参阅 “验证操作系统是否可以恢复域用户帐户和组”一节。
16.1.5.4.4. 使用自动 ID 映射后端 复制链接链接已复制到粘贴板!
自动后端 的工作方式类似于丢弃的 ID 映射后端,但可以自动为不同的域分配 ID。这可让您 在以下情况下使用自动 后端:
-
仅用于
*默认域。 -
对于
*默认域和其他域,无需为每个额外域创建 ID 映射配置。 - 仅供特定域使用.
优点
- 所有在配置范围内计算 UID 和 GID 的域用户和组都会在域成员中自动可用。
- 您不需要手动分配 ID、主目录和登录 shell。
- 没有重复的 ID,即使多域环境中的多个对象有相同的 RID。
缺陷
- 在 Samba 域成员中用户和组群 ID 不相同。
- 所有域用户可以获得相同的登录 shell 和主目录。但是,您可以使用变量。
- 您不能阻止单独的用户或组在域成员中可用。只有计算 UID 或 GID 不在配置范围内的用户和组才会包括。
配置 自动 后端
将 Samba 域成员配置为使用 * 默认域的 自动 ID 映射后端:
如果您对默认域使用 autorid,可以为域添加额外的 ID 映射配置是可选的。
在域 成员中配置自动 后端
编辑
/etc/samba/smb.conf文件中的[global]部分:为
*默认域启用自动 ID映射后端:idmap config * : backend = autorid
idmap config * : backend = autoridCopy to Clipboard Copied! Toggle word wrap Toggle overflow 设置一个足够大的范围来为所有现有和将来的对象分配 ID。例如:
idmap config * : range = 10000-999999
idmap config * : range = 10000-999999Copy to Clipboard Copied! Toggle word wrap Toggle overflow Samba 忽略在此域中计算 ID 不在范围范围内的用户和组。有关后端如何计算 ID 的详情,请查看 idmap_autorid(8)man page 中的 THE MAPPING FORMULAS 部分。
警告设置范围并开始使用 Samba 后,您只能增加范围的上限。对范围的任何其他更改都可能导致新的 ID 分配,从而释放文件所有权。
另外,还可设置范围大小。例如:
idmap config * : rangesize = 200000
idmap config * : rangesize = 200000Copy to Clipboard Copied! Toggle word wrap Toggle overflow Samba 会为每个域的对象分配这个数量的连续 ID,直到获取
idmap config * : range参数中设置范围中的所有 ID。详情请查看 idmap_autorid(8)man page 中的rangesize参数描述。设置分配给所有映射用户的 shell 和主目录路径。例如:
template shell = /bin/bash template homedir = /home/%U
template shell = /bin/bash template homedir = /home/%UCopy to Clipboard Copied! Toggle word wrap Toggle overflow 有关变量替换的详情,请查看 smb.conf(5)man page 中的 VARIABLE SUBSTITUTIONS 部分。
另外,还可为域添加额外的 ID 映射配置。如果没有单个域的配置可用,Samba 使用之前配置的
*默认域中的自动后端设置来计算 ID。重要如果您为单个域配置额外的后端,则所有 ID 映射配置的范围不得互相重叠。详情请查看 第 16.1.5.3.1 节 “规划 ID 范围”。
验证
/etc/samba/smb.conf文件:testparm
~]# testparmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重新载入 Samba 配置:
smbcontrol all reload-config
~]# smbcontrol all reload-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证设置是否按预期工作。请参阅 “验证操作系统是否可以恢复域用户帐户和组”一节。
16.1.7. 设置 Samba 打印服务器 复制链接链接已复制到粘贴板!
如果您将 Samba 设置为打印服务器,则网络中的客户端可以使用 Samba 进行打印。此外,如果配置了 Windows 客户端,可以从 Samba 服务器下载该驱动程序。
在共享打印机前,请设置 Samba:
16.1.7.1. Samba spoolsd 服务 复制链接链接已复制到粘贴板!
Samba 假脱机是一种 集成到 smbd 服务中的服务。在 Samba 配置 中启用假脱机,以显著提高具有大量作业或打印机的打印服务器的性能。
如果没有 spoolsd,Samba 就会对 smbd 进程执行分叉,并为每个打印作业初始化 printcap 缓存。如果有大量打印机,smb d 服务可能会在初始化缓存时多秒钟内变得无响应。spoolssd 服务可让您启动处理打印作业的预派 smbd 进程。主 spoolsd smbd 进程使用较少的内存,分叉和终止子进程。
启用 spoolsd 服务:
启用 spoolsd 服务
编辑
/etc/samba/smb.conf文件中的[global]部分:添加以下参数:
rpc_server:spoolss = external rpc_daemon:spoolssd = fork
rpc_server:spoolss = external rpc_daemon:spoolssd = forkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 另外,您可以设置以下参数:
Expand 参数 Default(默认) 描述 spoolssd:prefork_min_children
5
最小子进程数量
spoolssd:prefork_max_children
25
子进程的最大数量
spoolssd:prefork_spawn_rate
5
Samba 在此参数中设置的新子进程数量中分叉,最多为
spoolsd:prefork_max_children中设置的值(如果建立新连接)spoolssd:prefork_max_allowed_clients
100
客户端数,子进程服务
spoolssd:prefork_child_min_life
60
子进程的最低生命周期(以秒为单位)。60 秒是最小的。
验证
/etc/samba/smb.conf文件:testparm
~]# testparmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重启
smb服务:systemctl restart smb
~]# systemctl restart smbCopy to Clipboard Copied! Toggle word wrap Toggle overflow
重启该服务后,Samba 会自动启动 smbd 子进程:
16.1.7.2. 在 Samba 中启用打印服务器支持 复制链接链接已复制到粘贴板!
启用打印服务器支持:
在 Samba 中启用打印服务器支持
在 Samba 服务器上,设置 CUPS 并将打印机添加到 CUPS 后端。详情请查看 第 16.3 节 “打印设置”。
注意只有 Samba 打印服务器上本地安装了 CUPS 时,Samba 才能将打印作业转发到 CUPS。
编辑
/etc/samba/smb.conf文件:如果要启用
spoolsd服务,请在[global]部分添加以下参数:rpc_server:spoolss = external rpc_daemon:spoolssd = fork
rpc_server:spoolss = external rpc_daemon:spoolssd = forkCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要配置打印后端,请添加
[printers]部分:[printers] comment = All Printers path = /var/tmp/ printable = yes create mask = 0600
[printers] comment = All Printers path = /var/tmp/ printable = yes create mask = 0600Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要打印机共享名称是硬编码的,无法更改。
验证
/etc/samba/smb.conf文件:testparm
~]# testparmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 打开所需的端口并使用
firewall-cmd工具重新载入防火墙配置:firewall-cmd --permanent --add-service=samba firewall-cmd --reload
~]# firewall-cmd --permanent --add-service=samba ~]# firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重启
smb服务:systemctl restart smb
~]# systemctl restart smbCopy to Clipboard Copied! Toggle word wrap Toggle overflow
重新启动 服务后,Samba 会自动共享在 CUPS 后端中配置的所有打印机。如果您只想手动共享特定打印机,请参阅 第 16.1.7.3 节 “手动共享特定打印机”。
16.1.7.3. 手动共享特定打印机 复制链接链接已复制到粘贴板!
如果您将 Samba 配置为打印服务器,默认情况下,Samba 共享 CUPS 后端配置的所有打印机。仅共享特定的打印机:
手动共享特定打印机
编辑
/etc/samba/smb.conf文件:在
[global]部分中,通过设置禁用自动打印机共享:load printers = no
load printers = noCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为您要共享的每个打印机添加 部分。例如,要在 Samba 中将 CUPS 后端中名为
example的打印机共享为Example-Printer,请添加以下部分:[Example-Printer] path = /var/tmp/ printable = yes printer name = example
[Example-Printer] path = /var/tmp/ printable = yes printer name = exampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您不需要为每个打印机单独设置 spool 目录。您可以在打印机
的路径参数中设置与您在[printers]部分中设置相同的 spool 目录。
验证
/etc/samba/smb.conf文件:testparm
~]# testparmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重新载入 Samba 配置:
smbcontrol all reload-config
~]# smbcontrol all reload-configCopy to Clipboard Copied! Toggle word wrap Toggle overflow
16.1.7.4. 为 Windows 客户端设置自动打印机驱动程序下载 复制链接链接已复制到粘贴板!
如果您正在运行 Windows 客户端的 Samba 打印服务器,可以上传驱动程序和预配置打印机。如果用户连接到打印机,Windows 会自动在客户端本地下载并安装驱动程序。用户不需要本地管理员权限进行安装。另外,Windows 应用预配置的驱动程序设置,如托盘的数量。
在设置自动打印机驱动程序下载之前,必须将 Samba 配置为打印服务器并共享打印机。详情请查看 第 16.1.7 节 “设置 Samba 打印服务器”。
16.1.7.4.1. 有关打印机驱动程序的基本信息 复制链接链接已复制到粘贴板!
本节提供有关打印机驱动程序的一般信息。
支持的驱动程序模型版本
Samba 仅支持 Windows 2000 及更高版本中支持的打印机驱动程序模型版本 3,以及 Windows Server 2000 及更高版本。Samba 不支持 Windows 8 和 Windows Server 2012 中引入的驱动程序模型版本 4。但是,这些及之后的 Windows 版本也支持版本 3 驱动程序。
可软件包的驱动程序
Samba 不支持可打包的驱动程序。
为进行上传准备打印机驱动程序
在您将驱动程序上传到 Samba 打印服务器之前:
- 如果驱动程序采用压缩格式提供,请解包它。
有些驱动程序需要启动一个设置应用程序,以便在 Windows 主机上在本地安装驱动程序。在某些情况下,安装程序会在设置运行期间将单个文件提取到操作系统的临时文件夹中。使用驱动程序文件上传:
- 启动安装程序。
- 将临时文件夹中的文件复制到新位置。
- 取消安装。
请您的打印机厂商提供支持上传到打印服务器的驱动程序。
为客户端为打印机提供 32 位和 64 位驱动程序
要为 32 位和 64 位 Windows 客户端提供打印机的驱动程序,您必须上传两个架构具有完全相同名称的驱动程序。例如,如果您上传名为 Example PostScript 的 32 位驱动程序和名为 的 64 位驱动程序,则名称不匹配。因此,您只能为打印机分配其中一个驱动程序,且该驱动程序无法对这两个架构都适用。
Example PostScript (v1.0)
16.1.7.4.2. 启用用户上传和预配置驱动程序 复制链接链接已复制到粘贴板!
要上传和预配置打印机驱动程序,用户或组需要授予 SePrintOperatorPrivilege 权限。用户必须添加到 printadmin 组中。安装 samba 软件包时,Red Hat Enterprise Linux 会自动创建这个组。printadmin 组被分配了低于 1000 的可用最小动态系统 GID。
为 printadmin 组授予 SePrintOperatorPrivilege 权限:
net rpc rights grant "printadmin" SePrintOperatorPrivilege \
-U "DOMAIN\administrator"
~]# net rpc rights grant "printadmin" SePrintOperatorPrivilege \
-U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
Successfully granted rights.
在域环境中,将 SePrintOperatorPrivilege 授予给域组。这可让您通过更新用户的组成员资格来集中管理权限。
列出所有授予 SePrintOperatorPrivilege 的 用户和组:
16.1.7.4.4. 创建 GPO 以启用客户端信任 Samba 打印服务器 复制链接链接已复制到粘贴板!
出于安全考虑,最近的 Windows 操作系统会阻止客户端从不受信任的服务器下载非软件包的打印机驱动程序。如果您的打印服务器是 AD 中的成员,您可以在域中创建一个组策略对象(GPO)来信任 Samba 服务器。
要创建 GPO,您使用的 Windows 计算机必须安装有 Windows Remote Server 管理工具(RSAT)。详情请查看您的 Windows 文档。
创建 GPO 以启用客户端信任 Samba 打印服务器
-
使用允许编辑组策略的帐户(如 AD 域
管理员用户)登录到 Windows 计算机。 - 打开 组策略管理控制台。
右键单击您的 AD 域并选择
创建此域中的 GPO,然后链接此处-
输入 GPO 的名称,如
Legacy 打印机驱动程序策略并单击" 新的 GPO 将在域条目下显示。 -
右键单击新创建的 GPO,然后选择
Edit以打开 Group Policy Management Editor。 进入
。 在窗口的右侧,双击
Point 和 Print Restriction以编辑策略:启用策略并设置以下选项:
-
选择
Users 只能指向这些服务器并打印到这些服务器,再将 Samba 打印服务器的完全限定域名(FQDN)添加到此选项旁边的字段。 在
Security Prompts 下的两个复选框中,选择Do not show warning 或 elevation 提示。
-
选择
- 点。
双击
Package Point 和 Print - Approved servers以编辑策略:- 启用策略并单击 按钮。
输入 Samba 打印服务器的 FQDN。
-
单击 ,以关闭
Show Contents和 policy 属性窗口。
- 关闭 组策略管理编辑器。
- 关闭 组策略管理控制台。
在 Windows 域成员应用组策略后,用户连接到打印机时会自动从 Samba 服务器下载打印机驱动程序。
有关使用组策略的详情,请查看您的 Windows 文档。
16.1.7.4.5. 上传驱动程序和预配置打印机 复制链接链接已复制到粘贴板!
在 Windows 客户端上使用 Print Management 应用上传托管在 Samba 打印服务器上的驱动程序和预配置打印机。详情请查看您的 Windows 文档。
16.1.8. 调优 Samba 服务器的性能 复制链接链接已复制到粘贴板!
本节介绍在某些情况下,哪些设置可以提高 Samba 的性能,以及哪些设置可能会对性能造成负面影响。
16.1.8.1. 设置 SMB 协议版本 复制链接链接已复制到粘贴板!
每个新的 SMB 版本都会添加功能并提高协议的性能。最新的 Windows 和 Windows 服务器操作系统始终支持最新的协议版本。如果 Samba 还使用最新的协议版本,则连接 Samba 的 Windows 客户端可从性能改进中受益。在 Samba 中,服务器 max 协议 的默认值被设置为最新支持的 stable SMB 协议版本。
要始终启用最新的稳定 SMB 协议版本,请不要设置 server max protocol 参数。如果手动设置 参数,则需要修改 SMB 协议的每个新版本的设置,以启用最新的协议版本。
要取消设置,请从 /etc/samba/smb.conf 文件的 [global] 部分中删除 server max protocol 参数。
16.1.8.3. 可具有潜在性能影响的设置 复制链接链接已复制到粘贴板!
默认情况下,调整 Red Hat Enterprise Linux 中的内核以获得高网络性能。例如,内核对缓冲区大小使用自动轮询机制。在 /etc/samba/smb.conf 文件中设置 socket options 参数会覆盖这些内核设置。因此,设置此参数会在大多数情况下降低 Samba 网络性能。
要使用内核优化的设置,请从 /etc/samba/smb.conf 中的 [global] 部分删除 socket options 参数。
16.1.9. 常用 Samba 命令行实用程序 复制链接链接已复制到粘贴板!
这部分论述了在使用 Samba 服务器时常用的命令。
16.1.9.1. 使用 网络 实用程序 复制链接链接已复制到粘贴板!
net 实用程序允许您在 Samba 服务器中执行多个管理任务。本节介绍 net 实用程序最常用的子命令。
详情请查看 net(8)man page。
16.1.9.1.1. 使用 net ads join 和 net rpc join 命令 复制链接链接已复制到粘贴板!
使用 net 实用程序的 join 子命令,您可以将 Samba 加入到 AD 或 NT4 域。要加入该域,您必须手动创建 /etc/samba/smb.conf 文件,并选择性地更新其他配置,如 PAM。
红帽建议使用 realm 实用程序加入域。realm 实用程序自动更新所有相关配置文件。详情请查看 第 16.1.5.1 节 “加入域”。
使用 net 命令加入域:
使用 net 命令加入域
使用以下设置手动创建
/etc/samba/smb.conf文件:对于 AD 域成员:
[global] workgroup = domain_name security = ads passdb backend = tdbsam realm = AD_REALM
[global] workgroup = domain_name security = ads passdb backend = tdbsam realm = AD_REALMCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对于 NT4 域成员:
[global] workgroup = domain_name security = user passdb backend = tdbsam
[global] workgroup = domain_name security = user passdb backend = tdbsamCopy to Clipboard Copied! Toggle word wrap Toggle overflow
-
为
*默认域和要加入到/etc/samba/smb.conf中的[global]部分的域添加 ID 映射配置。详情请查看 第 16.1.5.3 节 “了解 ID 映射”。 验证
/etc/samba/smb.conf文件:testparm
~]# testparmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以域管理员身份加入域:
加入 AD 域:
net ads join -U "DOMAINpass:quotes[administrator]"
~]# net ads join -U "DOMAINpass:quotes[administrator]"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要加入 NT4 域:
net rpc join -U "DOMAINpass:quotes[administrator]"
~]# net rpc join -U "DOMAINpass:quotes[administrator]"Copy to Clipboard Copied! Toggle word wrap Toggle overflow
将
winbind源附加到/etc/nsswitch.conf文件中的passwd和组数据库条目中:passwd: files winbind group: files winbind
passwd: files winbind group: files winbindCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启用并启动
winbind服务:systemctl enable winbind systemctl start winbind
~]# systemctl enable winbind ~]# systemctl start winbindCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)使用
authconf实用程序配置 PAM。详情请查看 红帽系统级 身份验证指南中的使用可插拔验证 模块(PAM) 部分。
另外,对于 AD 环境,配置 Kerberos 客户端。
详情请查看 Red Hat System-Level Authentication Guide 中的 配置 Kerberos 客户端 部分。
16.1.9.1.2. 使用 net rpc 权限 命令 复制链接链接已复制到粘贴板!
在 Windows 中,您可以为帐户和组分配执行特殊操作的特权,如设置共享上的 ACL 或上传打印机驱动程序。在 Samba 服务器上,您可以使用 net rpc permissions 命令来 管理特权。
列出特权
若要列出所有可用的特权及其所有者,可使用 net rpc permissions list 命令。例如:
授予特权
若要为帐户或组授予特权,可使用 net rpc 权限 grant 命令。
例如,为 DOMAIN\printadmin 组授予 SePrintOperatorPrivilege 权限:
net rpc rights grant "DOMAIN\printadmin" SePrintOperatorPrivilege \
-U "DOMAIN\administrator"
~]# net rpc rights grant "DOMAIN\printadmin" SePrintOperatorPrivilege \
-U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
Successfully granted rights.
撤销特权
若要从帐户或组撤销特权,可使用 net rpc 权限撤销。
例如,要从 DOMAIN\printadmin 组撤销 SePrintOperatorPrivilege 权限:
net rpc rights remoke "DOMAIN\printadmin" SePrintOperatorPrivilege \
-U "DOMAIN\administrator"
~]# net rpc rights remoke "DOMAIN\printadmin" SePrintOperatorPrivilege \
-U "DOMAIN\administrator"
Enter DOMAIN\administrator's password:
Successfully revoked rights.
16.1.9.1.4. 使用 net 用户 命令 复制链接链接已复制到粘贴板!
net user 命令可让您在 AD DC 或 NT4 PDC 中执行以下操作:
- 列出所有用户帐户
- 添加用户
- 删除用户
只有在列出域用户帐户时,才需要指定连接方法,如 AD 域或 rpc 的 NT4 域的 ad。其他用户相关的子命令可以自动探测连接方法。
将 -U user_name 参数传递给 命令,以指定允许执行请求操作的用户。
列出域用户帐户
列出 AD 域中的所有用户:
net ads user -U "DOMAIN\administrator"
~]# net ads user -U "DOMAIN\administrator"
列出 NT4 域中的所有用户:
net rpc user -U "DOMAIN\administrator"
~]# net rpc user -U "DOMAIN\administrator"
将用户帐户添加到域
在 Samba 域成员中,您可以使用 net user add 命令将用户帐户添加到该域。
例如,将 用户帐户 添加到域中:
将用户帐户添加到域
添加帐户:
net user add user password -U "DOMAIN\administrator"
~]# net user add user password -U "DOMAIN\administrator" User user addedCopy to Clipboard Copied! Toggle word wrap Toggle overflow (可选)使用远程过程调用(RPC)shell 在 AD DC 或 NT4 PDC 中启用帐户。例如:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
从域中删除用户帐户
在 Samba 域成员中,您可以使用 net user delete 命令从域中删除用户帐户。
例如,要从域中删除 用户帐户 :
net user delete user -U "DOMAIN\administrator"
~]# net user delete user -U "DOMAIN\administrator"
User user deleted
16.1.9.2. 使用 rpcclient 实用程序 复制链接链接已复制到粘贴板!
The rpcclient 实用程序可让您在本地或远程 SMB 服务器上手动执行客户端 Microsoft 远程过程调用(MS-RPC)功能。但是,大部分功能都已集成到 Samba 提供的单独实用程序中。Use rpcclient 仅用于测试 MS-PRC 功能。
例如,您可以使用该工具:
管理打印机池子系统(SPOOLSS)。
例 16.9. 将驱动程序分配给打印机
rpcclient server_name -U "DOMAINpass:quotes[administrator]" \ -c 'setdriver "printer_name" "driver_name"'~]# rpcclient server_name -U "DOMAINpass:quotes[administrator]" \ -c 'setdriver "printer_name" "driver_name"' Enter DOMAINpass:quotes[administrator]s password: Successfully set printer_name to driver driver_name.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检索有关 SMB 服务器的信息。
例 16.10. 列出所有文件共享和共享的打印机
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用安全帐户管理器远程(SAMR)协议执行操作。
例 16.11. 在 SMB 服务器中列出用户
rpcclient server_name -U "DOMAINpass:quotes[administrator]" -c 'enumdomusers'
~]# rpcclient server_name -U "DOMAINpass:quotes[administrator]" -c 'enumdomusers' Enter DOMAINpass:quotes[administrator]s password: user:[user1] rid:[0x3e8] user:[user2] rid:[0x3e9]Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果您针对单机服务器或域成员运行 命令,它会将用户列在本地数据库中。针对 AD DC 或 NT4 PDC 运行命令列出域用户。
有关支持子命令的完整列表,请参见 rpcclient(1)man page 中的 COMMANDS 部分。
16.1.9.3. 使用 samba-regedit 应用 复制链接链接已复制到粘贴板!
某些设置(如打印机配置)存储在 Samba 服务器上的注册表中。您可以使用基于 ncurses 的 samba-regedit 应用来编辑 Samba 服务器的注册表。
要启动应用程序,请输入:
samba-regedit
~]# samba-regedit
使用以下键:
- 上键和下键:在注册表树和值中进行导航。
- Enter:打开关键字或编辑值。
-
选项卡 :在
Key和Value窗格间切换。 - Ctrl+C:关闭应用程序。
16.1.9.4. 使用 smbcacls 实用程序 复制链接链接已复制到粘贴板!
16.1.9.5. 使用 smbclient 实用程序 复制链接链接已复制到粘贴板!
smbclient 实用程序允许您访问 SMB 服务器上的文件共享,这与命令行 FTP 客户端类似。例如,您可以使用它向共享上传和下载文件。
例如,使用 DOMAIN\user 帐户对 服务器上 托管的示例 共享 进行身份验证:
smbclient -U "DOMAIN\user" //server/example
~]# smbclient -U "DOMAIN\user" //server/example
Enter domain\user's password:
Domain=[SERVER] OS=[Windows 6.1] Server=[Samba 4.6.2]
smb: \>
在 smbclient 连接到共享后,实用程序进入互动模式并显示以下提示:
smb: \>
smb: \>
要在互动 shell 中显示所有可用命令,请输入:
smb: \> help
smb: \> help
要显示特定命令的帮助信息,请输入:
smb: \> help command_name
smb: \> help command_name
有关交互式 shell 中可用命令的详情和说明,请参阅 smbclient(1)man page。
16.1.9.5.1. 在交互模式中使用 smbclient 复制链接链接已复制到粘贴板!
如果您使用不带 -c 参数的 smbclient,则实用程序将进入交互模式。
以下流程演示了如何连接到 SMB 共享并从子目录下载文件:
使用 smbclient从 SMB 共享下载文件
连接到共享:
smbclient -U "DOMAINpass:quotes[user_name]" //server_name/share_name
~]# smbclient -U "DOMAINpass:quotes[user_name]" //server_name/share_nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 进入
/example/目录:smb: \> cd /example/
smb: \> cd /example/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出目录中的文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 下载
example.txt文件:smb: \example\> get example.txt getting file \directory\subdirectory\example.txt of size 1048576 as example.txt (511975,0 KiloBytes/sec) (average 170666,7 KiloBytes/sec)
smb: \example\> get example.txt getting file \directory\subdirectory\example.txt of size 1048576 as example.txt (511975,0 KiloBytes/sec) (average 170666,7 KiloBytes/sec)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 从共享断开:
smb: \example\> exit
smb: \example\> exitCopy to Clipboard Copied! Toggle word wrap Toggle overflow
16.1.9.5.2. 在脚本模式中使用 smbclient 复制链接链接已复制到粘贴板!
如果将 -c 命令 参数传递给 smbclient,则可以自动对远程 SMB 共享执行命令。这可让您在脚本中使用 smbclient。
以下命令显示如何连接到 SMB 共享并从子目录下载文件:
smbclient -U DOMAINpass:quotes[user_name] //server_name/share_name \
-c "cd /example/ ; get example.txt ; exit"
~]# smbclient -U DOMAINpass:quotes[user_name] //server_name/share_name \
-c "cd /example/ ; get example.txt ; exit"
16.1.9.6. 使用 smbcontrol 实用程序 复制链接链接已复制到粘贴板!
smbcontrol 实用程序允许您向 smbd、nmbd、winbindd 或 所有这些服务发送命令消息。这些控制消息指示服务重新载入其配置。
例 16.12. 重新加载 smbd、nmbd 和 winbindd 服务的配置
例如,要重新载入 smbd、nmbd、winbindd 的配置,将 reload-config message- type 发送到 所有 目的地:
smbcontrol all reload-config
~]# smbcontrol all reload-config
详情以及可用命令消息类型的列表,请参阅 smbcontrol(1)man page。
16.1.9.7. 使用 smbpasswd 实用程序 复制链接链接已复制到粘贴板!
smbpasswd 实用程序在本地 Samba 数据库中管理用户帐户和密码。
如果您以用户身份运行 命令,smb passwd 将更改用户的 Samba 密码。例如:
smbpasswd
[user@server ~]$ smbpasswd
New SMB password:
Retype new SMB password:
如果以 root 用户身份运行 smbpasswd,您可以使用该实用程序,例如:
创建一个新用户:
smbpasswd -a user_name
[root@server ~]# smbpasswd -a user_name New SMB password: Retype new SMB password: Added user user_name.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意在将用户添加到 Samba 数据库之前,您必须先在本地操作系统中创建帐户。请查看 第 4.3.1 节 “添加新用户”
启用 Samba 用户:
smbpasswd -e user_name
[root@server ~]# smbpasswd -e user_name Enabled user user_name.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 禁用 Samba 用户:
smbpasswd -x user_name
[root@server ~]# smbpasswd -x user_name Disabled user user_name.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 删除用户:
smbpasswd -x user_name
[root@server ~]# smbpasswd -x user_name Deleted user user_name.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
详情请查看 smbpasswd(8)man page。
16.1.9.8. 使用 smbstatus 实用程序 复制链接链接已复制到粘贴板!
smbstatus 工具报告:
-
每个
smbd守护进程的每个 PID 与 Samba 服务器的连接。此报告包括用户名、主组群、SMB 协议版本、加密和签名信息。 -
每个 Samba 共享的连接。此报告包含
smbd 守护进程的PID、连接计算机的 IP、连接的时间戳、加密和签名信息。 - 锁定文件列表。报告条目包括更多详情,如 Opportunistic lock(oplock)类型
例 16.13. smbstatus 实用程序的输出
详情请查看 smbstatus(1)man page。
16.1.9.9. 使用 smbtar 实用程序 复制链接链接已复制到粘贴板!
smbtar 实用程序备份 SMB 共享的内容或其子目录,并将内容存储在 tar 存档中。或者,您可以将内容写入磁带设备。
例如,在 //server/example/ 共享 中备份 demo 目录的内容,并将内容存储在 /root/example.tar 归档中:
smbtar -s server -x example -u user_name -p password -t /root/example.tar
~]# smbtar -s server -x example -u user_name -p password -t /root/example.tar
详情请查看 smbtar(1)man page。
16.1.9.10. 使用 testparm 实用程序 复制链接链接已复制到粘贴板!
16.1.9.11. 使用 wbinfo 实用程序 复制链接链接已复制到粘贴板!
The wbinfo 实用程序查询并返回 winbindd 服务创建和使用的信息。
winbindd 服务必须配置并运行才能使用 wbinfo。
您可以使用 wbinfo,例如:
列出域用户:
wbinfo -u
~]# wbinfo -u AD\administrator AD\guest ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 列出域组:
wbinfo -g
~]# wbinfo -g AD\domain computers AD\domain admins AD\domain users ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示用户的 SID:
wbinfo --name-to-sid="AD\administrator"
~]# wbinfo --name-to-sid="AD\administrator" S-1-5-21-1762709870-351891212-3141221786-500 SID_USER (1)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 显示域和信任的信息:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
详情请查看wbinfo(1)man page。
16.1.10. 其它资源 复制链接链接已复制到粘贴板!
Red Hat Samba 软件包包含所有 Samba 命令的 man page 以及软件包安装的配置文件。例如,显示
/etc/samba/smb.conf文件的 man page,说明您可以在此文件中设置的所有配置参数:man 5 smb.conf
~]# man 5 smb.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
/usr/share/docs/samba-版本/:包含 Samba 项目提供的常规文档、示例脚本和 LDAP 架构文件。 - 红帽集群存储管理指南 :提供有关设置 Samba 和集群 Trivial 数据库(CDTB)以共享 GlusterFS 卷中存储的目录的信息。
- Red Hat Enterprise Linux High Availability Add-on 管理 指南中的红帽高可用性群集章节中的主动/主动 Samba 服务器 介绍了如何启动 Samba 高可用性安装。
- 有关在 Red Hat Enterprise Linux 中挂载 SMB 共享的详情,请查看《红帽存储管理指南》中的对应章节。