目前,我们的 Ubuntu 客户端在系统启动期间通过 /etc/fstab 连接到 cifs 共享。这有以下缺点:
- 密码以纯文本形式作为挂载选项写入
- 密码应该过期,但如果过期,则必须在每个客户端上更改 /etc/fstab。因此,大多数用于挂载的密码目前都不会过期
- CIFS 共享安装在连接用户及其权限下,因此不会显示在 Ubuntu 上实际使用该共享的用户。副作用是权限模糊,因为 Ubuntu 用户未列在 Windows 文件系统权限中。
我已经在我们的 Ubuntu-Clients 上成功测试的内容:在用户登录时使用 kerberos 身份验证 - 所以有一个 kerberos 票可供用户使用。
使用该 kerberos 票证 (sudo) 在 systemd 用户服务中安装 cifs 共享
- PRO:适用于图形登录以及 ssh
- PRO:共享可以像本地文件系统一样访问
- CON:如果我挂载在像 /servers/mymount 这样的全局挂载点上,我必须小心,不要覆盖多个用户的挂载。然后,连接用户将是任何后续用户都将使用其权限的用户。
使用该 kerberos 票证从文件浏览器 nautilus 和 thunar 动态挂载共享
- PRO:如果通过文件浏览器建立与共享的连接,则不需要额外的脚本或服务
- PRO:共享已安装到用户上下文中,因此绝对需要用户许可。如果用户没有权限,仍然有可能将共享连接到另一个用户。
- PRO:安装可以通过 /etc/profile 使用 gvfs-mount 自动化
- PRO:不需要 sudo 权限,用户可以根据需要 gvfs-mount 和 -unmount,通过文件浏览器非常直观
- 缺点:没有实际的挂载点,ls、cp 等标准 unix 命令不起作用。我将不得不使用 gvfs-* 替代品。此时,上述带有 mount.cifs 的解决方案似乎更好。
所以我想要像访问 nfs 共享一样访问 cifs 共享。
- 挂载期间未使用密码
- 应使用访问用户的权限
- 文件系统的行为应该像本地文件系统(标准的 unix 命令应该可以工作)
我可以多次将 CIFS 共享挂载到每个用户的主目录中,但是
有没有办法在引导期间由用户 root 挂载 CIFS 共享,而不是指定连接用户,然后使用访问用户的权限(例如通过 kerberos 票证)?
提前谢谢你,巴斯蒂安
使用 mount.cifs 的 automount + multiuser 选项
您可以使用 automount 和 mount.cifs 的多用户选项来实现此目的。安装所需的软件包:
以下示例假定 cifs 服务器导出以访问它的用户命名的共享。通常这将适用于主目录。
将此添加到您的
/etc/auto.master
:把
/etc/auto.cifs
这个:确保将server.domain替换为您的文件服务器。您也可以通过这种方式使用固定共享。只需用
*
固定名称替换&
.上述配置中的一个重要细节是
cruid=${UID}
. 它将使内核在用户访问共享的上下文中查找 kerberos 票证。否则它将尝试根票证缓存。最后重新加载自动挂载:
如果您有 kerberos 票证,它将
/cifs/$USER
在首次访问时挂载文件系统。这意味着您需要cd /cifs/myuser
在 GUI 文件浏览器中显式键入 eg 或类似的操作。为避免这种情况,您可以放置从其他地方指向此的符号链接,并告诉用户访问这些链接。如果您使用的是固定共享(不使用
*
and&
),您当然必须输入cd /cifs/sharename
.其他用户对同一共享的后续访问将使用他们的权限,通过该
multiuser
选项成为可能。不会进行额外的安装,但会重复使用现有的安装。从mount.cifs(8):
也可以将所需的自动挂载映射添加到 LDAP 服务器以进行集中管理,但这可能超出了此答案的范围。
在您的问题中,您要求在启动时以 root 身份安装挂载。从技术上讲,这是在这里以 autofs 的占位符安装形式完成的。实际上,真正的挂载仅在用户首次访问时完成。
我们在我的工作场所为大约 100 个客户使用这个设置来访问一个相当大的光泽文件系统,它工作可靠。