pam_mount で Windows 共有 (cifs) をマウントする際のエラー

pam_mount で Windows 共有 (cifs) をマウントする際のエラー

私は 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 で使用できるいくつかのユーザー制御属性を使用して実行できます。

関連情報