通常のLinuxマシンでは、通常のユーザーとしてSudo -s
を使用すると、rootになりますが、HOME
はまだ~user
を指しているため、すべての管理者が独自の環境などを持っています(これはenv_reset
またはalways_set_home
セットなし)。
ホームディレクトリがAFSファイルシステム上にあるシステムでは、環境変数KRB5CCNAME
が事前に設定されている場合、rootがこのファイルを/tmp
で読み取ることができるため、これも機能します。
しかし、そのようなシステムでSudo
を使用してローカルの非rootユーザー(たとえば、特定のサービスの専用ユーザー)を変更すると、新しいユーザーはKerberosキャッシュにアクセスできません(古いユーザーが所有しているため)モード600)があります。しかし、unset KRB5CCNAME && kinit user && aklog && exec bash
の場合、自分の環境に再びアクセスできます。
したがって、質問は次のとおりです。Sudoに以前に持っていたKerberosチケットを取得させ、それらを新しいユーザーのKerberosチケットキャッシュに追加させるクリーンな方法はありますか?
私が知っているKerberosPAMモジュールのいずれにおいても、これに対する現在のサポートはないと思います。ただし、どのように実装できるかはわかります。それについて本質的に不可能なことは何もありません。基本的に、pam_krb5
は、現在のKRB5CCNAME
が指すチケットキャッシュを開き、それを反復処理し、見つかった各チケットを初期キャッシュ設定後に新しく作成されたチケットキャッシュにコピーするコードを取得する必要があります。
これはデフォルト以外のオプションである必要があります。これは、資格情報をターゲットユーザー(そのユーザーになることができるすべてのユーザーelseを含む)に提供するため、潜在的に危険です。
すぐに解決策が必要な場合、ksu
のすべての機能が必要ない場合は、代わりにSudo
の使用を検討してください。 ksu
は、現在のKerberosチケットキャッシュを保持するためのサポートをすでに持っています(少なくともMIT Kerberosバージョンでは)。