使用 mount.cifs 的自动挂载 + 多用户选项

使用 mount.cifs 的自动挂载 + 多用户选项

目前,我们的 Ubuntu 客户端在系统启动时通过 /etc/fstab 连接到 cifs 共享。这有以下缺点:

  • 密码以纯文本形式写入挂载选项
  • 密码应该会过期,但如果过期,则必须在每个客户端上更改 /etc/fstab。因此,目前用于挂载的大多数密码都不会过期
  • CIFS 共享安装在连接用户及其权限下,因此不会显示实际在 Ubuntu 上使用共享的用户。副作用是权限模糊,因为 Ubuntu 用户未在 Windows 文件系统权限中列出。

我已经在我们的 Ubuntu 客户端上成功测试了:在用户登录时使用 kerberos 身份验证 - 因此用户可以获得 kerberos 票证。

使用该 Kerberos 票证 (sudo) 在 systemd 用户服务中挂载 cifs 共享

  • 优点:适用于图形登录以及 ssh
  • 优点:共享可以像本地文件系统一样访问
  • 缺点:如果我在全局挂载点(如 /servers/mymount)上挂载,我必须小心,不要让多个用户重叠挂载。然后,连接用户将成为任何后续用户使用其权限的用户。

使用该 Kerberos 票证从文件浏览器 nautilus 和 thunar 动态挂载共享

  • 优点:如果通过文件浏览器建立与共享的连接,则不需要额外的脚本或服务
  • 优点:共享安装在用户上下文中,因此肯定需要用户许可。如果用户没有权限,仍有可能将共享连接到其他用户。
  • 优点:可以使用 gvfs-mount 通过 /etc/profile 自动执行挂载
  • 优点:不需要 sudo 权限,用户可以根据需要使用 gvfs-mount 和 -unmount,通过文件浏览器非常直观
  • 缺点:没有实际的挂载点,标准 unix 命令(如 ls、cp 等)不起作用。我不得不使用 gvfs-* 替代方案。目前,上述使用 mount.cifs 的解决方案似乎更好。

因此,我希望像访问 nfs 共享一样访问 cifs 共享。

  • 挂载期间未使用密码
  • 应使用访问用户的权限
  • 文件系统应该像本地文件系统一样运行(标准 unix 命令应该可以工作)

我可以多次挂载 CIFS 共享,分别供每个用户挂载到他们的主目录中,但是

有没有办法在启动过程中由 root 用户挂载 CIFS 共享,而不指定连接用户,然后使用来自访问用户(例如通过 kerberos 票证)?

提前谢谢你,巴斯蒂安

答案1

使用 mount.cifs 的自动挂载 + 多用户选项

您可以使用 automount 和 mount.cifs 的多用户选项来实现这一点。安装所需的软件包:

sudo apt install autofs keyutils cifs-utils

以下示例假设 cifs 服务器导出以访问它的用户命名的共享。通常这适用于主目录。

将其添加到您的/etc/auto.master

/cifs /etc/auto.cifs

输入/etc/auto.cifs这个:

*   -fstype=cifs,multiuser,cruid=${UID},sec=krb5    ://server.domain/&

确保更换服务器.域名由您的文件服务器提供。您也可以通过这种方式使用固定共享。只需*用固定名称替换 ,并将 替换为&

上述配置中的一个重要细节是cruid=${UID}。它将使内核在访问共享的用户上下文中查找 Kerberos 票证。否则它将尝试 root 票证缓存。

最后重新加载自动挂载:

sudo service autofs reload

如果您有 Kerberos 票证,它将/cifs/$USER在第一次访问时挂载文件系统。这意味着您需要cd /cifs/myuser在 GUI 文件浏览器中明确输入 eg 或类似操作。为了避免这种情况,您可以从其他地方放置指向此的符号链接并告诉用户访问这些链接。

如果您使用固定共享(不使用*&),当然您必须输入cd /cifs/sharename

其他用户对同一共享的后续访问将使用他们的权限,通过该选项实现multiuser。不会进行其他挂载,但会重新使用现有的挂载。

安装.cifs(8)

   multiuser
       Map user accesses to individual credentials when accessing
       the server. By default, CIFS mounts only use a single set of
       user credentials (the mount credentials) when accessing a
       share. With this option, the client instead creates a new
       session with the server using the user's credentials whenever
       a new user accesses the mount. Further accesses by that user
       will also use those credentials. Because the kernel cannot
       prompt for passwords, multiuser mounts are limited to mounts
       using sec= options that don't require passwords.

还可以将所需的自动挂载映射添加到 LDAP 服务器以进行集中管理,但这可能超出了本答案的范围。

在您的问题中,您要求在启动时以 root 身份挂载。从技术上讲,这是以 autofs 的占位符挂载形式完成的。实际上,真正的挂载仅在用户首次访问时完成。

我们在我的工作场所为大约 100 个客户端使用此设置来访问相当大的光泽文件系统,并且它运行可靠。

相关内容