%20%E3%82%92%E3%83%9E%E3%82%A6%E3%83%B3%E3%83%88%E3%81%99%E3%82%8B%E9%9A%9B%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC.png)
私は Samba AD ドメイン コントローラーに参加している Ubuntu 21.10 PC を持っています。すべては完全に正常に動作しています。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)オプション。マウントはルートとして実行され、デフォルトではルートに属するチケット ファイルを検索するため、実際のチケット所有者のユーザー ID を設定する必要があります。
- sgrp="DOMAIN\ドメイン ユーザー"属性。pam_mount は、gdm などのシステム ユーザーを含むすべての新しい認証セッションで実行されます。共有のマウントでログイン試行が失敗すると、その試行はキャッシュされ、承認されたユーザーであっても失敗するようです。そのため、共有をマウントするユーザーを明示的に定義する必要があります。これは、pam_mount で使用できるいくつかのユーザー制御属性を使用して実行できます。