Linuxでシステムアカウントを使用してコマンド/プログラムを実行する方法

Linuxでシステムアカウントを使用してコマンド/プログラムを実行する方法

私の目標は、LDAP検索を実行し、gMSAアカウントのパスワードを取得することです。

  • Ubuntu仮想マシンがありますDev_Linux
  • 私のユーザーアカウントはですsja
  • Dev_Linuxこのアカウントを使用してLDAP検索を実行したいと思います。私はこのアカウントをシステムアカウントまたはコンピュータアカウントと呼びます。

アカウントがsja許可されたプリンシパルとして追加されたら、パスワードを検索できました。私が意図した設定は、許可されたプリンシパルのホストグループにコンピュータアカウントを追加することです。したがって、コンピュータアカウントを使用してLDAP検索を実行できる場合は、パスワードを検索できる必要があります。

私はそれを実行し、kinitコンピュータklist -kアカウントに権限があることを示しました。

しかし、LDAP検索をコンピュータアカウントとして実行する方法について心配しています。この場合は、またはではありDev_Linuxません。sjaroot

答え1

これマシンアカウント本質的に Kerberos/AD アカウントです。 Windowsとは異なり、Linuxにはコンピュータアカウントのオペレーティングシステムの概念は組み込まれていません。

しかし、一つマシンアカウントデフォルトでは、ローカルシステムのすべてのユーザーが使用できるネットワーク認証資格情報のセットです。

免責事項:以下は私の前のメモに基づいています。現在、テストに使用できる動作中のKerberos環境はありません。

必要に応じて、Kerberos / AD管理者と協力して、コンピュータアカウント用のKerberos keytabファイルを作成できます。

ktutil -v -k /some/where/Dev_Linux.keytab add -p Dev_Linux@SOME_REALM

次に、すべてのユーザーがアクセスできるローカルシステムの場所にキータブを配置します。

(Kerberosサービスが実際にActive Directoryであり、システムがAD統合認証を使用している場合、システムにはローカルシステムのシステムアカウントのキータブを維持し、システムアカウントのパスワードとキータブを定期的に更新するデバイスがすでにあります。要件を満たす必要がある場合は、単にキータブファイルを見つけて、ユーザーにそのファイルを読み取るための適切な権限を付与するだけです。

コンピュータ認証を使用して認証するには、カスタム資格情報キャッシュ名を設定し(個人のKerberosアカウントを妨げないように)、キータブを使用してコンピュータアカウントで認証する必要があります。

たとえば、

kinit -c /tmp/krb5cc_machine --keytab=/some/where/Dev_Linux.keytab Dev_Linux@SOME_REALM

コンピュータアカウントのパスワードはキータブで暗号化されているため、このコマンドは非対話型で実行できます。ログインセッションの開始時に、または適切な間隔でこのコマンドを実行して、キャッシュされた認証チケットが最終的に期限切れになるため、更新できます。

キャッシュされたコンピュータアカウントの資格情報を使用するには、[コンピュータアカウントのキー]タブを使用して編集された資格情報キャッシュを指すようにKRB5CCNAME環境変数を設定し、kinit個人アカウントで認証する場合は設定を解除(または既存の値に戻す)します。

したがって、これらの準備が完了したら、ldapsearchマシンアカウントを使用して実行します。

KRB5CCNAME=/tmp/krb5cc_machine ldapsearch -U Dev_Linux <necessary options and parameters...>

現在のローカルユーザー名の代わりにldapsearch使用するユーザー名を指定するオプションを含めることができます。Dev_Linux私は必要な選択肢があると思います-U Dev_Linux

KRB5_CLIENT_KTNAMEコンピュータアカウントのkeytabファイルを指すように環境変数を設定し、LDAP検索ツールにコンピュータアカウントのユーザー名を指定するだけで十分です。 LDAP 検索ツールの Kerberos サポートが十分スマートであれば、必要な認証チケットを自動的に取得できます。ただし、個人アカウント認証チケットとコンピュータアカウント認証が混在するのを防ぐには、競合しないKRB5CCNAMEを設定する必要があります。チケットミックス - 特定のタスクを実行するためにコンピュータアカウントまたは個人アカウントを使用するかどうかを制御できます。

したがって、keytabファイルを明示的に使用したkinit後、コンピュータアカウントを使用したLDAP検索が正常に機能していることを確認したら、次のコマンドを使用せずに試すことができますkinit

kdestroy -c /tmp/krb5cc_machine 
KRB5_CLIENT_KTNAME=FILE:/some/where/Dev_Linux.keytab KRB5CCNAME=/tmp/krb5cc_machine ldapsearch -U Dev_Linux <options and parameters...>

成功した場合にコンピュータアカウントを使用するために必要な唯一のことは、keytabファイルへのアクセスと2つの環境変数の割り当て(およびKRB5_CLIENT_KTNAMEKRB5CCNAME、コンピュータアカウントの正しいユーザー名を使用するオプションです。

関連情報