9.2. 挂载 SMB 共享


在 Red Hat Enterprise Linux 上,内核的 cifs.ko 文件系统模块提供对 SMB 协议的支持。但是,要挂载并使用 SMB 共享,还必须安装 cifs-utils 软件包:
# yum install cifs-utils
cifs-utils 软件包提供以下工具:
  • 挂载 SMB 和 CIFS 共享
  • 在内核的密钥环中管理 NT Lan Manager (NTLM)凭据
  • 在 SMB 和 CIFS 共享上的安全描述符中设置和显示访问控制列表(ACL)

9.2.1. 支持的 SMB 协议版本

cifs.ko 内核模块支持以下 SMB 协议版本:
  • SMB 1
  • SMB 2.0
  • SMB 2.1
  • SMB 3.0
注意
根据协议版本,并非所有 SMB 功能都已实施。

9.2.1.1. UNIX 扩展支持

Samba 在 SMB 协议中使用 CAP_UNIX 功能位来提供 UNIX 扩展功能。cifs.ko 内核模块也支持这些扩展。但是,Samba 和内核模块仅支持 SMB 1 协议中的 UNIX 扩展。
要使用 UNIX 扩展:
  1. /etc/samba/smb.conf 文件中的 [global] 部分中的 server min protocol 选项设置为 NT1。这是 Samba 服务器中的默认设置。
  2. 通过向 mount 命令提供 -o vers=1.0 选项,使用 SMB 1 协议 挂载共享。例如:
    mount -t cifs -o vers=1.0,username=user_name //server_name/share_name /mnt/
    默认情况下,内核模块使用 SMB 2 或服务器支持的最高协议版本。将 -o vers=1.0 选项传给 mount 命令会强制内核模块使用 SMB 1 协议,该协议在使用 UNIX 扩展时是必需的。
要验证是否启用了 UNIX 扩展,请显示挂载共享的选项:
# mount
...
//server/share on /mnt type cifs (...,unix,...)
如果在挂载选项列表中显示了 unix 条目,则启用了 UNIX 扩展。

9.2.2. 手动挂载 SMB 共享

要手动挂载 SMB 共享,在 -t cifs 参数中使用 mount 工具:
# mount -t cifs -o username=user_name //server_name/share_name /mnt/
Password for user_name@//server_name/share_name:  ********
-o options 参数中,您可以指定用于挂载共享的选项。详情请查看 第 9.2.6 节 “常用挂载选项” man page 中的 mount.cifs(8)OPTIONS 部分。

例 9.1. 使用加密的 SMB 3.0 连接挂载共享

要将 \\服务器\示例\ 共享作为 DOMAIN\Administrator 用户通过加密的 SMB 3.0 连接挂载到 /mnt/ 目录:
# mount -t cifs -o username=DOMAIN\Administrator,seal,vers=3.0 //server/example /mnt/
Password for user_name@//server_name/share_name:  ********

9.2.3. 在系统引导时自动挂载 SMB 共享

要在系统引导时自动挂载 SMB 共享,请将共享条目添加到 /etc/fstab 文件中。例如:
//server_name/share_name  /mnt  cifs  credentials=/root/smb.cred  0 0
重要
要让系统自动挂载共享,您必须将用户名、密码和域名存储在凭据文件中。详情请查看 第 9.2.4 节 “使用凭据文件对 SMB 共享进行身份验证”
/etc/fstab 文件的第四个字段中,指定挂载选项,如凭据文件的路径。详情请查看 第 9.2.6 节 “常用挂载选项” man page 中的 mount.cifs(8)OPTIONS 部分。
要验证共享挂载是否成功,请输入:
# mount /mnt/

9.2.4. 使用凭据文件对 SMB 共享进行身份验证

在某些情况下,管理员希望在不输入用户名和密码的情况下挂载共享。要实施此操作,请创建一个凭据文件。例如:

过程 9.1. 创建凭证文件

  1. 创建一个文件,如 ~/smb.cred,并指定该文件的用户名、密码和域名:
    username=user_name
    password=password
    domain=domain_name
  2. 将权限设置为只允许所有者可以访问该文件:
    # chown user_name ~/smb.cred
    # chmod 600 ~/smb.cred
现在,您可以将 credentials=file_name 挂载选项传给 mount 工具,或者在 /etc/fstab 文件中使用它来挂载共享,而无需提示输入用户名和密码。

9.2.5. 执行多用户 SMB 挂载

