Ubuntu
使用 pam_mount 安裝 Windows 共享 (cifs) 時出錯
我有一台 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 中提供的許多使用者控制屬性來完成。