web-dev-qa-db-ja.com

須藤の呼び出し全体でKerberosチケットを保持します

通常の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チケットキャッシュに追加させるクリーンな方法はありますか?

6

私が知っているKerberosPAMモジュールのいずれにおいても、これに対する現在のサポートはないと思います。ただし、どのように実装できるかはわかります。それについて本質的に不可能なことは何もありません。基本的に、pam_krb5は、現在のKRB5CCNAMEが指すチケットキャッシュを開き、それを反復処理し、見つかった各チケットを初期キャッシュ設定後に新しく作成されたチケットキャッシュにコピーするコードを取得する必要があります。

これはデフォルト以外のオプションである必要があります。これは、資格情報をターゲットユーザー(そのユーザーになることができるすべてのユーザーelseを含む)に提供するため、潜在的に危険です。

すぐに解決策が必要な場合、ksuのすべての機能が必要ない場合は、代わりにSudoの使用を検討してください。 ksuは、現在のKerberosチケットキャッシュを保持するためのサポートをすでに持っています(少なくともMIT Kerberosバージョンでは)。

2
rra