您为挂载共享提供的凭据默认确定对挂载点的访问权限。例如,如果您在挂载共享时使用 DOMAIN\example 用户,则共享上的所有操作都将以该用户的身份执行,无论哪个本地用户执行该操作。
然而,在某些情况下,管理员希望在系统启动时自动挂载共享,但用户应使用自己的凭据对共享的内容执行操作。multiuser 挂载选项允许您配置此场景。
重要
要使用 multiuser,还必须将 sec=security_type 挂载选项设置为支持以非交互方式提供凭据的安全类型,如 krb5 或带有凭据文件的 ntlmssp 选项。请参阅 “以用户身份访问共享”一节
root 用户使用 multiuser 选项以及对共享内容具有最少访问权限的帐户挂载共享。然后,常规用户可以使用 cifscreds 实用程序将其用户名和密码提供给当前会话的内核密钥环。如果用户访问挂载的共享的内容,则内核将使用内核密钥环中的凭据,而不是最初用来挂载共享的凭据。

使用 multiuser 选项挂载共享

在系统引导时,使用 multiuser 选项自动挂载共享:

过程 9.2. 使用 multiuser 选项创建 /etc/fstab 文件条目

  1. /etc/fstab 文件中为共享创建条目。例如:
    //server_name/share_name  /mnt  cifs  multiuser,sec=ntlmssp,credentials=/root/smb.cred  0 0
    
  2. 挂载共享:
    # mount /mnt/
如果您不想在系统引导时自动挂载共享,请通过将 -o multiuser,sec=security_type 传递给 mount 命令手动挂载它。有关手动挂载 SMB 共享的详情,请参考 第 9.2.2 节 “手动挂载 SMB 共享”

验证 SMB 共享是否使用 multiuser 选项挂载

使用 multiuser 选项验证共享是否挂载:
# mount
...
//server_name/share_name on /mnt type cifs (sec=ntlmssp,multiuser,...)

以用户身份访问共享

如果使用 multiuser 选项挂载 SMB 共享,用户可以向内核的密钥环提供其服务器凭证:
# cifscreds add -u SMB_user_name server_name
Password: ********
现在,当用户在包含挂载的 SMB 共享的目录中执行操作时,服务器会为此用户应用文件系统权限,而不是挂载共享时最初使用的权限。
注意
多个用户可以同时对挂载的共享使用自己的凭据来执行操作。

9.2.6. 常用挂载选项

当您挂载 SMB 共享时,挂载选项将决定:
  • 如何与服务器建立连接。例如:连接到服务器时使用 SMB 协议版本。
  • 如何将共享挂载到本地文件系统.例如,如果系统覆盖了远程文件和目录的权限,使多个本地用户能够访问服务器上的内容。
要在 /etc/fstab 文件的第四个字段或 挂载 命令的 -o 参数中设置多个选项,请使用逗号分隔它们。例如,请参阅 过程 9.2, “使用 multiuser 选项创建 /etc/fstab 文件条目”
以下列表提供了常用挂载选项的概述:
表 9.1. 常用挂载选项
选项 描述
credentials=file_name 设置凭证文件的路径。请参阅 第 9.2.4 节 “使用凭据文件对 SMB 共享进行身份验证”
dir_mode=mode 如果服务器不支持 CIFS UNIX 扩展,则设置目录模式。
file_mode=mode 如果服务器不支持 CIFS UNIX 扩展,则设置文件模式。
password=password 设置在 SMB 服务器中验证的密码。另外,也可使用 credentials 选项指定凭据文件。
seal 使用 SMB 3.0 或更高的协议版本启用对连接的加密支持。因此,使用 sealvers 挂载选项来设置成 3.0 或更高版本。请参阅 例 9.1 “使用加密的 SMB 3.0 连接挂载共享”
sec=security_mode
设置安全模式,如 ntlmsspi,来启用 NTLMv2 密码哈希和已启用的数据包签名。有关支持的值列表,请查看 mount.cifs(8) man page 中的选项描述。
如果服务器不支持 ntlmv2 安全模式,则使用 sec=ntlmssp,这是默认值。出于安全考虑,请不要使用不安全的 ntlm 安全模式。
username=user_name 设置在 SMB 服务器中验证的用户名。另外,也可使用 credentials 选项指定凭据文件。
vers=SMB_protocol_version 设定用于与服务器通信的 SMB 协议版本。
有关完整列表,请查看 mount.cifs(8) man page 中的 OPTIONS 部分。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.