挂载 samba 共享的正确方法

挂载 samba 共享的正确方法

我想在我的 Arch Linux 系统上使用 samba 挂载 CIFS 网络文件系统。我想在每次登录(通过 ssh、TTY 或通过 KDM)时挂载此文件系统。

/etc/fstab通过将网络共享添加到.我可以非常接近我想要的结果。最大的“问题”是,这需要将我的密码硬编码到其中/etc/fstab或使用我的用户名和密码创建凭据文件。即使我将权限设置为 600,将用户名和密码保存在纯文本文件中似乎也不安全。

是否有一种“正确”的方法来安全地自动挂载网络共享?我可以使用 PAM 执行此操作(我的用户名和密码在两台计算机上相同),如果可以,如何执行?

答案1

方法#1 -/etc/fstab

我知道您正在寻找替代方案,但这里具体介绍了如何从文件中获取您的凭据/etc/fstab

//WindowsHost/Sharename /LocalMountPoint cifs credentials=/etc/cifsauth 0 0

然后在文件中/etc/cifsauth

username=someuser
password=somepass

使该文件的权限600,即chmod 600 /etc/cifsauth

方法#2 - pam_mount

您可以安装pam_mount然后为所有登录用户设置通用安装,如下所示:

# /etc/security/pam_mount.conf.xml
<debug enable="1" />
<volume server="server" path="music" mountpoint="~/MyMusicFolder" options="cred=/home/%(USER)/.Music.cred" />

此方法仍然存在与方法 #1 相同的问题,其中凭据存储在文件/home/%(USER)/.Music.cred.这与第一种方法中的凭证文件类型相同,因此请确保权限也为 600。

方法 #3 - 使用 gvfs-mount

本 U&L 问答题为:我可以自动挂载 cifs 共享而不以明文形式存储密码吗?包含 @Gilles 的答案,其中描述了使用GNOME 钥匙圈保留您的 CIFS 凭据。

然后您可以使用以下命令访问 CIFS 共享重力加速度传感器- GNOME 虚拟文件系统 - 像这样:

$ gvfs-mount smb://username\;workgroupname@hostname/sharename

这将从名为 sharename 的主机名映射共享并将其挂载在$HOME/.vfs/sharename on hostname.你无法以任何方式控制它。我已经看过了,它被硬编码为始终安装在这里!

但是,您可以创建指向这些安装的链接,这就是我所做的,以便我可以访问已安装的共享。使用.gvfs是不幸的,因为某些工具不会在文件浏览中列出点目录,因此我创建的链接通常是访问这些共享的唯一方法。

答案2

事实证明这pam_mount是正确的方法。您将网络共享添加到/etc/security/pam_mount.conf.xml

<volume user="yourUserName" fstype="auto" path="//path/to/the/network/share" mountpoint="/path/to/the/mount/point" options="username=yourUserName" />
<mkmountpoint enable="1" remove="true" />

理论上应该可以使用%(USER)%(USERUID)%(USERGID)变量使其成为通用安装,但我无法让该部分在 Arch Linux 上工作。您还需要配置您的系统才能使用pam_mount.您需要修改两者/etc/pam.d/system-auth以及相应的登录管理器。对于 KDM 来说是这样/etc/pam.d/kde。修改基本上涉及添加optional pam_mount.so到两个文件的每个部分,但具体细节很棘手,因为顺序很重要。我跟着拱门维基

通过此设置以及服务器和我的计算机上的相同用户名/密码,我可以自动挂载,而无需在任何地方保存凭据文件。

答案3

pam_mount您无需以明文形式保存凭据即可使用。它确实要求文件服务器上的凭据与您登录的系统上的用户名/密码相同。

很好的例子在这里: https://wiki.ubuntu.com/MountWindowsSharesPermanently

基本上:

  1. 安装 libpam-mount:sudo apt-get install libpam-mount
  2. 编辑以删除名为 的部分周围的/etc/security/pam_mount.conf.xml注释标记(<!--和) 。完成后保存文件。这允许您使用用户特定的文件--><luserconf name=".pam_mount.conf.xml" />pam_mount.conf
  3. 创建自己的~/.pam_mount.conf.xml并添加以下内容:
<?xml version="1.0" encoding="utf-8" ?>
<pam_mount>
    <volume options="uid=%(USER),gid=100,dmask=0700" user="*" mountpoint="/media/windowsshare" path="sharename" server="servername" fstype="cifs" />
</pam_mount>

相关内容