%20%E6%99%82%E7%99%BC%E7%94%9F%E9%8C%AF%E8%AA%A4.png)
我有一台 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
- 使用 pam_winbind 設定強制 Kerberos 將票證儲存在 /tmp/krb5cc_%u 中的檔案中
- 閱讀大量論壇
有任何想法嗎?
答案1
我終於弄明白了。這是一個有效的 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 無法為 ip 頒發票證,因此您必須指定網域名稱。
- cruid=%(用戶UID)選項。 Mount 以 root 身分執行,預設情況下它會尋找屬於 root 的票證文件,因此我們必須設定實際票證擁有者的使用者 ID。
- sgrp="網域\網域使用者"屬性。 pam_mount 在每個新的身份驗證會話上運行,包括 gdm 等系統使用者。一旦登入嘗試安裝共享失敗,它似乎會對其進行緩存,甚至對於授權用戶來說也會失敗。因此,我們需要明確定義要為其安裝共享的使用者。這可以透過 pam_mount 中提供的許多使用者控制屬性來完成。