掛載 samba 共享的正確方法
我想在我的 Arch Linux 系統上安裝一個帶有 samba 的 CIFS 網路文件系統。我想在每次登錄時掛載這個文件系統(通過 ssh、TTY 或 KDM)。
通過將網路共享添加到
/etc/fstab
. 最大的“問題”是這需要將我的密碼硬編碼到/etc/fstab
或使用我的使用者名和密碼創建憑據文件。即使我將權限設置為 600,將我的使用者名和密碼保存在純文字文件中似乎也不安全。是否有“正確”的方式來安全地自動掛載網路共享?我可以用 PAM 做到這一點(我的使用者名和密碼在兩台機器上都相同)嗎?如果可以,怎麼做?
事實證明這
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
到兩個文件的每個部分,但確切的細節很棘手,因為排序很重要。我關注了Arch Wiki。使用此設置並在伺服器和我的機器上使用相同的使用者名/密碼,我可以自動掛載而無需在任何地方保存憑據文件。
方法#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 Q&A 的標題是:我可以自動安裝 cifs 共享而不以明文形式儲存我的密碼嗎?包含@Gilles 的回答,其中描述了使用GNOME 密鑰環來保留您的 CIFS 憑據。
然後,您可以使用GVFS - GNOME 虛擬文件系統訪問 CIFS 共享,如下所示:
$ gvfs-mount smb://username\;workgroupname@hostname/sharename
這將從名為 sharename 的主機名映射共享並將其安裝在
$HOME/.vfs/sharename on hostname
. 你無法以任何方式控制它。我已經看過了,總是安裝在這裡是硬編碼的!但是,您可以創建指向這些掛載的連結,這就是我所做的,以便我可以訪問已掛載的共享。不幸的
.gvfs
是,因為有些工具在文件瀏覽中沒有列出點目錄,所以我創建的連結經常是訪問這些共享的唯一方法。