Ubuntu

使用 pam_mount 安裝 Windows 共享 (cifs) 時出錯

  • April 1, 2022

我有一台 Ubuntu 21.10 電腦加入了 Samba AD 域控制器。一切工作正常 - Kerberos 工作(可以使用 kinit 獲取票證),winbind 工作(可以獲取有關使用者和組的資訊),我能夠使用域憑據登錄系統。

並且手動安裝共享也可以使用 Kerberos 和 ntlmssp 授權:

sudo mount -t cifs //server/path /mount/point -o username=USER,domain=DOMAIN,sec=ntlmssp
sudo mount -t cifs //server/path /mount/point -o username=USER,domain=DOMAIN,sec=krb5

像 username=USER@DOMAIN 這樣設置使用者名也可以。

問題是當使用者通過 gnome 登錄時,我無法讓 pam_mount 工作!

像這樣在 pam_mount.conf.xml 中使用 krb5

<volume
     fstype="cifs"
     server="server"
     path="path"
     mountpoint="mount/point"
     options="sec=krb5"
 />

在 auth.conf 中給出錯誤

(mount.c:72): mount error(126): Required key not available

像這樣在 pam_mount.conf.xml 中使用 ntlmssp

<volume
     fstype="cifs"
     server="server"
     path="path"
     mountpoint="mount/point"
     options="sec=ntlmssp"
 />

在 auth.conf 中給出不同的錯誤

(pam_mount.c:173): conv->conv(...): Conversation error 

在 pam_mount 中啟用調試後,我還可以在 auth.log 中看到它正在執行的確切安裝命令,並且當我手動執行它們時,它與上面的工作相同。

我嘗試了以下方法:

  • 以不同的組合使用掛載選項:vers=3.0, _netdev,user,sec
  • 強制 Kerberos 使用 pam_winbind 配置將票證儲存在 /tmp/krb5cc_%u 中的文件中
  • 閱讀大量論壇

有任何想法嗎?

我終於弄明白了。這是一個有效的 pam_mount 卷配置:

<volume sgrp="DOMAIN\domain users" fstype="cifs" server="my.server.com" path="path/to/share" mountpoint="/mount/point" options="sec=krb5,cruid=%(USERUID),noexec,rw,nofail" />

關鍵要求似乎是:

  • 伺服器域名。Kerberos 不能為 ips 出票,所以你必須指定一個域名。
  • **cruid=%(USERUID)**選項。Mount 以 root 身份執行,預設情況下它正在尋找屬於 root 的票證文件,因此我們必須設置實際票證所有者的使用者 ID。
  • **sgrp=“域\域使用者”**屬性。pam_mount 在每個新的身份驗證會話上執行,包括 gdm 等系統使用者。一旦登錄嘗試安裝共享失敗,它似乎正在記憶體它並且即使對於授權使用者也是如此。因此,我們需要明確定義要為其掛載共享的使用者。它可以通過 pam_mount 中提供的許多使用者控制屬性來完成。

引用自:https://serverfault.com/questions/1097538