我想在我的 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
基本上:
- 安装 libpam-mount:
sudo apt-get install libpam-mount
- 编辑以删除名为 的部分周围的
/etc/security/pam_mount.conf.xml
注释标记(<!--
和) 。完成后保存文件。这允许您使用用户特定的文件-->
<luserconf name=".pam_mount.conf.xml" />
pam_mount.conf
- 创建自己的
~/.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>