Identity Management の設定および管理
IdM にログインし、サービス、ユーザー、ホスト、グループ、アクセス制御ルール、および証明書を管理します。
概要
Red Hat ドキュメントへのフィードバック (英語のみ)
Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。
Jira からのフィードバック送信 (アカウントが必要)
- Jira の Web サイトにログインします。
- 上部のナビゲーションバーで Create をクリックします。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- ダイアログの下部にある Create をクリックします。
第1章 コマンドラインから Identity Management へのログイン
Identity Management (IdM) では、Kerberos プロトコルを使用してシングルサインオンに対応します。シングルサインオンとは、ユーザーが正しいユーザー名およびパスワードを一度だけ入力すれば、システムが認証情報を再度求めることなく、IdM サービスにアクセスできるという機能です。
IdM では、ユーザーが、対応する Kerberos プリンシパル名を使用して IdM クライアントマシンのデスクトップ環境にログインすると、SSSD (System Security Services Daemon) が、そのユーザーの TGT (Ticket-Granting Ticket) を自動的に取得します。これは、ログインしてから、kinit ユーティリティーを使用して IdM リソースにアクセスする必要がなくなることを意味します。
Kerberos 認証情報キャッシュを削除している場合、または Kerberos TGT の有効期限が切れている場合に IdM リソースにアクセスするには、手動で Kerberos チケットを要求する必要があります。以下のセクションでは、IdM で Kerberos を使用している場合の基本的なユーザー操作を説明します。
1.1. kinit による IdM への手動ログイン
kinit ユーティリティーを使用して Identity Management (IdM) 環境に対して手動で認証するには、次の手順に従います。kinit ユーティリティーは、IdM ユーザーの代わりに Kerberos の TGT (Ticket-Granting Ticket) を取得して、キャッシュに格納します。
この手順は、最初の Kerberos TGT を破棄したか、有効期限が切れている場合にのみ使用します。ローカルマシンに、IdM ユーザーとしてログインすると、IdM に自動的にログインします。これは、ログイン後に IdM リソースにアクセスするのに kinit ユーティリティーを使用する必要がないことを示しています。
手順
現在ローカルシステムにログインしているユーザーのユーザー名でログインするには、ユーザー名を指定せずに kinit を使用します。たとえば、ローカルシステムに
<example_user>
としてログインしている場合は次のようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit
[example_user@server ~]$ kinit Password for example_user@EXAMPLE.COM: [example_user@server ~]$
ローカルユーザーのユーザー名と、IdM のユーザーエントリーが一致しないと、認証に失敗します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit
[example_user@server ~]$ kinit kinit: Client 'example_user@EXAMPLE.COM' not found in Kerberos database while getting initial credentials
ローカルユーザー名に対応しない Kerberos プリンシパルを使用するには、必要なユーザー名を
kinit
ユーティリティーに渡します。たとえば、admin
ユーザーとしてログインするには、次のコマンドを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
[example_user@server ~]$ kinit admin Password for admin@EXAMPLE.COM: [example_user@server ~]$
kinit -kt KDB: user@EXAMPLE.COM
を使用したユーザーチケットの要求は無効です。詳細は、ソリューション記事 Why kinit -kt KDB: user@EXAMPLE.COM no longer work after CVE-2024-3183 を参照してください。
検証
ログインが成功したことを確認するには、klist ユーティリティーを使用して、キャッシュされた TGT を表示します。以下の例では、キャッシュに
example_user
プリンシパルのチケットが含まれています。これは、このホストでは IdM サービスにアクセスするのは、example_user
にのみ許可されていることを示しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist
$ klist Ticket cache: KEYRING:persistent:0:0 Default principal: example_user@EXAMPLE.COM Valid starting Expires Service principal 11/10/2019 08:35:45 11/10/2019 18:35:45 krbtgt/EXAMPLE.COM@EXAMPLE.COM
1.2. アクティブなユーザーの Kerberos チケットの破棄
ユーザーのアクティブな Kerberos チケットを含む認証情報キャッシュをクリアするには、次の手順に従います。
手順
Kerberos チケットを破棄するには、次のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kdestroy
[example_user@server ~]$ kdestroy
検証
Kerberos チケットが破棄されたことを確認するには、次のコマンドを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist
[example_user@server ~]$ klist klist: Credentials cache keyring 'persistent:0:0' not found
1.3. Kerberos 認証用の外部システムの設定
Identity Management (IdM) ユーザーが Kerberos 認証情報を使用して外部システムから IdM にログインできるように外部システムを設定するには、この手順に従います。
外部システムの Kerberos 認証を有効にすることは、インフラストラクチャーに、複数のレルムまたは重複ドメインが含まれている場合に特に便利です。また、ipa-client-install
を実行してシステムを IdM ドメインに登録していない場合にも便利です。
IdM ドメインのメンバーではないシステムから IdM への Kerberos 認証を有効にするには、IdM 固有の Kerberos 設定ファイルを外部システムに定義します。
前提条件
外部システムに
krb5-workstation
パッケージがインストールされている。パッケージがインストールされているかどうかを確認するには、次の CLI コマンドを使用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum list installed krb5-workstation
# yum list installed krb5-workstation Installed Packages krb5-workstation.x86_64 1.16.1-19.el8 @BaseOS
手順
IdM サーバーから外部システムに
/etc/krb5.conf
ファイルをコピーします。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow scp /etc/krb5.conf root@externalsystem.example.com:/etc/krb5_ipa.conf
# scp /etc/krb5.conf root@externalsystem.example.com:/etc/krb5_ipa.conf
警告外部マシンにある既存の
krb5.conf
ファイルは上書きしないでください。外部システムで、コピーした IdM の Kerberos 設定ファイルを使用するように、端末セッションを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow export KRB5_CONFIG=/etc/krb5_ipa.conf
$ export KRB5_CONFIG=/etc/krb5_ipa.conf
KRB5_CONFIG
変数は、ログアウトまで一時的に存在します。ログアウト時に削除されないように、この変数のファイル名を変えてエクスポートします。-
/etc/krb5.conf.d/
ディレクトリーの Kerberos 設定部分を、外部システムにコピーします。
外部システムのユーザーが、kinit
ユーティリティーを使用して IdM サーバーで認証できるようになりました。
1.4. 関連情報
-
システム上の
krb5.conf(5)
、kinit(1)
、klist(1)
、およびkdestroy(1)
man ページ
第2章 Identity Management サービスの表示、開始、および停止
Identity Management (IdM) サーバーは、ドメインコントローラー (DC) として機能する Red Hat Enterprise Linux システムです。IdM サーバーでさまざまなサービスが実行していますが、中でも注目すべきは Directory Server、Certificate Authority (CA)、DNS、および Kerberos です。
2.1. IdM サービス
IdM サーバーおよびクライアントにインストールして実行できるサービスには、さまざまなものがあります。
IdM サーバーがホストするサービスのリスト
以下のサービスの多くは、IdM サーバーへのインストールが必須というわけではありません。たとえば、認証局 (CA) や DNS サーバーなどのサービスは、IdM ドメイン内にない外部サーバーにインストールできます。
- Kerberos
-
krb5kdc
サービスおよびkadmin
サービス
IdM は、シングルサインオンに対応する Kerberos プロトコルを使用します。Kerberos では、正しいユーザー名とパスワードを一度提示するだけで済み、システムから認証情報を再度求められることなく IdM サービスにアクセスできます。
Kerberos は 2 つの部分に分類されます。
-
krb5kdc
サービス。Kerberos 認証サービスおよびキー配布センター (KDC) デーモンです。 -
kadmin
サービス。Kerberos V5 データベース管理プログラムです。
IdM で Kerberos を使用して認証する方法は、コマンドラインからの Identity Management へのログイン および Web UI で IdM にログイン: Kerberos チケットの使用 を参照してください。
- LDAP ディレクトリーサーバー
-
dirsrv
サービス
IdM の LDAP ディレクトリーサーバー インスタンスは、Kerberos、ユーザーアカウント、ホストエントリー、サービス、ポリシー、DNS などの情報をはじめとした、IdM 情報をすべて保存します。LDAP ディレクトリーサーバーインスタンスは、Red Hat Directory Server と同じテクノロジーをベースにしています。ただし、IdM 固有のタスクに合わせて調整されます。
- 認証局
-
pki-tomcatd
サービス
統合 認証局 (CA) は、Red Hat Certificate System と同じテクノロジーをベースにしています。pki
は、Certificate System サービスにアクセスするためのコマンドラインです。
必要な証明書をすべて単独で作成して提供する場合は、統合 CA なしでサーバーをインストールすることもできます。
詳細は、CA サービスの計画 を参照してください。
- DNS (Domain Name System)
-
named
サービス
IdM は、動的サービス検出に DNS を使用します。IdM クライアントのインストールユーティリティーは、DNS からの情報を使用して、クライアントマシンを自動的に設定できます。クライアントを IdM ドメインに登録したら、クライアントは DNS を使用してドメイン内の IdM サーバーおよびサービスを検索します。Red Hat Enterprise Linux の DNS (Domain Name System) プロトコルの BIND
(Berkeley Internet Name Domain) 実装には、名前付き
の DNS サーバーが含まれています。named-pkcs11
は、PKCS#11 暗号化標準に対するネイティブサポートありで構築された BIND DNS サーバーのバージョンです。
詳細は、Planning your DNS services and host names を参照してください。
- Apache HTTP サーバー
-
httpd
サービス
Apache HTTP Web サーバー には、IdM Web UI があり、認証局とその他の IdM サービスの間の通信も管理します。
- Samba / Winbind
-
SMB
サービスおよびwinbind
サービス
Samba は、Red Hat Enterprise Linux に、Common Internet File System (CIFS) プロトコルとも呼ばれる Server Message Block (SMB) プロトコルを実装します。smb サービス経由で SMB プロトコルを使用すると、ファイル共有や共有プリンターなどのサーバーのリソースにアクセスできます。Active Directory (AD) 環境で信頼を設定している場合には、'Winbind' サービスが IdM サーバーと AD サーバー間の通信を管理します。
- ワンタイムパスワード (OTP) 認証
-
ipa-otpd
サービス
ワンタイムパスワード (OTP) は、2 要素認証の一部として、認証トークンがセッション 1 回だけ使用できるように生成するパスワードです。OTP 認証は、ipa-otpd
サービスを介して Red Hat Enterprise Linux に実装されています。
詳細は ワンタイムパスワードを使用して Identity Management Web UI へのログイン を参照してください。
- OpenDNSSEC
-
ipa-dnskeysyncd
サービス
OpenDNSSEC は、DNSSEC (DNS Security Extensions) キーおよびゾーンの署名の記録プロセスを自動化する DNS マネージャーです。ipa-dnskeysyncd
サービスは、IdM Directory Server と OpenDNSSEC との間の同期を管理します。

DNSSEC は、IdM ではテクノロジープレビューとしてのみ利用できます。
IdM クライアントがホストするサービスのリスト
-
System Security Services Daemon:
sssd
サービス
SSSD (System Security Services Daemon) は、ユーザー認証およびキャッシュ認証情報を管理するクライアント側のアプリケーションです。キャッシュを使用すると、IdM サーバーが利用できなくなったり、クライアントがオフラインになったりした場合に、ローカルシステムが通常の認証操作を継続できるようになります。
詳細は SSSD とその利点について を参照してください。
-
certmonger:
certmonger
サービス
certmonger
サービスは、クライアント上の証明書を監視、更新します。このサービスは、システム上のサービスに対して新しい証明書を要求できます。
詳細は、certmonger を使用したサービスの IdM 証明書の取得 を参照してください。

2.2. IdM サービスの状態の表示
IdM サーバーに設定されている IdM サービスの状態を表示するには、ipactl status
コマンドを実行します。
ipactl status
[root@server ~]# ipactl status
Directory Service: RUNNING
krb5kdc Service: RUNNING
kadmin Service: RUNNING
named Service: RUNNING
httpd Service: RUNNING
pki-tomcatd Service: RUNNING
smb Service: RUNNING
winbind Service: RUNNING
ipa-otpd Service: RUNNING
ipa-dnskeysyncd Service: RUNNING
ipa: INFO: The ipactl command was successful
サーバーの ipactl status
コマンドの出力は、IdM 設定により異なります。たとえば、IdM デプロイメントに DNS サーバーが含まれていない場合は、named
サービスがリストに表示されません。
IdM の Web UI を使用して、特定の IdM サーバーで実行しているすべての IdM サービスの状態を表示することはできません。異なるサーバー上で実行されている Kerberos 化されたサービスは、IdM Web UI の [アイデンティティー] → [Services] タブで表示できます。
2.3. Identity Management サーバー全体の起動と停止
ipa
systemd サービスを使用して、IdM サーバー全体を、インストールしたすべてのサービスを停止、起動、または再起動します。systemctl
ユーティリティーを使用して ipa
systemd サービスを制御すると、すべてのサービスが適切な順序で停止、開始、または再起動されます。ipa
systemd サービスは、IdM サービスを起動する前に RHEL IdM 設定もアップグレードし、IdM サービスの管理時に適切な SELinux コンテキストを使用します。systemctl ipa
コマンドを実行するには、有効な Kerberos チケットは必要ありません。
ipa
systemd service コマンド
IdM サーバー全体を起動するには、次のコマンドを実行します。
systemctl start ipa
# systemctl start ipa
IdM サーバー全体を停止するには、次のコマンドを実行します。
systemctl stop ipa
# systemctl stop ipa
IdM サーバー全体を再起動するには、次のコマンドを実行します。
systemctl restart ipa
# systemctl restart ipa
IdM を設定するすべてのサービスのステータスを表示するには、ipactl
ユーティリティーを使用します。
ipactl status
# ipactl status
-
IdM サービスは、
ipactl
ユーティリティーで、起動、停止、または再起動しないでください。代わりにsystemctl ipa
コマンドを使用して、予測可能な環境でipactl
ユーティリティーを呼び出します。 -
ipactl
コマンドは、IdM の Web UI では使用できません。
2.4. 個々の Identity Management サービスの開始および停止
IdM 設定ファイルを手動で変更することは推奨されていません。ただし、特定の状況では、管理者が特定のサービスを手動で設定する必要があります。このような場合は、systemctl
ユーティリティーを使用して、個々の IdM サービスを停止、開始、または再開します。
たとえば、その他の IdM サービスを変更せずに、Directory Server の挙動をカスタマイズした場合は、systemctl
を使用します。
systemctl restart dirsrv@REALM-NAME.service
# systemctl restart dirsrv@REALM-NAME.service
また、Active Directory と IdM の信頼を最初にデプロイする場合は、/etc/sssd/sssd.conf
ファイルを変更して、以下を追加します。
- リモートサーバーのレイテンシーが長い環境で、タイムアウト設定オプションを調整するための特定のパラメーター
- Active Directory サイトのアフィニティーを調整するための特定のパラメーター
- グローバルの IdM 設定では提供されない特定の設定オプションのオーバーライド
/etc/sssd/sssd.conf
ファイルに加えた変更を適用する場合は、次のコマンドを実行します。
systemctl restart sssd.service
# systemctl restart sssd.service
System Security Services Daemon (SSSD) は、設定を自動的に再読み込みまたは再適用しないため、systemctl restart sssd.service
を実行する必要があります。
変更が、IdM の ID 範囲に影響を及ぼす場合は、サーバーを完全に再起動することが推奨されます。
複数の IdM ドメインサービスを再起動するには、常に systemctl restart ipa
を使用します。IdM サーバーにインストールされているサービス間での依存関係により、サービスを開始および停止する順番は極めて重要です。ipa
systemd サービスは、サービスが適切な順序で開始および停止されるようにします。
便利な systemctl
コマンド
特定の IdM サービスを開始するには、次のコマンドを実行します。
systemctl start name.service
# systemctl start name.service
特定の IdM サービスを停止するには、次のコマンドを実行します。
systemctl stop name.service
# systemctl stop name.service
特定の IdM サービスを再開するには、次のコマンドを実行します。
systemctl restart name.service
# systemctl restart name.service
特定の IdM サービスの状態を表示するには、次のコマンドを実行します。
systemctl status name.service
# systemctl status name.service
IdM の Web UI を使用して、IdM サーバーで実行している個々のサービスを開始または停止することはできません。Web UI で可能なのは、Identity
→ Services
に移動してサービスを選択し、Kerberos に対応する設定を修正することです。
2.5. IdM ソフトウェアのバージョンを表示する方法
IdM バージョン番号は次の方法で表示できます。
- IdM WebUI
-
ipa
コマンド -
rpm
コマンド
- WebUI を介したバージョンの表示
IdM WebUI では、右上のユーザー名メニューから
About
を選択して、ソフトウェアバージョンを表示できます。ipa
コマンドによるバージョンの表示コマンドラインから、
ipa --version
コマンドを使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa --version
[root@server ~]# ipa --version VERSION: 4.8.0, API_VERSION: 2.233
rpm
コマンドによるバージョンの表示IdM サービスが適切に動作していない場合は、
rpm
ユーティリティーを使用して、現在インストールされているipa-server
パッケージのバージョン番号を確認できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow rpm -q ipa-server
[root@server ~]# rpm -q ipa-server ipa-server-4.8.0-11.module+el8.1.0+4247+9f3fd721.x86_64
第3章 IdM コマンドラインユーティリティーの概要
Identity Management (IdM) コマンドラインユーティリティーの基本的な使用方法を説明します。
前提条件
IdM サーバーをインストールしていて、アクセス可能である。
詳細は、Identity Management のインストール を参照してください。
IPA コマンドラインインターフェイスを使用する場合は、有効な Kerberos チケットを使用して IdM に対してを認証している。
有効な Kerberos チケットを取得する方法の詳細は、コマンドラインからアイデンティティー Management にアクセスするには、ロギングを 参照してください。
3.1. IPA コマンドラインインターフェイスとは
IPA コマンドラインインターフェイス (CLI) は、Identity Management (IdM) の管理向けの基本的なコマンドラインインターフェイスです。
新しいユーザーを追加するための ipa user-add
コマンドなど、IdM を管理するための多くのサブコマンドがサポートされています。
IPA CLI では以下を行うことができます。
- ネットワーク内のユーザー、グループ、ホスト、その他のオブジェクトを追加、管理、または削除する。
- 証明書を管理する。
- エントリーを検索する。
- オブジェクトを表示し、オブジェクトリストを表示する。
- アクセス権を設定する。
- 正しいコマンド構文でヘルプを取得する。
3.2. IPA のヘルプとは
IPA ヘルプは、IdM サーバー用の組み込みドキュメントシステムです。
IPA コマンドラインインターフェイス (CLI) は、読み込んだ IdM プラグインモジュールから、利用可能なヘルプトピックを生成します。IPA ヘルプユーティリティーを使用するには、以下が必要です。
- IdM サーバーがインストールされ、実行している。
- 有効な Kerberos チケットで認証されている。
オプションを指定せずに ipa help
コマンドを実行すると、基本的なヘルプの使用方法と、最も一般的なコマンドの例が表示されます。
さまざまな ipa help
のユースケースに対して、次のオプションを使用できます。
ipa help [TOPIC | COMMAND | topics | commands]
$ ipa help [TOPIC | COMMAND | topics | commands]
-
[]
- 括弧は、すべてのパラメーターが任意であることを示しており、ipa help
のみを入力すれば、コマンドが実行できます。 |
— パイプ文字は または の意味になります。したがって、基本的なipa help
コマンドを使用して、TOPIC
、COMMAND
、topics
またはcommands
を指定できます。-
topics
— コマンドipa help topics
を実行して、IPA ヘルプでカバーされているuser
、cert
、server
などのトピックのリストを表示できます。 -
TOPIC
— 大文字の TOPIC は変数になります。したがって、特定のトピック (ipa help user
など) を指定できます。 -
commands
— コマンドipa help commands
を入力して、user-add
、ca-enable
、server-show
などの IPA ヘルプでカバーされているコマンドのリストを表示できます。 -
COMMAND
— 大文字の COMMAND は変数になります。したがって、ipa help user-add
などの特定のコマンドを指定できます。
-
3.3. IPA ヘルプトピックの使用
以下の手順では、コマンドラインで IPA ヘルプを使用する方法について説明します。
手順
- 端末を開き、IdM サーバーに接続します。
ヘルプに記載されているトピックのリストを表示するには、
ipa help topics
を実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa help topics
$ ipa help topics
トピックの 1 つを選択し、
ipa help [topic_name]
のパターンに従ってコマンドを作成します。topic_name
文字列の代わりに、前の手順でリストしたトピックの 1 つを追加します。この例では、
user
トピックを使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa help user
$ ipa help user
(オプション) IPA ヘルプ出力が長すぎてテキスト全体を表示できない場合は、次の構文を使用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa help user | less
$ ipa help user | less
スクロールダウンすれば、ヘルプ全体を表示できます
IPA CLI は、ユーザー
トピックのヘルプページを表示します。概要を読むと、トピックのコマンドを使用するパターンに関して、多くの例を確認できます。
3.4. IPA help コマンドの使用
以下の手順では、コマンドラインで IPA help コマンドを作成する方法を説明します。
手順
- 端末を開き、IdM サーバーに接続します。
ヘルプで使用できるコマンドのリストを表示するには、
ipa help commands
コマンドを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa help commands
$ ipa help commands
コマンドの 1 つを選択し、
ipa help <COMMAND>
のパターンに従ってヘルプコマンドを作成します。<COMMAND>
文字列の代わりに、前の手順でリストしたコマンドの 1 つを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa help user-add
$ ipa help user-add
関連情報
-
システム上の
ipa
man ページ
3.5. IPA コマンドの構造
IPA CLI は、以下のタイプのコマンドを区別します。
- 組み込みコマンド — 組み込みコマンドはすべて、IdM サーバーで利用できます。
- プラグインにより提供されたコマンド
IPA コマンドの構造を使用すると、さまざまなタイプのオブジェクトを管理できます。以下に例を示します。
- ユーザー
- ホスト
- DNS レコード
- 証明書
その他にも多数あります。
このようなほとんどのオブジェクトでは、IPA CLI に、以下を行うためのコマンドが含まれます。
-
追加 (
add
) -
修正 (
mod
) -
削除 (
del
) -
検索 (
find
) -
表示 (
show
)
コマンドの構造は次のとおりです。
ipa user-add
、ipa user-mod
、ipa user-del
、ipa user-find
、ipa user-show
ipa host-add
、ipa host-mod
、ipa host-del
、ipa host-find
、ipa host-show
ipa dnsrecord-add
、ipa dnsrecord-mod
、ipa dnsrecord-del
、ipa dnsrecord-find
、ipa dnrecord-show
ipa user-add [options]
でユーザーを作成できます。[options]
は任意です。ipa user-add
コマンドのみを使用する場合、スクリプトは、詳細を 1 つずつ要求します。
[オプション]
--raw
と --structured
は相互に排他的であり、一緒に実行してはならないことに注意してください。
既存のオブジェクトを変更するには、オブジェクトを定義する必要があります。そのため、コマンドには、オブジェクト ipa user-mod USER_NAME [options]
も含まれます。
3.6. IdM ユーティリティーに値をリスト形式で提供する方法
Identity Management (IdM) は、多値属性の値をリスト形式で保存します。
IdM は、多値リストを提供する次の方法に対応します。
同じコマンド呼び出しで、同じコマンドライン引数を複数回指定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa permission-add --right=read --permissions=write --permissions=delete ...
$ ipa permission-add --right=read --permissions=write --permissions=delete ...
または、リストを中括弧で囲むこともできます。この場合、シェルはデプロイメントを実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa permission-add --right={read,write,delete} ...
$ ipa permission-add --right={read,write,delete} ...
上記の例では、パーミッションをオブジェクトに追加する permission-add
コマンドを表示します。この例では、このオブジェクトについては触れていません。…
の代わりに、権限を追加するオブジェクトーを追加する必要があります。
このような多値属性をコマンド行から更新すると、IdM は、前の値リストを新しいリストで完全に上書きします。したがって、多値属性を更新するときは、追加する 1 つの値だけでなく、新しいリスト全体を指定する必要があります。
たとえば、上記のコマンドでは、パーミッションのリストには、読み取り、書き込み、および削除が含まれます。permission-mod
コマンドでリストを更新する場合は、すべての値を追加する必要があります。すべての値を追加しないと、追加されていない値は削除されます。
例 1: - ipa permission-mod
コマンドは、以前に追加した権限をすべて更新します。
ipa permission-mod --right=read --right=write --right=delete ...
$ ipa permission-mod --right=read --right=write --right=delete ...
または
ipa permission-mod --right={read,write,delete} ...
$ ipa permission-mod --right={read,write,delete} ...
例 2 - ipa permission-mod
コマンドは、コマンドに含まれないため、--right=delete
引数を削除します。
ipa permission-mod --right=read --right=write ...
$ ipa permission-mod --right=read --right=write ...
または
ipa permission-mod --right={read,write} ...
$ ipa permission-mod --right={read,write} ...
3.7. IdM ユーティリティーで特殊文字を使用する方法
特殊文字を含むコマンドライン引数を ipa
コマンドに渡す場合は、この文字をバックスラッシュ (\) でエスケープします。たとえば、一般的な特殊文字には、山かっこ (< および >)、アンパサンド (&)、アスタリスク (*)、またはバーティカルバー (|) があります。
たとえば、アスタリスク (*) をエスケープするには、次のコマンドを実行します。
ipa certprofile-show certificate_profile --out=exported\*profile.cfg
$ ipa certprofile-show certificate_profile --out=exported\*profile.cfg
シェルが特殊文字を正しく解析できないため、エスケープしていない特殊文字をコマンドに含めると、予想通りに機能しなくなります。
第4章 コマンドラインから Identity Management エントリーの検索
次のセクションでは、オブジェクトの検索または表示に役立つ IPA コマンドの使用方法を説明します。
4.1. IdM エントリーのリスト表示の概要
ipa *-find
コマンドを使用すると、特定のタイプの IdM エントリーを検索できます。
すべての find
コマンドを表示するには、次の ipa help コマンドを使用します。
ipa help commands | grep find
$ ipa help commands | grep find
特定のユーザーが IdM データベースに含まれているかどうかの確認が必要になる場合があります。次のコマンドを使用すると、ユーザーをリスト表示できます。
ipa user-find
$ ipa user-find
指定の属性にキーワードが含まれるユーザーグループのリストを表示するには、次のコマンドを実行します。
ipa group-find keyword
$ ipa group-find keyword
たとえば、ipa group-find admin
コマンドは、名前または説明に文字列 admin
が含まれるグループのリストを表示します。
---------------- 3 groups matched ---------------- Group name: admins Description: Account administrators group GID: 427200002 Group name: editors Description: Limited admins who can edit other users GID: 427200002 Group name: trust admins Description: Trusts administrators group
----------------
3 groups matched
----------------
Group name: admins
Description: Account administrators group
GID: 427200002
Group name: editors
Description: Limited admins who can edit other users
GID: 427200002
Group name: trust admins
Description: Trusts administrators group
ユーザーグループの検索の際には、特定のユーザーを含むグループに検索結果を絞り込むことも可能です。
ipa group-find --user=user_name
$ ipa group-find --user=user_name
また、特定のユーザーを含まないグループを検索するには、次のコマンドを実行します。
ipa group-find --no-user=user_name
$ ipa group-find --no-user=user_name
4.2. 特定のエントリーの詳細の表示
ipa *-show
コマンドを使用して、特定の IdM エントリーの詳細を表示します。
手順
ホスト server.example.com に関する詳細を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa host-show server.example.com
$ ipa host-show server.example.com Host name: server.example.com Principal name: host/server.example.com@EXAMPLE.COM ...
4.3. 検索サイズおよび時間制限の調整
IdM ユーザーのリストを要求するなど、一部のクエリーでは、エントリー数が大量に返される場合があります。この検索操作を調整して、ipa user-find
などの ipa *-find
コマンドの実行時や、Web UI で対応するリストを表示する際に、全体的なサーバーのパフォーマンスを向上できます。
- 検索サイズ制限
クライアントの CLI または IdM Web UI にアクセスするブラウザーからサーバーに送信されるリクエストで返される最大エントリー数を定義します。
デフォルト - 100 エントリー
- 検索時間の制限
検索の実行までにサーバーが待機する最大時間 (秒) を定義します。検索がこの制限に到達したら、サーバーは検索を停止し、停止するまでの期間に検出されたエントリーを返します。
デフォルト - 2 秒
この値が -1
に設定されていると、IdM は、検索時に制限を適用しません。
検索のサイズや時間制限を高く設定しすぎると、サーバーのパフォーマンスに影響を及ぼすことがあります。
4.3.1. コマンドラインで検索サイズおよび時間制限の調整
検索サイズと時間制限をグローバルに、または特定のエントリーに合わせて調整して、検索のパフォーマンスと応答性を最適化できます。
手順
現在の検索時間およびサイズ制限を CLI で表示するには、
ipa config-show
コマンドを使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa config-show
$ ipa config-show Search time limit: 2 Search size limit: 100
すべてのクエリーに対して グローバルに 制限を調整するには、
ipa config-mod
コマンドを使用して、--searchrecordslimit
および--searchtimelimit
のオプションを追加します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa config-mod --searchrecordslimit=500 --searchtimelimit=5
$ ipa config-mod --searchrecordslimit=500 --searchtimelimit=5
特定のクエリーに対してのみ 一時的に 制限を調整するには、コマンドに
--sizelimit
または--timelimit
オプションを追加してください。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-find --sizelimit=200 --timelimit=120
$ ipa user-find --sizelimit=200 --timelimit=120
4.3.2. Web UI で検索サイズおよび時間制限の調整
IdM Web UI を使用してグローバル検索のサイズと時間制限を調整し、検索のパフォーマンスと応答性を最適化できます。
手順
- IdM Web UI にログインします。
- IPA Server をクリックします。
- IPA Server タブで、Configuration をクリックします。
Search Options エリアに必要な値を設定します。
デフォルト値は以下の通りです。
- 検索サイズの制限 - 100 エントリー
- 検索時間の制限 - 2 秒
- ページ上部にある Save をクリックします。
第5章 Web ブラウザーで IdM Web UI へのアクセス
IdM (Identity Management) Web UI は、IdM 管理用の Web アプリケーションであり、IdM コマンドラインインターフェイス (CLI) のグラフィカルな代替手段です。
5.1. IdM Web UI とは
IdM (Identity Management) Web UI は、IdM 管理用の Web アプリケーションです。IdM Web UI には、以下のユーザーとしてアクセスできます。
- IdM ユーザー - IdM サーバーでユーザーに付与されている権限に応じて制限されている一連の操作。基本的に、アクティブな IdM ユーザーは IdM サーバーにログインして自身のアカウントを設定できます。その他のユーザーまたは IdM サーバーの設定は変更できません。
- 管理者 - IdM サーバーへのフルアクセス権
- Active Directory ユーザー - ユーザーに付与されている権限に応じた一連の操作Active Directory ユーザーが Identity Management の管理可能に詳細は IdM を管理する AD ユーザーの有効化 を参照してください。
5.2. Web UI へのアクセスに対応している Web ブラウザー
Identity Management (IdM) は、Web UI への接続に、以下のブラウザーをサポートします。
- Mozilla Firefox 38 以降
- Google Chrome 46 以降
ブラウザーで TLS v1.3 を使用しようとすると、スマートカードで IdM Web UI にアクセスできなくなる場合があります。
[ssl:error] [pid 125757:tid 140436077168384] [client 999.999.999.999:99999] AH: verify client post handshake [ssl:error] [pid 125757:tid 140436077168384] [client 999.999.999.999:99999] AH10158: cannot perform post-handshake authentication [ssl:error] [pid 125757:tid 140436077168384] SSL Library Error: error:14268117:SSL routines:SSL_verify_client_post_handshake:extension not received
[ssl:error] [pid 125757:tid 140436077168384] [client 999.999.999.999:99999] AH: verify client post handshake
[ssl:error] [pid 125757:tid 140436077168384] [client 999.999.999.999:99999] AH10158: cannot perform post-handshake authentication
[ssl:error] [pid 125757:tid 140436077168384] SSL Library Error: error:14268117:SSL routines:SSL_verify_client_post_handshake:extension not received
これは、最新バージョンのブラウザーで TLS Post-Handshake Authentication (PHA) がデフォルトで有効になっていないか、PHA をサポートしていないためです。スマートカード認証で IdM Web UI にアクセスする場合など、Web サイトの一部にのみ TLS クライアント証明書を必要とする場合は、PHA が必要です。
Mozilla Firefox 68 以降でこの問題を解決するには、TLS PHA を有効にします。
-
アドレスバーに
about:config
と入力して、Mozilla Firefox 設定メニューにアクセスします。 -
検索バーに
security.tls.enable_post_handshake_auth
と入力します。 - トグルボタンをクリックして、パラメーターを true に設定します。
現在 PHA をサポートしていない Chrome でこの問題を解決するには、TLS v1.3 を無効にします。
-
/etc/httpd/conf.d/ssl.conf
設定ファイルを開きます。 -TLSv1.3
をSSLProtocol
オプションに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSLProtocol all -TLSv1 -TLSv1.1 -TLSv1.3
SSLProtocol all -TLSv1 -TLSv1.1 -TLSv1.3
httpd
サービスを再起動します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow service httpd restart
service httpd restart
IdM は ssl.conf
ファイルを管理するため、パッケージの更新時にそのコンテンツが上書きされる可能性があることに注意してください。IdM パッケージの更新後に、カスタム設定を確認します。
5.3. Web UI へのアクセス
次の手順では、パスワードを使用して、IdM (Identity Management) Web UI に最初にログインする方法を説明します。
最初のログイン後に、IdM サーバーを認証するように設定できます。
Kerberos チケット
詳細は、Kerberos authentication in Identity Management を参照してください。
スマートカード
詳細は、スマートカード認証用の IdM サーバーの設定 を参照してください。
ワンタイムパスワード (OTP) - パスワードと組み合わせることができ、Kerberos 認証に利用されます。
詳細は、One time password (OTP) authentication in Identity Management を参照してください。
手順
ブラウザーのアドレスバーに、IdM サーバーの URL を入力します。名前は次の例のようになります。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow https://server.example.com
https://server.example.com
server.example.com
を、IdM サーバーの DNS 名に変更するだけです。これで、ブラウザーに IdM Web UI ログイン画面が開きます。
- サーバーが応答しない、またはログイン画面が開かない場合は、接続している IdM サーバーの DNS 設定を確認してください。
自己署名証明書を使用する場合は、ブラウザーに警告が表示されます。証明書を確認し、セキュリティー例外を許可して、ログインを続行します。
セキュリティーの例外を回避するために、認証局が署名した証明書をインストールします。
Web UI ログイン画面で、IdM サーバーのインストール時に追加した管理者アカウントの認証情報を入力します。
詳細は Identity Management サーバーのインストール: 統合 DNS と統合 CA の場合 を参照してください。
IdM サーバーに、個人アカウントの認証情報がすでに入力されている場合は、それを入力できます。
- をクリックします。
ログインに成功したら、IdM サーバーの設定を開始できます。
第6章 Web UI で IdM にログイン: Kerberos チケットの使用
IdM Web UI への Kerberos ログインと、Kerberos 認証を使用した IdM へのアクセスを有効にするように環境を設定する方法を詳しく説明します。
前提条件
ネットワーク環境にインストールしている IdM サーバー
詳細は Red Hat Enterprise Linux 8 の Identity Management のインストール を参照してください。
6.1. Identity Management における Kerberos 認証
Identity Management (IdM) は、シングルサインオンに対応する Kerberos プロトコルを使用します。シングルサインオン認証により、ユーザーが正しいユーザー名およびパスワードを一度入力すれば、再度システムに認証情報を求められることなく、Identity Management サービスにアクセスできます。
DNS および証明書の設定が適切に設定されている場合は、インストール直後に、IdM サーバーが Kerberos 認証を提供します。詳細は、Identity Management のインストール を参照してください。
ホストで Kerberos 認証を使用するには、以下をインストールします。
IdM クライアント:
詳細は Identity Management クライアントをインストールするためのシステムの準備 を参照してください。
-
krb5conf
パッケージ。
6.2. kinit による IdM への手動ログイン
kinit ユーティリティーを使用して Identity Management (IdM) 環境に対して手動で認証するには、次の手順に従います。kinit ユーティリティーは、IdM ユーザーの代わりに Kerberos の TGT (Ticket-Granting Ticket) を取得して、キャッシュに格納します。
この手順は、最初の Kerberos TGT を破棄したか、有効期限が切れている場合にのみ使用します。ローカルマシンに、IdM ユーザーとしてログインすると、IdM に自動的にログインします。これは、ログイン後に IdM リソースにアクセスするのに kinit ユーティリティーを使用する必要がないことを示しています。
手順
現在ローカルシステムにログインしているユーザーのユーザー名でログインするには、ユーザー名を指定せずに kinit を使用します。たとえば、ローカルシステムに
<example_user>
としてログインしている場合は次のようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit
[example_user@server ~]$ kinit Password for example_user@EXAMPLE.COM: [example_user@server ~]$
ローカルユーザーのユーザー名と、IdM のユーザーエントリーが一致しないと、認証に失敗します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit
[example_user@server ~]$ kinit kinit: Client 'example_user@EXAMPLE.COM' not found in Kerberos database while getting initial credentials
ローカルユーザー名に対応しない Kerberos プリンシパルを使用するには、必要なユーザー名を
kinit
ユーティリティーに渡します。たとえば、admin
ユーザーとしてログインするには、次のコマンドを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
[example_user@server ~]$ kinit admin Password for admin@EXAMPLE.COM: [example_user@server ~]$
kinit -kt KDB: user@EXAMPLE.COM
を使用したユーザーチケットの要求は無効です。詳細は、ソリューション記事 Why kinit -kt KDB: user@EXAMPLE.COM no longer work after CVE-2024-3183 を参照してください。
検証
ログインが成功したことを確認するには、klist ユーティリティーを使用して、キャッシュされた TGT を表示します。以下の例では、キャッシュに
example_user
プリンシパルのチケットが含まれています。これは、このホストでは IdM サービスにアクセスするのは、example_user
にのみ許可されていることを示しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist
$ klist Ticket cache: KEYRING:persistent:0:0 Default principal: example_user@EXAMPLE.COM Valid starting Expires Service principal 11/10/2019 08:35:45 11/10/2019 18:35:45 krbtgt/EXAMPLE.COM@EXAMPLE.COM
6.3. Kerberos 認証用のブラウザーの設定
Kerberos チケットによる認証を有効にするには、ブラウザーの設定を変更する必要がある場合があります。
以下の手順は、IdM ドメインにアクセスする Kerberos ネゴシエーションに対応するのに役に立ちます。
各ブラウザーは Kerberos を異なる方法でサポートしており、異なる設定が必要です。IdM Web UI には、次のブラウザーに関するガイドラインが含まれています。
- Firefox
- Chrome
手順
- Web ブラウザーで、WebUI ログインダイアログを開きます。
Web UI ログイン画面でブラウザー設定のリンクをクリックします。
設定ページの手順に従います。
セットアップが完了したら、IdM Web UI に戻り、ログイン をクリックします。
6.4. Kerberos チケットで Web UI へのログイン
Kerberos Ticket-Granting Ticket (TGT) を使用して IdM Web UI にログインするには、次の手順に従います。
TGT は、事前定義された時間で有効期限が切れます。デフォルトの時間間隔は 24 時間で、IdM Web UI でそれを変更できます。
期限が切れたら、チケットを更新する必要があります。
-
kinit
コマンドの使用。 - Web UI ログインダイアログで、IdM ログイン認証情報を使用
手順
IdM Web UI を開きます。
Kerberos 認証が正しく機能し、有効なチケットがある場合は、自動的に認証されて Web UI が開きます。
チケットの有効期限が切れている場合は、最初に認証情報を使用して認証する必要があります。ただし、次からはログインダイアログを開かずに IdM Web UI が自動的に開きます。
エラーメッセージ
Authentication with Kerberos failed
が表示された場合は、ブラウザーが Kerberos 認証用に設定されていることを確認してください。Kerberos 認証用のブラウザーの設定 を参照してください。
6.5. Kerberos 認証用の外部システムの設定
Identity Management (IdM) ユーザーが Kerberos 認証情報を使用して外部システムから IdM にログインできるように外部システムを設定するには、この手順に従います。
外部システムの Kerberos 認証を有効にすることは、インフラストラクチャーに、複数のレルムまたは重複ドメインが含まれている場合に特に便利です。また、ipa-client-install
を実行してシステムを IdM ドメインに登録していない場合にも便利です。
IdM ドメインのメンバーではないシステムから IdM への Kerberos 認証を有効にするには、IdM 固有の Kerberos 設定ファイルを外部システムに定義します。
前提条件
外部システムに
krb5-workstation
パッケージがインストールされている。パッケージがインストールされているかどうかを確認するには、次の CLI コマンドを使用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum list installed krb5-workstation
# yum list installed krb5-workstation Installed Packages krb5-workstation.x86_64 1.16.1-19.el8 @BaseOS
手順
IdM サーバーから外部システムに
/etc/krb5.conf
ファイルをコピーします。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow scp /etc/krb5.conf root@externalsystem.example.com:/etc/krb5_ipa.conf
# scp /etc/krb5.conf root@externalsystem.example.com:/etc/krb5_ipa.conf
警告外部マシンにある既存の
krb5.conf
ファイルは上書きしないでください。外部システムで、コピーした IdM の Kerberos 設定ファイルを使用するように、端末セッションを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow export KRB5_CONFIG=/etc/krb5_ipa.conf
$ export KRB5_CONFIG=/etc/krb5_ipa.conf
KRB5_CONFIG
変数は、ログアウトまで一時的に存在します。ログアウト時に削除されないように、この変数のファイル名を変えてエクスポートします。-
/etc/krb5.conf.d/
ディレクトリーの Kerberos 設定部分を、外部システムにコピーします。 - Kerberos 認証用のブラウザーの設定 の説明に従って、外部システムでブラウザーを設定します。
外部システムのユーザーが、kinit
ユーティリティーを使用して IdM サーバーで認証できるようになりました。
6.6. Active Directory ユーザーの Web UI ログインを有効にする
Active Directory ユーザーに対して Web UI ログインを有効にするには、デフォルトの信頼ビュー で、Active Directory の各ユーザーに対して ID のオーバーライドを定義します。
手順
ad_user@ad.example.com
の ID オーバーライドを定義するには:Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idoverrideuser-add 'Default Trust View' ad_user@ad.example.com
[admin@server ~]$ ipa idoverrideuser-add 'Default Trust View' ad_user@ad.example.com
第7章 ワンタイムパスワードを使用した Identity Management Web UI へのログイン
IdM Web UI へのアクセスは、いくつかの方法を使用して保護できます。基本的なものはパスワード認証です。
パスワード認証のセキュリティーを向上させるために、2 つ目の手順を追加して、自動生成ワンタイムパスワード (OTP) を要求できます。最も一般的な使用方法は、ユーザーアカウントに関連付けられたパスワードと、ハードウェアまたはソフトウェアのトークンにより生成された期限付きワンタイムパスワードを組み合わせることです。
以下のセクションでは、次のことができます。
- IdM で OTP 認証がどう機能するかを理解する。
- IdM サーバーで OTP 認証を設定する。
- IdM で OTP バリデーション用に RADIUS サーバーを設定する。
- OTP トークンを作成し、そのトークンを、電話の FreeOTP アプリと同期する。
- ユーザーパスワードとワンタイムパスワードの組み合わせて、IdM Web UI に対して認証する。
- Web UI でトークンを再同期する。
- OTP ユーザーまたは RADIUS ユーザーとして IdM チケット許可チケットを取得する
- すべての LDAP クライアントに OTP の使用を強制する
7.1. Identity Management におけるワンタイムパスワード (OTP) 認証
ワンタイムパスワードにより、認証セキュリティーに関する手順が追加されます。認証には、パスワードと自動的に生成されたワンタイムパスワードが使用されます。
ワンタイムパスワードを生成するには、ハードウェアまたはソフトウェアのトークンを使用できます。IdM は、ソフトウェアトークンとハードウェアトークンの両方をサポートします。
アイデンティティー Management は、次の標準 OTP メカニズムをサポートしています。
- HMAC ベースのワンタイムパスワード (HOTP) アルゴリズムは、カウンターに基づいています。HMAC は、Hashed Message Authentication Code (ハッシュメッセージ認証コード) を表しています。
- 時間ベースのワンタイムパスワード (TOTP) アルゴリズムは、時間ベースの移動要素に対応する HOTP の拡張機能です。
IdM は、Active Directory 信頼ユーザーの OTP ログインに対応していません。
7.2. Web UI でのワンタイムパスワードの有効化
Identity Management (IdM) 管理者は、IdM ユーザーに対して 2 要素認証 (2FA) をシステム全体でまたは個別に有効にすることができます。ユーザーは、コマンドラインまたは Web UI ログインダイアログの専用フィールドで、通常のパスワードの後にワンタイムパスワード (OTP) を入力します。これらのパスワードの間にはスペースを入れません。
2FA を有効にしても、2FA が強制されるわけではありません。LDAP バインドに基づくログインを使用する場合、IdM ユーザーはパスワードを入力するだけで認証できます。ただし、krb5
ベースのログインを使用する場合は、2FA が強制されます。
すべての LDAP クライアントに OTP の使用を強制することにより、LDAP バインドに 2FA を強制するオプションがあることに注意してください。詳細は、すべての LDAP クライアントに OTP の使用を強制する を参照してください。
IdM Web UI を使用して、個々の example.user IdM ユーザーに対して 2FA を有効にするには、以下の手順を完了します。
前提条件
- 管理者権限
手順
-
IdM
admin
権限を使用して IdM Web UI にログインします。 Identity → Users → Active users タブを開きます。
- example.user を選択してユーザー設定を開きます。
- User authentication types で、Two factor authentication (password + OTP) を選択します。
- Save をクリックします。
この時点で、IdM ユーザーに対して OTP 認証が有効になります。
次に、管理者権限を持つユーザーまたは example.user が、example.user アカウントに新しいトークン ID を割り当てる必要があります。
7.3. IdM での OTP バリデーション用の RADIUS サーバー設定
プロプライエタリーのワンタイムパスワード (OTP) ソリューションから Identity Management (IdM) ネイティブの OTP ソリューションへの大規模なデプロイメントの移行を可能にするために、IdM では、ユーザーのサブセットに対して OTP バリデーションをサードパーティーの RADIUS サーバーにオフロードすることができます。管理者は、各プロキシーが単一の RADIUS サーバーのみを参照できる RADIUS プロキシーのセットを作成します。複数のサーバーに対応する必要がある場合は、複数の RADIUS サーバーを参照する仮想 IP ソリューションを作成することが推奨されます。
このようなソリューションは、keepalived
デーモンなどを使用して、RHEL IdM の外部でビルドする必要があります。次に、管理者はこれらのプロキシーセットのいずれかをユーザーに割り当てます。ユーザーが RADIUS プロキシーが設定されている限り、IdM は他のすべての認証メカニズムをバイパスします。
IdM は、サードパーティーシステムのトークンに対するトークン管理または同期のサポートを提供しません。
OTP バリデーション用に RADIUS サーバーを設定し、プロキシーサーバーにユーザーを追加する手順を実行します。
前提条件
- radius ユーザー認証方法が有効になっている。詳細は、Web UI でのワンタイムパスワードの有効化 を参照してください。
手順
RADIUS プロキシーを追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa radiusproxy-add proxy_name --secret secret
$ ipa radiusproxy-add proxy_name --secret secret
このコマンドは、必要な情報を挿入するように求められます。
RADIUS プロキシーの設定には、クライアントとサーバーとの間の共通のシークレットを使用して認証情報をラップする必要があります。
--secret
パラメーターにこのシークレットを指定します。追加したプロキシーにユーザーを割り当てます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-mod radiususer --radius=proxy_name
ipa user-mod radiususer --radius=proxy_name
必要に応じて、RADIUS に送信するユーザー名を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-mod radiususer --radius-username=radius_user
ipa user-mod radiususer --radius-username=radius_user
これにより、RADIUS プロキシーサーバーがユーザーの OTP 認証の処理を開始します。
ユーザーが IdM ネイティブ OTP システムに移行する準備ができたら、ユーザーの RADIUS プロキシー割り当てを削除するだけです。
7.3.1. 低速ネットワークで RADIUS サーバーを実行する場合の KDC タイムアウト値の変更
低速ネットワークで RADIUS プロキシーを実行している場合などの特定の状況では、ユーザーがトークンを入力するのを待機している間に接続がタイムアウトして、RADIUS サーバーが応答する前に Identity Management (IdM) Kerberos Distribution Center (KDC) が接続を閉じます。
KDC のタイムアウト設定を変更するには、以下を実行します。
/var/kerberos/krb5kdc/kdc.conf
ファイルの[otp]
セクションでtimeout
パラメーターの値を変更します。たとえば、タイムアウトを120
秒に設定するには、以下のようにします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow [otp] DEFAULT = { timeout = 120 ... }
[otp] DEFAULT = { timeout = 120 ... }
krb5kdc
サービスを再起動します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart krb5kdc
# systemctl restart krb5kdc
関連情報
- FIPS モードで FreeRADIUS 認証を設定する方法 (Red Hat ナレッジベース)
7.4. Web UI での OTP トークンの追加
次のセクションでは、IdM Web UI とソフトウェアトークンジェネレーターにトークンを追加する方法について説明します。
前提条件
- IdM サーバーでアクティブなユーザーアカウント。
- 管理者が、IdM Web UI の特定のユーザーアカウントに対して OTP を有効にしている。
- FreeOTP などの OTP トークンを生成するソフトウェアデバイス。
手順
- ユーザー名とパスワードを使用して IdM Web UI にログインします。
- Authentication → OTP Tokens タブを開いて、携帯電話でトークンを作成します。
Add をクリックします。
Add OTP token ダイアログボックスに何も入力せず、Add をクリックします。
この段階で、IdM サーバーはデフォルトパラメーターを使用してトークンを作成し、QR コード付きページを開きます。
- QR コードを携帯電話にコピーします。
- OK をクリックして QR コードを閉じます。
これで、ワンタイムパスワードを生成して、IdM Web UI にログインできるようになりました。
7.5. ワンタイムパスワードで Web UI にログイン
ワンタイムパスワード (OTP) を使用して IdM Web UI に初めてログインする際には、この手順に従います。
前提条件
OTP 認証を使用しているユーザーアカウントに対して、Identity Management サーバーで OTP 設定が有効になっている。管理者およびユーザー自身が、OTP を有効にできる。
OTP 設定を有効にする場合は、Web UI でワンタイムパスワードの有効化 を参照してください。
- 設定された OTP トークンを生成するハードウェアまたはソフトウェアのデバイス
手順
- Identity Management ログイン画面で、自身のユーザー名、または IdM サーバー管理者アカウントのユーザー名を入力します。
- 上記で入力したユーザーのパスワードを追加します。
- デバイスでワンタイムパスワードを生成します。
- スペースを入れずにパスワードの直後にワンタイムパスワードを入力します。
Log in をクリックします。
認証に失敗した場合は、OTP トークンを同期します。
CA が自己署名証明書を使用する場合は、ブラウザーに警告が表示されます。証明書を確認し、セキュリティー例外を許可して、ログインを続行します。
IdM Web UI が開かない場合は、Identity Management サーバーの DNS 設定を確認してください。
ログインに成功すると、IdM Web UI が開きます。
7.6. Web UI で OTP トークンの同期
OTP (ワンタイムパスワード) でのログインに失敗した場合、OTP トークンは正しく同期しません。
以下のテキストは、トークンの再同期を説明します。
前提条件
- OTP トークンを生成するデバイス。
手順
IdM Web UI ログイン画面で、Sync OTP Token をクリックします。
- ログイン画面で、ユーザー名と、Identity Management パスワードを入力します。
- ワンタイムパスワードを生成し、First OTP フィールドに入力します。
- ワンタイムパスワードをもう一度生成し、Second OTP フィールドに入力します。
オプション: トークン ID を入力します。
- Sync OTP Token をクリックします。
同期が成功すると、IdM サーバーにログインできます。
7.7. 期限切れパスワードの変更
アイデンティティー Management の管理者は、次回のログイン時にパスワードの変更を強制できます。この場合、パスワードを変更するまで IdM Web UI に正常にログインすることはできません。
パスワードの有効期限は、Web UI に初めてログインしたときに発生する可能性があります。
有効期限のパスワードのダイアログが表示されたら、手順の指示に従ってください。
前提条件
- IdM サーバー上のアクティブなアカウント。
手順
- パスワード有効期限のログイン画面に、ユーザー名を入力します。
- 上記で入力したユーザーのパスワードを追加します。
- ワンタイムパスワード認証を使用する場合は、OTP フィールドでワンタイムパスワードを生成します。
- 確認のために新しいパスワードを 2 回入力します。
Reset Password をクリックします。
パスワードの変更が成功すると、通常のログインダイアログが表示されます。新しいパスワードでログインします。
7.8. OTP または RADIUS ユーザーとして IdM チケット許可チケットを取得する
OTP ユーザーとして Kerberos TGT (Ticket-granting ticket) を取得するには、匿名の Kerberos チケットを要求し、Secure Tunneling (FAST) チャネルを介したフレキシブル認証を有効にして、Kerberos クライアントと Kerberos ディストリビューションセンター (KDC) 間のセキュアな接続を提供します。
前提条件
- IdM クライアントと IdM サーバーが RHEL 8.7 以降を使用している。
- IdM クライアントと IdM サーバーが SSSD 2.7.0 以降を使用している。
- 必要なユーザーアカウントに対して OTP が有効になっている。
手順
次のコマンドを実行して認証情報キャッシュを初期化します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit -n @IDM.EXAMPLE.COM -c FILE:armor.ccache
[root@client ~]# kinit -n @IDM.EXAMPLE.COM -c FILE:armor.ccache
このコマンドは、新しい Kerberos チケットを要求するたびに指定する必要がある
armor.ccache
ファイルを作成することに注意してください。次のコマンドを実行して Kerberos チケットを要求します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit -T FILE:armor.ccache <username>@IDM.EXAMPLE.COM
[root@client ~]# kinit -T FILE:armor.ccache <username>@IDM.EXAMPLE.COM Enter your OTP Token Value.
検証
Kerberos チケット情報を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist -C
[root@client ~]# klist -C Ticket cache: KCM:0:58420 Default principal: <username>@IDM.EXAMPLE.COM Valid starting Expires Service principal 05/09/22 07:48:23 05/10/22 07:03:07 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM config: fast_avail(krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM) = yes 08/17/2022 20:22:45 08/18/2022 20:22:43 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM config: pa_type(krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM) = 141
pa_type = 141
は OTP/RADIUS 認証を示します。
7.9. すべての LDAP クライアントに OTP の使用を強制する
RHEL IdM では、2 要素 (OTP) 認証が設定されたユーザーアカウントの LDAP サーバー認証のデフォルトの動作を設定できます。OTP が強制されている場合、LDAP クライアントは、関連付けられた OTP トークンを持つユーザーに対して、単一要素認証 (パスワード) を使用して LDAP サーバーに対して認証することはできません。RHEL IdM は、データなしの OID 2.16.840.1.113730.3.8.10.7 を使用した特別な LDAP 制御を使用して、Kerberos バックエンドを通じてこの方法をすでに実施しています。
手順
すべての LDAP クライアントに OTP の使用を強制するには、次のコマンドを使用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa config-mod --addattr ipaconfigstring=EnforceLDAPOTP
$ ipa config-mod --addattr ipaconfigstring=EnforceLDAPOTP
すべての LDAP クライアントに対して以前の OTP 動作に戻すには、次のコマンドを使用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa config-mod --delattr ipaconfigstring=EnforceLDAPOTP
$ ipa config-mod --delattr ipaconfigstring=EnforceLDAPOTP
第8章 IdM で SSSD を使用した認証のトラブルシューティング
Identity Management (IdM) 環境の認証には、さまざまなコンポーネントが含まれます。
IdM クライアントで、以下を行います。
- SSSD サービス
- Name Services Switch (NSS)
- PAM (プラグ可能な認証モジュール)
IdM サーバーで、以下を行います。
- SSSD サービス
- IdM Directory Server。
- IdM Kerberos Key Distribution Center (KDC)
Active Directory (AD) ユーザーとして認証している場合は、以下を行います。
- AD ドメインコントローラー上の Directory Server。
- AD ドメインコントローラー上の Kerberos サーバー
ユーザーを認証するには、SSSD サービスで以下の機能を実行できる必要があります。
- 認証サーバーからユーザー情報を取得します。
- ユーザーに認証情報を求められ、それらの認証情報を認証サーバーに渡し、結果を処理します。
トラブルシューティングを実行するには、SSSD サービスとユーザー情報を保存するサーバー間で情報がどのように流れるかを把握する必要があります。これにより、問題が発生している場所を特定し、潜在的な原因を絞り込むことができます。
8.1. SSSD で IdM ユーザー情報を取得するデータフロー
以下の図は、getent passwd <idm_user_name>
コマンドを使用して IdM ユーザー情報の要求時に IdM クライアントと IdM サーバーとの間の情報フローを簡単に説明します。
getent passwd
を使用してユーザー情報を取得する場合の IdM クライアントとサーバー間の情報フロー
-
getent
コマンドは、libc
ライブラリーからgetpwnam
呼び出しをトリガーします。 -
libc
ライブラリーは、/etc/nsswitch.conf
設定ファイルを参照して、どのサービスがユーザー情報を提供するかを確認し、SSSD サービスのエントリーsss
を検出します。 -
libc
ライブラリーは、nss_sss
モジュールを開きます。 -
nss_sss モジュールは、ユーザー情報のメモリーマップキャッシュを確認します。データがキャッシュに存在する場合は、
nss_sss
モジュールがそれを返します。 -
ユーザー情報が memory-mapped キャッシュにない場合、リクエストは SSSD
sssd_nss
レスポンダープロセスに渡されます。 -
SSSD サービスはキャッシュをチェックします。データがキャッシュに存在し、有効な場合は、
sssd_nss
レスポンダーがキャッシュからデータを読み取って、アプリケーションに返します。 -
データがキャッシュにない場合や期限切れである場合、
sssd_nss
レスポンダーは適切なバックエンドプロセスに対してクエリーを実行し、応答を待機します。SSSD サービスは、sssd.conf
設定ファイルでid_provider=ipa
を設定して有効にした、IdM 環境の IPA バックエンドを使用します。 -
sssd_be
バックエンドプロセスは IdM サーバーに接続して、IdM LDAP Directory Server から情報を要求します。 - IdM サーバーの SSSD バックエンドは、IdM クライアントの SSSD バックエンドプロセスに対応します。
- クライアントの SSSD バックエンドは、生成されるデータを SSSD キャッシュに保存し、キャッシュが更新されたレスポンダープロセスを警告します。
-
sssd_nss
フロントエンドレスプロセスが SSSD キャッシュから情報を取得します。 -
sssd_nss
レスポンダーは、nss_sss
レスポンダーにユーザー情報を送信し、リクエストを完了します。 -
libc
ライブラリーは、要求したアプリケーションにユーザー情報を返します。
8.2. SSSD で AD ユーザー情報を取得する際のデータフロー
IdM 環境と Active Directory( AD) ドメインとの間でフォレスト間の信頼を確立した場合は、IdM クライアントの AD ユーザー情報を取得する際に情報フローが、AD ユーザーデータベースへの追加の手順とともに、IdM クライアントの AD ユーザー情報の取得時に非常に似ています。
次の図は、ユーザーが getent passwd <user_name@ad.example.com>
コマンドを使用して AD ユーザーに関する情報を要求した場合の情報フローを簡略化したものです。この図には、SSSD で IdM ユーザー情報を取得するデータフロー が含まれません。IdM クライアントの SSSD サービス、IdM サーバーの SSSD サービス、および AD ドメインコントローラー上の LDAP データベースとの間の通信にフォーカスします。
IdM クライアント、IdM サーバー、および AD ドメインコントローラー間の AD ユーザー情報を取得する場合の情報フロー
- IdM クライアントは、AD ユーザー情報に関するローカルの SSSD キャッシュを検索します。
-
IdM クライアントにユーザー情報がない場合や、情報が古い場合に、クライアントの SSSD サービスが IdM サーバーの
extdom_extop
プラグインに問い合わせて、LDAP 拡張操作を実行し、情報を要求します。 - IdM サーバーの SSSD サービスは、ローカルキャッシュで AD ユーザー情報を検索します。
- IdM サーバーに SSSD キャッシュにユーザー情報がない場合や、その情報が古い場合は、LDAP 検索を実行して、AD ドメインコントローラーからユーザー情報を要求します。
- IdM サーバーの SSSD サービスは、AD ドメインコントローラーから AD ユーザー情報を受け取り、キャッシュに保存します。
-
extdom_extop
プラグインは、LDAP 拡張操作を完了する IdM サーバーの SSSD サービスから情報を受信します。 - IdM クライアントの SSSD サービスは、LDAP 拡張操作から AD ユーザー情報を受信します。
- IdM クライアントは、AD ユーザー情報を SSSD キャッシュに保存し、要求したアプリケーションに情報を返します。
8.3. IdM で SSSD を使用してユーザーとして認証する場合にデータフロー
IdM サーバーまたはクライアントでユーザーとして認証するには、以下のコンポーネントが必要です。
-
sshd
サービスなど、認証要求を開始するサービス。 - PAM (プラグ可能な認証モジュール) ライブラリーとそのモジュール。
- SSSD サービス、そのレスポンダー、およびバックエンド。
- スマートカード認証が設定されている場合は、スマートカードリーダー。
認証サーバー:
- IdM ユーザーは、IdM Kerberos Key Distribution Center (KDC) に対して認証されます。
- Active Directory (AD) ユーザーは、AD ドメインコントローラー (DC) に対して認証されます。
以下の図は、コマンドラインの SSH サービスを介してホストにローカルでログインしようとすると、情報フローを簡単に認証する必要がある場合を示しています。
認証試行中の IdM クライアントと IdM サーバーまたは AD ドメインコントローラー間の情報の流れ
-
ssh
コマンドで認証を試みると、libpam
ライブラリーがトリガーされます。 libpam
ライブラリーは、認証の試行を要求するサービスに対応する/etc/pam.d/
ディレクトリーの PAM ファイルを参照します。この例では、ローカルホストの SSH サービス経由で認証されている例では、pam_sss.so
ライブラリーは/etc/pam.d/system-auth
設定ファイルを確認し、SSSD PAM のpam_sss.so
エントリーを検出します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow auth sufficient pam_sss.so
auth sufficient pam_sss.so
-
利用可能な認証方法を判断するため、
libpam
ライブラリーはpam_sss
モジュールを開き、SSSD サービスのsssd _pam
PAM レスポンダーにSSS_PAM_PREAUTH
リクエストを送信します。 -
スマートカード認証が設定されていると、SSSD サービスは一時的な
p11_child
プロセスを生成し、スマートカードを確認し、そこから証明書を取得します。 -
ユーザーにスマートカード認証が設定されていると、
sssd_pam
レスポンダーは、スマートカードの証明書とユーザーを照合します。sssd_pam
レスポンダーは、グループメンバーシップがアクセス制御に影響する可能性があるため、ユーザーが属するグループの検索も実行します。 -
sssd_pam
レスポンダーは、SSS_PAM_PREAUTH
要求をsssd_be
バックエンドレスに送信し、パスワードや 2 要素認証などのサーバーがサポートする認証方法を表示します。SSSD サービスが IPA レスポンダーを使用する IdM 環境では、デフォルトの認証方法は Kerberos です。この例では、ユーザーは簡単な Kerberos パスワードで認証されます。 -
sssd_be
レスポンダーは一時的なkrb5_child
プロセスを起動します。 -
krb5_child
プロセスは、IdM サーバーの KDC に連絡して、利用可能な認証方法を確認します。 KDC はリクエストに応答します。
-
krb5_child
プロセスは応答を評価し、結果をsssd_be
バックエンドプロセスに送信します。 -
sssd_be
バックエンドプロセスが結果を受け取ります。 -
sssd_pam
レスポンダーは結果を受け取ります。 -
pam_sss
モジュールは結果を受け取ります。
-
-
ユーザーにパスワード認証が設定されていると、
pam_sss
モジュールにより、パスワードの入力が求められます。スマートカード認証が設定されていると、pam_sss
モジュールにより、スマートカードの PIN の入力が求められます。 モジュールは、ユーザー名とパスワードを使用して
SSS_PAM_
AUTHENTICATE 要求を送信します。これは以下が実行されます。-
sssd_pam
レスポンダー。 -
sssd_be
バックエンドプロセス。
-
-
sssd_be
プロセスは、KDC に問い合わせる一時的なkrb5_child
プロセスを起動します。 -
krb5_child
process は、ユーザー名とパスワードを使用して KDC から Kerberos チケット保証チケット (TGT) の取得を試みます。 -
krb5_child
プロセスは、認証の試行の結果を受け取ります。 krb5_child
プロセス:- TGT を認証情報キャッシュに保存します。
-
sssd_be
バックエンドプロセスに認証結果を返します。
認証結果は
sssd_be
プロセスから以下を行います。-
sssd_pam
レスポンダー。 -
pam_sss
モジュール。
-
-
pam_sss
モジュールは、その他のアプリケーションが参照できるように、環境変数をユーザーの TGT の場所で設定します。
8.4. 認証問題の範囲の制限
ユーザーを正常に認証するには、ユーザー情報を保存するデータベースから SSSD サービスでユーザー情報を取得できる必要があります。以下の手順では、認証プロセスの異なるコンポーネントをテストする手順を説明します。これにより、ユーザーがログインできない場合に認証の問題のスコープを制限する方法を説明します。
手順
SSSD サービスおよびそのプロセスが実行していることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pstree -a | grep sssd
[root@client ~]# pstree -a | grep sssd |-sssd -i --logger=files | |-sssd_be --domain implicit_files --uid 0 --gid 0 --logger=files | |-sssd_be --domain <domain_name> --uid 0 --gid 0 --logger=files | |-sssd_ifp --uid 0 --gid 0 --logger=files | |-sssd_nss --uid 0 --gid 0 --logger=files | |-sssd_pac --uid 0 --gid 0 --logger=files | |-sssd_pam --uid 0 --gid 0 --logger=files | |-sssd_ssh --uid 0 --gid 0 --logger=files | `-sssd_sudo --uid 0 --gid 0 --logger=files |-sssd_kcm --uid 0 --gid 0 --logger=files
クライアントが IP アドレスを使用してユーザーデータベースサーバーに接続できることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ping <IP_address_of_the_database_server>
[user@client ~]$ ping <IP_address_of_the_database_server>
この手順が失敗した場合は、ネットワークとファイアウォール設定が、IdM クライアントとサーバー間の直接通信が許可されていることを確認してください。firewalld の使用および設定 を参照してください。
クライアントが、完全修飾ホスト名を使用して IdM LDAP サーバー (IdM ユーザー用) または AD ドメインコントローラー (AD ユーザーの場合) を検出して連絡できることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dig -t SRV ldap._tcp.<domain>@<server_name> ping <fully_qualified_host_name_of_the_server>
[user@client ~]$ dig -t SRV ldap._tcp.<domain>@<server_name> [user@client ~]$ ping <fully_qualified_host_name_of_the_server>
この手順が失敗した場合は、
/etc/resolv.conf
ファイルを含む Dynamic Name Service (DNS) の設定を確認してください。DNS サーバーの順序の設定 を参照してください。注記デフォルトでは、SSSD サービスは DNS サービス (SRV) レコードを介して LDAP サーバーと AD DC を自動的に検出しようとします。SSSD を特定のサーバーに制限するには、
sssd.conf
設定ファイルで次のオプションを使用してサーバーを定義します。-
ipa_server = <fully_qualified_host_name_of_the_server>
-
ad_server = <fully_qualified_host_name_of_the_server>
-
ldap_uri = <fully_qualified_host_name_of_the_server>
このオプションを使用する場合は、そのオプションに記載されているサーバーと通信できることを確認します。
-
クライアントが LDAP サーバーに対して認証でき、
ldapsearch
コマンドでユーザー情報を取得できることを確認します。LDAP サーバーが
server.example.com
などの IdM サーバーである場合は、ホストの Kerberos チケットを取得し、ホスト Kerberos プリンシパルで認証されるデータベース検索を実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit -k 'host/client.example.com@EXAMPLE.COM' ldapsearch -LLL -Y GSSAPI -h server.example.com -b “dc=example,dc=com” uid=<idm_user>
[user@client ~]$ kinit -k 'host/client.example.com@EXAMPLE.COM' [user@client ~]$ ldapsearch -LLL -Y GSSAPI -h server.example.com -b “dc=example,dc=com” uid=<idm_user>
LDAP サーバーが
server.example.com
などの Active Directory (AD) Domain Controller (DC) サーバーである場合は、ホストの Kerberos チケットを取得し、ホスト Kerberos プリンシパルで認証されるデータベース検索を実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit -k 'CLIENT$@AD.EXAMPLE.COM' ldapsearch -LLL -Y GSSAPI -h server.ad.example.com -b “dc=example,dc=com” sAMAccountname=<idm_user>
[user@client ~]$ kinit -k 'CLIENT$@AD.EXAMPLE.COM' [user@client ~]$ ldapsearch -LLL -Y GSSAPI -h server.ad.example.com -b “dc=example,dc=com” sAMAccountname=<idm_user>
LDAP サーバーがプレーン LDAP サーバーであり、
sssd.conf
ファイルにldap_default_bind_dn
およびldap_default_authtok
オプションを設定した場合は、同じldap_default_bind_dn
アカウントとして認証されます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ldapsearch -xLLL -D "cn=ldap_default_bind_dn_value" -W -h ldapserver.example.com -b “dc=example,dc=com” uid=<idm_user>
[user@client ~]$ ldapsearch -xLLL -D "cn=ldap_default_bind_dn_value" -W -h ldapserver.example.com -b “dc=example,dc=com” uid=<idm_user>
この手順が失敗した場合は、データベース設定で、ホストが LDAP サーバーを検索できることを確認します。
SSSD サービスは Kerberos 暗号化を使用するため、ログインできないユーザーとして Kerberos チケットを取得できます。
LDAP サーバーが IdM サーバーの場合:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit <idm_user>
[user@client ~]$ kinit <idm_user>
LDAP サーバーデータベースが AD サーバーの場合:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit <ad_user@AD.EXAMPLE.COM>
[user@client ~]$ kinit <ad_user@AD.EXAMPLE.COM>
この手順が失敗した場合は、Kerberos サーバーが適切に動作し、すべてのサーバーが同期され、ユーザーアカウントがロックされていないことを確認します。
コマンドラインに関するユーザー情報を取得できることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow getent passwd <idm_user> id <idm_user>
[user@client ~]$ getent passwd <idm_user> [user@client ~]$ id <idm_user>
この手順が失敗した場合は、クライアントの SSSD サービスがユーザーデータベースから情報を受信できることを確認します。
-
/var/log/messages
ログファイルのエラーを確認します。 - SSSD サービスで詳細なロギングを有効にし、デバッグログを収集して、問題のソースに関するログを確認します。
- (オプション) Red Hat テクニカルサポートケースを作成し、収集したトラブルシューティング情報を提供します。
-
ホスト上で
sudo
権限を持っている場合は、sssctl
ユーティリティーを使用して、ユーザーがログインできるかどうかを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo sssctl user-checks -a auth -s ssh <idm_user>
[user@client ~]$ sudo sssctl user-checks -a auth -s ssh <idm_user>
この手順が失敗した場合は、PAM 設定、IdM HBAC ルール、IdM RBAC ルールなどの認可設定を確認します。
-
ユーザーの UID が、
/etc/login.defs
ファイルで定義されているUID_MIN
以上であることを確認してください。 -
/var/log/secure
ログファイルおよび/var/log/messages
ログファイルで認証エラーを確認します。 - SSSD サービスで詳細なロギングを有効にし、デバッグログを収集して、問題のソースに関するログを確認します。
- (オプション) Red Hat テクニカルサポートケースを作成し、収集したトラブルシューティング情報を提供します。
-
ユーザーの UID が、
8.5. SSSD ログファイルおよびログレベル
それぞれの SSSD サービスは、/var/log/sssd/
ディレクトリーに独自のログファイルを記録します。example.com
IdM ドメインの IdM サーバーのログファイルは、以下のようになります。
ls -l /var/log/sssd/
[root@server ~]# ls -l /var/log/sssd/
total 620
-rw-------. 1 root root 0 Mar 29 09:21 krb5_child.log
-rw-------. 1 root root 14324 Mar 29 09:50 ldap_child.log
-rw-------. 1 root root 212870 Mar 29 09:50 sssd_example.com.log
-rw-------. 1 root root 0 Mar 29 09:21 sssd_ifp.log
-rw-------. 1 root root 0 Mar 29 09:21 sssd_implicit_files.log
-rw-------. 1 root root 0 Mar 29 09:21 sssd.log
-rw-------. 1 root root 219873 Mar 29 10:03 sssd_nss.log
-rw-------. 1 root root 0 Mar 29 09:21 sssd_pac.log
-rw-------. 1 root root 13105 Mar 29 09:21 sssd_pam.log
-rw-------. 1 root root 9390 Mar 29 09:21 sssd_ssh.log
-rw-------. 1 root root 0 Mar 29 09:21 sssd_sudo.log
SSSD ログファイルの目的
krb5_child.log
- Kerberos 認証に関連する有効期限の短いヘルパープロセスのログファイル。
ldap_child.log
- LDAP サーバーとの通信用の Kerberos チケットの取得に関連する短期ヘルパープロセスのログファイル。
sssd_<domain_name>.log
sssd.conf
ファイルのドメインセクションごとに、SSSD サービスは LDAP サーバーとの通信に関する情報を別のログファイルに記録します。たとえば、example.com
という名前の IdM ドメインがある環境では、SSSD サービスはsssd_example.com.log
という名前のファイルのログにその情報を記録します。ホストがad.example.com
という名前の AD ドメインと直接統合されている場合は、sssd_ad.example.com.log
という名前のファイルのログに情報が記録されます。注記IdM 環境と、AD ドメインを持つフォレスト間の信頼があると、AD ドメインに関する情報は引き続き IdM ドメインのログファイルに記録されます。
同様に、ホストが AD ドメインに直接統合されている場合は、プライマリードメインのログファイルに、子ドメインに関する情報が書き込まれます。
selinux_child.log
- SELinux 情報を取得および設定する短期間ヘルパープロセスのログファイル。
sssd.log
- SSSD を監視して、レスポンダーおよびバックエンドプロセスと通信するためのログファイル。
sssd_ifp.log
- InfoPipe レスポンダーのログファイル。システムバスからアクセス可能なパブリック D-Bus インターフェイスを提供します。
sssd_nss.log
- ユーザーおよびグループ情報を取得する Name Services Switch (NSS) レスポンダーのログファイル。
sssd_pac.log
- AD Kerberos チケットから PAC を収集する Microsoft Privilege Attribute Certificate (PAC) レスポンダー用のログファイルは、PAC から PAC に関する情報を取得します。これにより、AD ユーザーを直接要求しないようにします。
sssd_pam.log
- PAM (Pluggable Authentication Module) レスポンダー用のログファイルです。
sssd_ssh.log
- SSH レスポンダープロセスのログファイル。
SSSD ロギングレベル
デバッグレベルを設定すると、それ下のすべてのデバッグレベルが有効になります。たとえば、debug レベルを 6 に設定すると、デバッグレベル 0 から 5 も有効になります。
レベル | 説明 |
---|---|
0 | 致命的な障害が発生しました。SSSD サービスが起動しなかったり、終了しないようにするエラー。これは、RHEL 8.3 以前のデフォルトのデバッグログレベルです。 |
1 | 重大なエラーSSSD サービスを終了しないものの、主要な機能は 1 つ以上正しく機能しません。 |
2 | 深刻なエラー。特定の要求または操作が失敗したことを示すエラー。これは、RHEL 8.4 以降のデフォルトのデバッグログレベルです。 |
3 | マイナーな障害が発生しました。レベル 2 で操作の失敗がキャプチャーされたエラー。 |
4 | 設定。 |
5 | 関数 データ。 |
6 | 操作関数のメッセージを追跡します。 |
7 | 内部制御 関数のメッセージトレース。 |
8 | 関数内部 変数の内容。 |
9 | 非常に 低いレベルのトレース 情報。 |
8.6. sssd.conf ファイルで SSSD の詳細なロギングの有効化
デフォルトでは、RHEL 8.4 以降の SSSD サービスは、重大な失敗 (デバッグレベル 2) のみをログに記録しますが、認証問題のトラブルシューティングに必要な詳細レベルではログに記録されません。
SSSD サービスの再起動時に詳細なロギングを有効にするには、/etc/sssd/sssd.conf
設定ファイルの各セクションに debug_level=<integer>
オプションを追加します。ここで、<integer>
の値は 0 から 9 の数字になります。デバッグレベルは最大 3 つのログで、最大 3 つのログで、レベル 8 以上では、多くの詳細なログメッセージを提供します。レベル 6 は、認証の問題のデバッグに役立ちます。
前提条件
-
sssd.conf
設定ファイルを編集し、SSSD サービスを再起動するには、root パスワードが必要です。
手順
-
テキストエディターで
/etc/sssd/sssd.conf
ファイルを開きます。 debug_level
オプションをファイルのすべてのセクションに追加し、デバッグレベルを、選択した詳細に設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow [domain/<domain_name>] debug_level = 6 id_provider = ipa ... [sssd] debug_level = 6 services = nss, pam, ifp, ssh, sudo domains = <domain_name> [nss] debug_level = 6 [pam] debug_level = 6 [sudo] debug_level = 6 [ssh] debug_level = 6 [pac] debug_level = 6 [ifp] debug_level = 6
[domain/<domain_name>] debug_level = 6 id_provider = ipa ... [sssd] debug_level = 6 services = nss, pam, ifp, ssh, sudo domains = <domain_name> [nss] debug_level = 6 [pam] debug_level = 6 [sudo] debug_level = 6 [ssh] debug_level = 6 [pac] debug_level = 6 [ifp] debug_level = 6
-
sssd.conf
ファイルを保存して閉じます。 SSSD サービスを再起動して、新しい設定を読み込みます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart sssd
[root@server ~]# systemctl restart sssd
関連情報
8.7. sssctl コマンドを使用した SSSD の詳細なロギングの有効化
デフォルトでは、RHEL 8.4 以降の SSSD サービスは、重大な失敗 (デバッグレベル 2) のみをログに記録しますが、認証問題のトラブルシューティングに必要な詳細レベルではログに記録されません。
sssctl debug-level <integer>
コマンドを使用して、コマンドラインで SSSD サービスのデバッグレベルを変更できます。ここで、<integer>
の値は 0 から 9 の数字になります。デバッグレベルは最大 3 つのログで、最大 3 つのログで、レベル 8 以上では、多くの詳細なログメッセージを提供します。レベル 6 は、認証の問題のデバッグに役立ちます。
前提条件
-
sssctl
コマンドを実行するには、root パスワードが必要です。
手順
sssctl debug-level
コマンドを使用して、デバッグレベルを目的の詳細度に設定します。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl debug-level 6
[root@server ~]# sssctl debug-level 6
関連情報
8.8. SSSD サービスからデバッグログを収集し、IdM サーバーによる認証問題のトラブルシューティング
IdM ユーザーが IdM サーバーへの認証を試行する際に問題が発生した場合は、サーバー上の SSSD サービスで詳細なデバッグロギングを有効にし、ユーザーに関する情報の取得を試行するログを収集します。
前提条件
-
root
権限がある。
手順
IdM サーバーで詳細な SSSD デバッグロギングを有効にします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl debug-level 6
[root@server ~]# sssctl debug-level 6
認証問題が発生しているユーザーの SSSD キャッシュでオブジェクトを無効にするため、LDAP サーバーを省略し、SSSD がすでにキャッシュされている情報を取得しません。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl cache-expire -u <idm_user>
[root@server ~]# sssctl cache-expire -u <idm_user>
古い SSSD ログを削除して、トラブルシューティングのデータセットを最小限に抑える。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl logs-remove
[root@server ~]# sssctl logs-remove
認証問題が発生し、試行前後にタイムスタンプを収集する際に、ユーザーが認証問題が発生しようと試みます。これらのタイムスタンプは、データセットのスコープをさらに絞り込むことができます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow date; su <idm_user>; date
[root@server sssd]# date; su <idm_user>; date Mon Mar 29 15:33:48 EDT 2021 su: user idm_user does not exist Mon Mar 29 15:33:49 EDT 2021
(オプション) 詳細な SSSD ログの収集を続行しない場合は、デバッグレベルを下げます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl debug-level 2
[root@server ~]# sssctl debug-level 2
障害のある要求に関する情報を SSSD ログで確認します。たとえば、
/var/log/sssd/sssd_example.com.log
ファイルを確認すると、SSSD サービスがcn=accounts,dc=example,dc=com
LDAP サブツリーでユーザーを見つけられなかったことを示しています。これは、ユーザーが存在しないか、別の場所に存在することを示しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [dp_get_account_info_send] (0x0200): Got request for [0x1][BE_REQ_USER][name=idm_user@example.com] ... (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sdap_get_generic_ext_step] (0x0400): calling ldap_search_ext with [(&(uid=idm_user)(objectclass=posixAccount)(uid=)(&(uidNumber=)(!(uidNumber=0))))][cn=accounts,dc=example,dc=com]. (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sdap_get_generic_op_finished] (0x0400): Search result: Success(0), no errmsg set (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sdap_search_user_process] (0x0400): Search for users, returned 0 results. (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sysdb_search_by_name] (0x0400): No such entry (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sysdb_delete_user] (0x0400): Error: 2 (No such file or directory) (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sysdb_search_by_name] (0x0400): No such entry (Mon Mar 29 15:33:49 2021) [sssd[be[example.com]]] [ipa_id_get_account_info_orig_done] (0x0080): Object not found, ending request
(Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [dp_get_account_info_send] (0x0200): Got request for [0x1][BE_REQ_USER][name=idm_user@example.com] ... (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sdap_get_generic_ext_step] (0x0400): calling ldap_search_ext with [(&(uid=idm_user)(objectclass=posixAccount)(uid=)(&(uidNumber=)(!(uidNumber=0))))][cn=accounts,dc=example,dc=com]. (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sdap_get_generic_op_finished] (0x0400): Search result: Success(0), no errmsg set (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sdap_search_user_process] (0x0400): Search for users, returned 0 results. (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sysdb_search_by_name] (0x0400): No such entry (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sysdb_delete_user] (0x0400): Error: 2 (No such file or directory) (Mon Mar 29 15:33:48 2021) [sssd[be[example.com]]] [sysdb_search_by_name] (0x0400): No such entry (Mon Mar 29 15:33:49 2021) [sssd[be[example.com]]] [ipa_id_get_account_info_orig_done] (0x0080): Object not found, ending request
認証問題の原因を判断できない場合は、以下を行います。
最近生成した SSSD ログを収集します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl logs-fetch sssd-logs-Mar29.tar
[root@server ~]# sssctl logs-fetch sssd-logs-Mar29.tar
Red Hat テクニカルサポートケースを作成し、以下を提供します。
-
SSSD ログ:
sssd-logs-Mar29.tar
ログに対応する要求のタイムスタンプおよびユーザー名を含むコンソールの出力。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow date; id <idm_user>; date
[root@server sssd]# date; id <idm_user>; date Mon Mar 29 15:33:48 EDT 2021 id: 'idm_user': no such user Mon Mar 29 15:33:49 EDT 2021
-
SSSD ログ:
8.9. SSSD サービスからデバッグログを収集し、IdM クライアントによる認証問題のトラブルシューティング
IdM クライアントに IdM ユーザーとして認証を試行する際に問題が発生した場合は、IdM サーバーでユーザー情報を取得できることを確認します。IdM サーバーでユーザー情報を取得できない場合は、(IdM サーバーから情報を取得する) IdM クライアントでそれを取得できなくなります。
認証の問題が IdM サーバーから生成されていないことを確認したら、IdM サーバーと IdM クライアントの両方から SSSD デバッグログを収集していました。
前提条件
- IdM サーバーではなく、IdM クライアントで認証の問題のみがあります。
-
sssctl
コマンドを実行して SSSD サービスを再起動するには、root パスワードが必要です。
手順
-
クライアントで、テキストエディターで
/etc/sssd/sssd.conf
ファイルを開きます。 クライアントで、ファイルの
[domain]
セクションにipa_server
オプションを追加し、このオプションを完全修飾ドメイン名 (FQDN) を使用して IdM サーバーに設定します。これにより、IdM クライアントは他の IdM サーバーの自動検出を避け、このテストを 1 つのクライアントおよびサーバー 1 台だけに制限します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow [domain/<idm_domain_name>] ipa_server = <idm_server_fqdn> ...
[domain/<idm_domain_name>] ipa_server = <idm_server_fqdn> ...
-
クライアントで
sssd.conf
ファイルを保存して閉じます。 クライアントで SSSD サービスを再起動して、設定の変更を読み込みます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart sssd
[root@client ~]# systemctl restart sssd
サーバーおよびクライアントで、詳細な SSSD デバッグロギングを有効にします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl debug-level 6
[root@server ~]# sssctl debug-level 6
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl debug-level 6
[root@client ~]# sssctl debug-level 6
サーバーおよびクライアントで、認証問題が発生しているユーザーの SSSD キャッシュの検証オブジェクトでは、LDAP データベースを迂回せず、SSSD がすでにキャッシュされています。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl cache-expire -u <idm_user>
[root@server ~]# sssctl cache-expire -u <idm_user>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl cache-expire -u <idm_user>
[root@client ~]# sssctl cache-expire -u <idm_user>
サーバーおよびクライアントで、古い SSSD ログを削除して、トラブルシューティングのデータセットを最小限に抑える。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl logs-remove
[root@server ~]# sssctl logs-remove
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl logs-remove
[root@server ~]# sssctl logs-remove
クライアントで、認証問題が発生し、試行前後にタイムスタンプを収集する際に、ユーザーが認証問題が発生しようと試みます。これらのタイムスタンプは、データセットのスコープをさらに絞り込むことができます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow date; su <idm_user>; date
[root@client sssd]# date; su <idm_user>; date Mon Mar 29 16:20:13 EDT 2021 su: user idm_user does not exist Mon Mar 29 16:20:14 EDT 2021
(オプション) サーバーおよびクライアント 詳細な SSSD ログの収集したくない場合はデバッグレベルを下げます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl debug-level 0
[root@server ~]# sssctl debug-level 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl debug-level 0
[root@client ~]# sssctl debug-level 0
サーバーおよびクライアントで、失敗した要求に関する情報を SSSD ログを確認します。
- クライアントログのクライアントからの要求を確認します。
- サーバーログのクライアントからの要求を確認します。
- サーバーログでリクエストの結果を確認します。
- サーバーからリクエストの結果を受信するクライアントの結果を確認します。
認証問題の原因を判断できない場合は、以下を行います。
IdM サーバーおよび IdM クライアントで最近生成した SSSD ログを収集します。ホスト名またはロールに応じてラベルを付けます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl logs-fetch sssd-logs-server-Mar29.tar
[root@server ~]# sssctl logs-fetch sssd-logs-server-Mar29.tar
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl logs-fetch sssd-logs-client-Mar29.tar
[root@client ~]# sssctl logs-fetch sssd-logs-client-Mar29.tar
Red Hat テクニカルサポートケースを作成し、以下を提供します。
SSSD デバッグログ:
-
サーバーから
sssd-logs-server-Mar29.tar
-
クライアントからの
sssd-logs-client-Mar29.tar
-
サーバーから
ログに対応する要求のタイムスタンプおよびユーザー名を含むコンソールの出力。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow date; su <idm_user>; date
[root@client sssd]# date; su <idm_user>; date Mon Mar 29 16:20:13 EDT 2021 su: user idm_user does not exist Mon Mar 29 16:20:14 EDT 2021
8.10. SSSD バックエンドでのクライアント要求の追跡
SSSD はリクエストを非同期的に処理し、別々の要求のメッセージを同じログファイルに追加します。バックエンドログでクライアント要求を追跡するには、一意の要求識別子 RID#<integer>
とクライアント ID [CID #<integer>] を使用できます。これらの識別子は、複数の SSSD コンポーネントからのログファイルにわたる個々の要求を最初から最後まで追跡するために、ログを分離するのに役立ちます。
前提条件
- デバッグロギングを有効にし、IdM クライアントから要求が送信されている。
-
root
権限がある。
手順
SSSD のログファイルを確認するために、
less
ユーティリティーを使用してログファイル/var/log/sssd/sssd_<domain_name>.log
を開きます。以下に例を示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow less /var/log/sssd/sssd_example.com.log
[root@server ~]# less /var/log/sssd/sssd_example.com.log
クライアント要求に関する情報は、SSSD ログを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow (2021-07-26 18:26:37): [be[testidm.com]] [dp_req_destructor] (0x0400): [RID#3] Number of active DP request: 0 (2021-07-26 18:26:37): [be[testidm.com]] [dp_req_reply_std] (0x1000): [RID#3] DP Request AccountDomain #3: Returning [Internal Error]: 3,1432158301,GetAccountDomain() not supported (2021-07-26 18:26:37): [be[testidm.com]] [dp_attach_req] (0x0400): [RID#4] DP Request Account #4: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001]. (2021-07-26 18:26:37): [be[testidm.com]] [dp_attach_req] (0x0400): [RID#4] Number of active DP request: 1
(2021-07-26 18:26:37): [be[testidm.com]] [dp_req_destructor] (0x0400): [RID#3] Number of active DP request: 0 (2021-07-26 18:26:37): [be[testidm.com]] [dp_req_reply_std] (0x1000): [RID#3] DP Request AccountDomain #3: Returning [Internal Error]: 3,1432158301,GetAccountDomain() not supported (2021-07-26 18:26:37): [be[testidm.com]] [dp_attach_req] (0x0400): [RID#4] DP Request Account #4: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001]. (2021-07-26 18:26:37): [be[testidm.com]] [dp_attach_req] (0x0400): [RID#4] Number of active DP request: 1
SSSD ログファイルからのこの出力例は、2 つの異なる要求について一意の識別子の
RID#3
およびRID#4
を示しています。
ただし、SSSD クライアントインターフェイスへの 1 つのクライアント要求が、バックエンドで複数の要求をトリガーすることが多いため、クライアント要求とバックエンドの要求との間に 1 対 1 の相関関係がなくなります。バックエンド内の複数のリクエストには異なる RID 番号がありますが、最初の各バックエンドリクエストには一意のクライアント ID が含まれているため、管理者は単一のクライアントリクエストに対して複数の RID 番号を追跡できます。
以下の例は、1 つのクライアントリクエスト [sssd.nss CID #1]
と、バックエンドで生成された複数のリクエスト ([RID#5]
から [RID#13]
) を示しています。
(2021-10-29 13:24:16): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#5] DP Request [Account #5]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001]. (2021-10-29 13:24:16): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#6] DP Request [AccountDomain #6]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001]. (2021-10-29 13:24:16): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#7] DP Request [Account #7]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001]. (2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#8] DP Request [Initgroups #8]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001]. (2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#9] DP Request [Account #9]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001]. (2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#10] DP Request [Account #10]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001]. (2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#11] DP Request [Account #11]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001]. (2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#12] DP Request [Account #12]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001]. (2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#13] DP Request [Account #13]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001].
(2021-10-29 13:24:16): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#5] DP Request [Account #5]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001].
(2021-10-29 13:24:16): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#6] DP Request [AccountDomain #6]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001].
(2021-10-29 13:24:16): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#7] DP Request [Account #7]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001].
(2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#8] DP Request [Initgroups #8]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001].
(2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#9] DP Request [Account #9]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001].
(2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#10] DP Request [Account #10]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001].
(2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#11] DP Request [Account #11]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001].
(2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#12] DP Request [Account #12]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001].
(2021-10-29 13:24:17): [be[ad.vm]] [dp_attach_req] (0x0400): [RID#13] DP Request [Account #13]: REQ_TRACE: New request. [sssd.nss CID #1] Flags [0x0001].
8.11. ログアナライザーツールを使用したクライアント要求の追跡
System Security Services Daemon (SSSD) には、複数の SSSD コンポーネントからのログファイルにわたり、要求を最初から最後まで追跡するに使用できるログ解析ツールが組み込まれています。
8.11.1. ログアナライザツールのしくみ
ログ解析ツールを使用すると、複数の SSSD コンポーネントからのログファイル全体で SSSD リクエストを最初から最後まで追跡できます。sssctl analyze
コマンドを使用してアナライザーツールを実行します。
ログアナライザツールは、SSSD の NSS および PAM の問題をトラブルシューティングし、SSSD デバッグログをより簡単に確認するのに役立ちます。SSSD プロセス全体の特定のクライアントリクエストにのみ関連する SSSD ログを抽出して出力できます。
SSSD は、ユーザー認証 (su
、ssh
) 情報とは別に、ユーザーおよびグループの ID 情報 (id
、getent
) を追跡します。NSS レスポンダのクライアント ID(CID) は PAM レスポンダーの CID とは独立しており、NSS と PAM のリクエストを解析すると重複した数値が表示されます。--pam
オプションを sssctl analyze
コマンドとともに使用して、PAM リクエストを確認します。
SSSD メモリーキャッシュから返されたリクエストはログに記録されず、ログアナライザツールで追跡できません。
関連情報
-
sudo sssctl analyze request --help
-
sudo sssctl analyze --help
-
システム上の
sssd.conf
およびsssctl
man ページ
8.11.2. ログアナライザツールの実行
ログ解析ツールを使用して、SSSD 内のクライアント要求を追跡および分析します。
前提条件
-
ログ解析機能を有効にするには、
/etc/sssd/sssd.conf
ファイルの[$responder]
セクションと[domain/$domain]
セクションでdebug_level
を 7 以上に設定する必要があります。 -
分析するログは、
libtevent
チェーン ID をサポートする互換性のあるバージョンの SSSD、つまり RHEL 8.5 以降の SSSD からのものである必要がある。
手順
ログ解析ツールを
list
モードで実行して、追跡対象の要求のクライアント ID を特定し、-v
オプションを追加して詳細な出力を表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl analyze request list -v
# sssctl analyze request list -v
SSSD に対して行われた最近のクライアントリクエストの詳細なリストが表示されます。
注記PAM リクエストを分析する場合は、
sssctl analyze request list
コマンドを-pam
オプション付きで実行します。show [unique client ID]
オプションを指定してログアナライザツールを実行し、指定したクライアント ID 番号に関連するログを表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl analyze request show 20
# sssctl analyze request show 20
必要に応じて、ログファイルに対してログアナライザツールを実行できます。次に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl analyze request --logdir=/tmp/var/log/sssd
# sssctl analyze request --logdir=/tmp/var/log/sssd
関連情報
-
sssctl analyze request list --help
-
sssctl analyze request show --help
-
システム上の
sssctl
man ページ
8.12. 関連情報
- 一般的な SSSD デバッグ手順 (Red Hat ナレッジベース)
第9章 Ansible Playbook を使用して IdM を管理する環境の準備
Identity Management (IdM) を管理するシステム管理者は、Red Hat Ansible Engine を使用する際に以下を行うことが推奨されます。
- ホームディレクトリーに Ansible Playbook 専用のサブディレクトリー (例: ~/MyPlaybooks) を作成します。
-
/usr/share/doc/ansible-freeipa/*
と/usr/share/doc/rhel-system-roles/*
ディレクトリーおよびサブディレクトリーから ~/MyPlaybooks ディレクトリーにサンプル Ansible Playbook をコピーして調整します。 - ~/MyPlaybooks ディレクトリーにインベントリーファイルを追加します。
このプラクティスを使用すると、すべての Playbook を 1 か所で見つけることができます。
マネージドノードで root
権限を呼び出さずに ansible-freeipa
Playbook を実行できます。例外には、ipaserver
、ipareplica
、ipaclient
、ipasmartcard_server
、ipasmartcard_client
、および ipabackup
ansible-freeipa
ロールを使用する Playbook が含まれます。これらのロールには、ディレクトリーおよび dnf
ソフトウェアパッケージマネージャーへの特権アクセスが必要です。
Red Hat Enterprise Linux IdM ドキュメントの Playbook は、次の セキュリティー設定 を前提としています。
-
IdM
admin
は、管理ノードのリモート Ansible ユーザーです。 -
Ansible vault に暗号化された IdM
admin
パスワードを保存します。 - Ansible vault を保護するパスワードをパスワードファイルに配置しました。
- ローカルの ansible ユーザーを除く全員に対して、vault パスワードファイルへのアクセスをブロックします。
- vault パスワードファイルを定期的に削除して再作成します。
別のセキュリティー設定 も検討してください。
9.1. Ansible Playbook を使用して IdM を管理するためのコントロールノードと管理ノードの準備
~/MyPlaybooks ディレクトリーを作成し、それを使用して Ansible Playbook を保存および実行できるように設定するには、次の手順に従います。
前提条件
- マネージドノードに IdM サーバー (server.idm.example.com および replica.idm.example.com) をインストールした。
- DNS およびネットワークを設定し、コントロールノードから直接マネージドノード (server.idm.example.com および replica.idm.example.com) にログインすることができる。
-
IdM
admin
のパスワードを把握している。
手順
~/MyPlaybooks/ ディレクトリーに移動します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks
$ cd ~/MyPlaybooks
~/MyPlaybooks/ansible.cfg ファイルを以下の内容で作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [defaults] inventory = /home/your_username/MyPlaybooks/inventory remote_user = admin
[defaults] inventory = /home/your_username/MyPlaybooks/inventory remote_user = admin
~/MyPlaybooks/inventory ファイルを以下の内容で作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [eu] server.idm.example.com [us] replica.idm.example.com [ipaserver:children] eu us
[eu] server.idm.example.com [us] replica.idm.example.com [ipaserver:children] eu us
この設定は、これらの場所にあるホストの 2 つのホストグループ (eu と us) を定義します。さらに、この設定は、eu および us グループのすべてのホストを含む ipaserver ホストグループを定義します。
オプション: SSH 公開鍵および秘密鍵を作成します。テスト環境でのアクセスを簡素化するには、秘密鍵にパスワードを設定しないでください。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh-keygen
$ ssh-keygen
各マネージドノードの IdM
admin
アカウントに SSH 公開鍵をコピーします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh-copy-id admin@server.idm.example.com ssh-copy-id admin@replica.idm.example.com
$ ssh-copy-id admin@server.idm.example.com $ ssh-copy-id admin@replica.idm.example.com
これらのコマンドでは、IdM
管理者
パスワードを入力します。Vault パスワードを含む password_file ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow redhat
redhat
ファイルを変更する権限を変更します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chmod 0600 password_file
$ chmod 0600 password_file
IdM の
admin
パスワードを保存する secret.yml Ansible Vault を作成します。Vault パスワードを保存するように password_file を設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault create --vault-password-file=password_file secret.yml
$ ansible-vault create --vault-password-file=password_file secret.yml
プロンプトが表示されたら、secret.yml ファイルの内容を入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipaadmin_password: Secret123
ipaadmin_password: Secret123
Playbook で暗号化された ipaadmin_password
を使用するには、vars_file
ディレクティブを使用する必要があります。たとえば、IdM ユーザーを削除する単純な Playbook は次のようになります。
--- - name: Playbook to handle users hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Delete user robot ipauser: ipaadmin_password: "{{ ipaadmin_password }}" name: robot state: absent
---
- name: Playbook to handle users
hosts: ipaserver
vars_files:
- /home/user_name/MyPlaybooks/secret.yml
tasks:
- name: Delete user robot
ipauser:
ipaadmin_password: "{{ ipaadmin_password }}"
name: robot
state: absent
Playbook を実行するときに、--vault-password-file=password_file
オプションを追加して、Ansible に Vault パスワードを使用して ipaadmin_password
を復号するように指示します。以下に例を示します。
ansible-playbook -i inventory --vault-password-file=password_file del-user.yml
ansible-playbook -i inventory --vault-password-file=password_file del-user.yml
セキュリティー上の理由から、各セッションの終了時に Vault パスワードファイルを削除し、新しいセッションの開始時に手順 6 - 8 を繰り返してください。
9.2.
- スクリプトで Ansible Playbook を使用している場合は、Ansible Vault を対話的に保護するパスワードを入力する必要がないのは便利です。
短所:
- 機密性の高いプレーンテキストパスワードを含むファイルは、ファイルのアクセス許可やその他のセキュリティー対策によって保護することが重要です。
パスワードを Ansible Vault に保存し、Vault のパスワードを対話的に入力する
利点:
- ユーザーパスワードは暗号化されて保存されます。
- Vault のパスワードはどこにも保存されていないため、誰も盗むことはできません。
- 新しい Ansible Vault を作成することで、ユーザーパスワードを簡単に更新できます。
-
ansible-vault rekey file_name
コマンドを使用して、Vault パスワードも簡単に更新できます。
短所:
- スクリプトで Ansible Playbook を使用している場合は、Vault のパスワードを対話的に入力する必要があると不便な場合があります。
第10章 Ansible Playbook でのグローバル IdM 設定
Ansible 設定
モジュールを使用すると、Identity Management (IdM) のグローバル設定パラメーターを取得および設定できます。
10.1. Ansible Playbook での IdM 設定の取得
以下の手順では、Ansible Playbook を使用して、現在のグローバル IdM 設定に関する情報を取得する方法を説明します。
前提条件
コントロールノードでは、
- Ansible バージョン 2.15 以降を使用している。
-
ansible-freeipa
パッケージをインストールしている。 - この例では、~/MyPlaybooks/ ディレクトリーに、IdM サーバーの完全修飾ドメイン名 (FQDN) を使用して Ansible インベントリーファイル を作成したことを前提としている。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to handle global IdM configuration hosts: ipaserver become: no gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Query IPA global configuration ipaconfig: ipaadmin_password: "{{ ipaadmin_password }}" register: serverconfig - debug: msg: "{{ serverconfig }}"
--- - name: Playbook to handle global IdM configuration hosts: ipaserver become: no gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Query IPA global configuration ipaconfig: ipaadmin_password: "{{ ipaadmin_password }}" register: serverconfig - debug: msg: "{{ serverconfig }}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/config/retrieve-config.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/config/retrieve-config.yml [...] TASK [debug] ok: [server.idm.example.com] => { "msg": { "ansible_facts": { "discovered_interpreter_ }, "changed": false, "config": { "ca_renewal_master_server": "server.idm.example.com", "configstring": [ "AllowNThash", "KDC:Disable Last Success" ], "defaultgroup": "ipausers", "defaultshell": "/bin/bash", "emaildomain": "idm.example.com", "enable_migration": false, "groupsearch": [ "cn", "description" ], "homedirectory": "/home", "maxhostname": "64", "maxusername": "64", "pac_type": [ "MS-PAC", "nfs:NONE" ], "pwdexpnotify": "4", "searchrecordslimit": "100", "searchtimelimit": "2", "selinuxusermapdefault": "unconfined_u:s0-s0:c0.c1023", "selinuxusermaporder": [ "guest_u:s0$xguest_u:s0$user_ ], "usersearch": [ "uid", "givenname", "sn", "telephonenumber", "ou", "title" ] }, "failed": false } }
10.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa config-show | grep 'CA renewal'
$ ipa config-show | grep 'CA renewal' IPA CA renewal master: server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to handle global DNS configuration hosts: ipaserver become: no gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: set ca_renewal_master_server ipaconfig: ipaadmin_password: "{{ ipaadmin_password }}" ca_renewal_master_server: carenewal.idm.example.com
--- - name: Playbook to handle global DNS configuration hosts: ipaserver become: no gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: set ca_renewal_master_server ipaconfig: ipaadmin_password: "{{ ipaadmin_password }}" ca_renewal_master_server: carenewal.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/config/set-ca-renewal-master-server.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/config/set-ca-renewal-master-server.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh admin@server.idm.example.com
$ ssh admin@server.idm.example.com Password: [admin@server /]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa config-show | grep ‘CA renewal’
$ ipa config-show | grep ‘CA renewal’ IPA CA renewal master: carenewal.idm.example.com
10.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to ensure some config options are set hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Set defaultlogin and maxusername - ipaconfig: ipaadmin_password: "{{ ipaadmin_password }}" defaultshell: /bin/bash maxusername: 64
--- - name: Playbook to ensure some config options are set hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Set defaultlogin and maxusername - ipaconfig: ipaadmin_password: "{{ ipaadmin_password }}" defaultshell: /bin/bash maxusername: 64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/config/ensure-config-options-are-set.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/config/ensure-config-options-are-set.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh admin@server.idm.example.com
$ ssh admin@server.idm.example.com Password: [admin@server /]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow echo "$SHELL"
[admin@server /]$ echo "$SHELL" /bin/sh
10.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to change IdM domain netbios name hosts: ipaserver become: no gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Set IdM domain netbios name ipaconfig: ipaadmin_password: "{{ ipaadmin_password }}" netbios_name: IPADOM
--- - name: Playbook to change IdM domain netbios name hosts: ipaserver become: no gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Set IdM domain netbios name ipaconfig: ipaadmin_password: "{{ ipaadmin_password }}" netbios_name: IPADOM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory netbios-domain-name-present.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory netbios-domain-name-present.yml
10.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to ensure SIDs are enabled and users and groups have SIDs hosts: ipaserver become: no gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Enable SID and generate users and groups SIDS ipaconfig: ipaadmin_password: "{{ ipaadmin_password }}" enable_sid: true add_sids: true
--- - name: Playbook to ensure SIDs are enabled and users and groups have SIDs hosts: ipaserver become: no gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Enable SID and generate users and groups SIDS ipaconfig: ipaadmin_password: "{{ ipaadmin_password }}" enable_sid: true add_sids: true
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory sids-for-users-and-groups-present.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory sids-for-users-and-groups-present.yml
10.6.
第11章
11.1.
11.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-add user_login --first=first_name --last=last_name --email=email_address
$ ipa user-add user_login --first=first_name --last=last_name --email=email_address
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?
[a-zA-Z0-9_.][a-zA-Z0-9_.-]{0,252}[a-zA-Z0-9_.$-]?
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa config-mod --maxusername=64
$ ipa config-mod --maxusername=64 Maximum username length: 64 ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa help user-add
$ ipa help user-add
ipa user-find
$ ipa user-find
11.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa stageuser-activate user_login
$ ipa stageuser-activate user_login ------------------------- Stage user user_login activated ------------------------- ...
ipa user-find
$ ipa user-find
11.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-del --preserve user_login
$ ipa user-del --preserve user_login -------------------- Deleted user "user_login" --------------------
注記
11.5.
ipa user-del --continue user1 user2 user3
$ ipa user-del --continue user1 user2 user3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-del user_login
$ ipa user-del user_login -------------------- Deleted user "user_login" --------------------
11.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-undel user_login
$ ipa user-undel user_login ------------------------------ Undeleted user account "user_login" ------------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-stage user_login
$ ipa user-stage user_login ------------------------------ Staged user account "user_login" ------------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-find
$ ipa user-find
第12章
12.1.
12.2.
12.3.
12.4.
12.5.
12.6.
12.7.
12.8.
第13章
13.1.
13.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to handle users hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Create user idm_user ipauser: ipaadmin_password: "{{ ipaadmin_password }}" name: idm_user first: Alice last: Acme uid: 1000111 gid: 10011 phone: "+555123457" email: idm_user@acme.com passwordexpiration: "2023-01-19 23:59:59" password: "Password123" update_password: on_create
--- - name: Playbook to handle users hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Create user idm_user ipauser: ipaadmin_password: "{{ ipaadmin_password }}" name: idm_user first: Alice last: Acme uid: 1000111 gid: 10011 phone: "+555123457" email: idm_user@acme.com passwordexpiration: "2023-01-19 23:59:59" password: "Password123" update_password: on_create
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-IdM-user.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-IdM-user.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh admin@server.idm.example.com
$ ssh admin@server.idm.example.com Password: [admin@server /]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
$ kinit admin Password for admin@IDM.EXAMPLE.COM:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-show idm_user
$ ipa user-show idm_user User login: idm_user First name: Alice Last name: Acme ....
13.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to handle users hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Create user idm_users ipauser: ipaadmin_password: "{{ ipaadmin_password }}" users: - name: idm_user_1 first: Alice last: Acme uid: 10001 gid: 10011 phone: "+555123457" email: idm_user@acme.com passwordexpiration: "2023-01-19 23:59:59" password: "Password123" - name: idm_user_2 first: Bob last: Acme uid: 100011 gid: 10011 - name: idm_user_3 first: Eve last: Acme uid: 1000111 gid: 10011
--- - name: Playbook to handle users hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Create user idm_users ipauser: ipaadmin_password: "{{ ipaadmin_password }}" users: - name: idm_user_1 first: Alice last: Acme uid: 10001 gid: 10011 phone: "+555123457" email: idm_user@acme.com passwordexpiration: "2023-01-19 23:59:59" password: "Password123" - name: idm_user_2 first: Bob last: Acme uid: 100011 gid: 10011 - name: idm_user_3 first: Eve last: Acme uid: 1000111 gid: 10011
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-users.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-users.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh administrator@server.idm.example.com
$ ssh administrator@server.idm.example.com Password: [admin@server /]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-show idm_user_1
$ ipa user-show idm_user_1 User login: idm_user_1 First name: Alice Last name: Acme Password: True ....
13.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
--- - name: Ensure users' presence hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Include users_present.json include_vars: file: users_present.json - name: Users present ipauser: ipaadmin_password: "{{ ipaadmin_password }}" users: "{{ users }}"
---
- name: Ensure users' presence
hosts: ipaserver
vars_files:
- /home/user_name/MyPlaybooks/secret.yml
tasks:
- name: Include users_present.json
include_vars:
file: users_present.json
- name: Users present
ipauser:
ipaadmin_password: "{{ ipaadmin_password }}"
users: "{{ users }}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow { "users": [ { "name": "idm_user_1", "first": "First 1", "last": "Last 1", "password": "Password123" }, { "name": "idm_user_2", "first": "First 2", "last": "Last 2" }, { "name": "idm_user_3", "first": "First 3", "last": "Last 3" } ] }
{ "users": [ { "name": "idm_user_1", "first": "First 1", "last": "Last 1", "password": "Password123" }, { "name": "idm_user_2", "first": "First 2", "last": "Last 2" }, { "name": "idm_user_3", "first": "First 3", "last": "Last 3" } ] }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-users-present-jsonfile.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-users-present-jsonfile.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh administrator@server.idm.example.com
$ ssh administrator@server.idm.example.com Password: [admin@server /]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-show idm_user_1
$ ipa user-show idm_user_1 User login: idm_user_1 First name: Alice Last name: Acme Password: True ....
13.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to handle users hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Delete users idm_user_1, idm_user_2, idm_user_3 ipauser: ipaadmin_password: "{{ ipaadmin_password }}" users: - name: idm_user_1 - name: idm_user_2 - name: idm_user_3 state: absent
--- - name: Playbook to handle users hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Delete users idm_user_1, idm_user_2, idm_user_3 ipauser: ipaadmin_password: "{{ ipaadmin_password }}" users: - name: idm_user_1 - name: idm_user_2 - name: idm_user_3 state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/delete-users.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/delete-users.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh administrator@server.idm.example.com
$ ssh administrator@server.idm.example.com Password: [admin@server /]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-show idm_user_1
$ ipa user-show idm_user_1 ipa: ERROR: idm_user_1: user not found
13.6.
第14章
14.1.
|
|
|
|
|
|
|
|
14.2.
図14.1

[D]
14.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-add group_a
$ ipa group-add group_a --------------------- Added group "group_a" --------------------- Group name: group_a GID: 1133400009
14.4.
14.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-del group_a
$ ipa group-del group_a -------------------------- Deleted group "group_a" --------------------------
14.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-add-member group_a --groups=group_b
$ ipa group-add-member group_a --groups=group_b Group name: group_a GID: 1133400009 Member users: user_a Member groups: group_b Indirect Member users: user_b ------------------------- Number of members added 1 -------------------------
14.7.
14.7.1.
14.7.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-add jsmith --first=John --last=Smith --noprivate --gid 10000
$ ipa user-add jsmith --first=John --last=Smith --noprivate --gid 10000
14.7.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
$ kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-managed-entries --list
$ ipa-managed-entries --list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-managed-entries -e "UPG Definition" disable
$ ipa-managed-entries -e "UPG Definition" disable Disabling Plugin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo systemctl restart dirsrv.target
$ sudo systemctl restart dirsrv.target
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-managed-entries -e "UPG Definition" disable
$ ipa-managed-entries -e "UPG Definition" disable Plugin already disabled
14.7.4.
14.8.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-add-member-manager group_a --users=test
$ ipa group-add-member-manager group_a --users=test Group name: group_a GID: 1133400009 Membership managed by users: test ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-add-member-manager group_a --groups=group_admins
$ ipa group-add-member-manager group_a --groups=group_admins Group name: group_a GID: 1133400009 Membership managed by groups: group_admins Membership managed by users: test ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-show group_a
$ ipa group-show group_a Group name: group_a GID: 1133400009 Membership managed by groups: group_admins Membership managed by users: test
14.9.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-show group_a
$ ipa group-show group_a ... Member users: user_a Member groups: group_b Indirect Member users: user_b
注記
14.10.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-remove-member group_name --users=user1 --users=user2 --groups=group1
$ ipa group-remove-member group_name --users=user1 --users=user2 --groups=group1
14.11.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-remove-member-manager group_a --users=test
$ ipa group-remove-member-manager group_a --users=test Group name: group_a GID: 1133400009 Membership managed by groups: group_admins --------------------------- Number of members removed 1 ---------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-remove-member-manager group_a --groups=group_admins
$ ipa group-remove-member-manager group_a --groups=group_admins Group name: group_a GID: 1133400009 --------------------------- Number of members removed 1 ---------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-show group_a
$ ipa group-show group_a Group name: group_a GID: 1133400009
14.12.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Allow initgroups to default to the setting for group.
# Allow initgroups to default to the setting for group. initgroups: sss [SUCCESS=merge] files
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-add idmuser
# ipa user-add idmuser First name: idm Last name: user --------------------- Added user "idmuser" --------------------- User login: idmuser First name: idm Last name: user Full name: idm user Display name: idm user Initials: tu Home directory: /home/idmuser GECOS: idm user Login shell: /bin/sh Principal name: idmuser@IPA.TEST Principal alias: idmuser@IPA.TEST Email address: idmuser@ipa.test UID: 19000024 GID: 19000024 Password: False Member of groups: ipausers Kerberos keys available: False
Copy to Clipboard Copied! Toggle word wrap Toggle overflow getent group audio
$ getent group audio --------------------- audio:x:63
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-add audio --gid 63
$ ipa group-add audio --gid 63 ------------------- Added group "audio" ------------------- Group name: audio GID: 63
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-add-member audio --users=idmuser
$ ipa group-add-member audio --users=idmuser Group name: audio GID: 63 Member users: idmuser ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow id idmuser
$ id idmuser uid=1867800003(idmuser) gid=1867800003(idmuser) groups=1867800003(idmuser),63(audio),10(wheel)
14.13.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [...] # Allow initgroups to default to the setting for group. initgroups: sss [SUCCESS=merge] files
[...] # Allow initgroups to default to the setting for group. initgroups: sss [SUCCESS=merge] files
Copy to Clipboard Copied! Toggle word wrap Toggle overflow getent group audio
$ getent group audio --------------------- audio:x:63
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage idoverrideuser hosts: ipaserver become: false tasks: - name: Add aduser@addomain.com user to the Default Trust View ipaidoverrideuser: ipaadmin_password: "{{ ipaadmin_password }}" idview: "Default Trust View" anchor: aduser@addomain.com
--- - name: Playbook to manage idoverrideuser hosts: ipaserver become: false tasks: - name: Add aduser@addomain.com user to the Default Trust View ipaidoverrideuser: ipaadmin_password: "{{ ipaadmin_password }}" idview: "Default Trust View" anchor: aduser@addomain.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - name: Add the audio group with the aduser member and GID of 63 ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: audio idoverrideuser: - aduser@addomain.com gidnumber: 63
- name: Add the audio group with the aduser member and GID of 63 ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: audio idoverrideuser: - aduser@addomain.com gidnumber: 63
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory add-aduser-to-audio-group.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory add-aduser-to-audio-group.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh aduser@addomain.com@client.idm.example.com
$ ssh aduser@addomain.com@client.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow id aduser@addomain.com
$ id aduser@addomain.com uid=702801456(aduser@addomain.com) gid=63(audio) groups=63(audio)
第15章
15.1.
|
|
|
|
|
|
|
|
15.2.
図15.1

[D]
15.3.
15.4.
15.5.
15.6.
[D]
15.7.
15.8.
15.9.
[D]
第16章
16.1.
|
|
|
|
|
|
|
|
16.2.
図16.1

[D]
16.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to handle groups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Create group ops with gid 1234 ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: ops gidnumber: 1234 - name: Create group sysops ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: sysops user: - idm_user - name: Create group appops ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: appops - name: Add group members sysops and appops to group ops ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: ops group: - sysops - appops
--- - name: Playbook to handle groups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Create group ops with gid 1234 ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: ops gidnumber: 1234 - name: Create group sysops ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: sysops user: - idm_user - name: Create group appops ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: appops - name: Add group members sysops and appops to group ops ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: ops group: - sysops - appops
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-group-members.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-group-members.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh admin@server.idm.example.com
$ ssh admin@server.idm.example.com Password: [admin@server /]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipaserver]$ ipa group-show ops Group name: ops GID: 1234 Member groups: sysops, appops Indirect Member users: idm_user
ipaserver]$ ipa group-show ops Group name: ops GID: 1234 Member groups: sysops, appops Indirect Member users: idm_user
16.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to add nonposix and external groups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Add nonposix group sysops and external group appops ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" groups: - name: sysops nonposix: true - name: appops external: true
--- - name: Playbook to add nonposix and external groups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Add nonposix group sysops and external group appops ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" groups: - name: sysops nonposix: true - name: appops external: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/add-nonposix-and-external-groups.yml
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/add-nonposix-and-external-groups.yml
16.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to ensure presence of users in a group hosts: ipaserver - name: Ensure the ad_user@ad.example.com user ID override is a member of the admins group: ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: admins idoverrideuser: - ad_user@ad.example.com
--- - name: Playbook to ensure presence of users in a group hosts: ipaserver - name: Ensure the ad_user@ad.example.com user ID override is a member of the admins group: ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: admins idoverrideuser: - ad_user@ad.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory add-useridoverride-to-group.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory add-useridoverride-to-group.yml
16.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to handle membership management hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure user test is present for group_a ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_a membermanager_user: test - name: Ensure group_admins is present for group_a ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_a membermanager_group: group_admins
--- - name: Playbook to handle membership management hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure user test is present for group_a ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_a membermanager_user: test - name: Ensure group_admins is present for group_a ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_a membermanager_group: group_admins
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-member-managers-user-groups.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-member-managers-user-groups.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh admin@server.idm.example.com
$ ssh admin@server.idm.example.com Password: [admin@server /]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipaserver]$ ipa group-show group_a Group name: group_a GID: 1133400009 Membership managed by groups: group_admins Membership managed by users: test
ipaserver]$ ipa group-show group_a Group name: group_a GID: 1133400009 Membership managed by groups: group_admins Membership managed by users: test
16.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to handle membership management hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure member manager user and group members are absent for group_a ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_a membermanager_user: test membermanager_group: group_admins action: member state: absent
--- - name: Playbook to handle membership management hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure member manager user and group members are absent for group_a ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_a membermanager_user: test membermanager_group: group_admins action: member state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-member-managers-are-absent.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-member-managers-are-absent.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh admin@server.idm.example.com
$ ssh admin@server.idm.example.com Password: [admin@server /]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipaserver]$ ipa group-show group_a Group name: group_a GID: 1133400009
ipaserver]$ ipa group-show group_a Group name: group_a GID: 1133400009
第17章
17.1.
17.2.
17.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa automember-add
$ ipa automember-add Automember Rule: user_group Grouping Type: group -------------------------------- Added automember rule "user_group" -------------------------------- Automember Rule: user_group
17.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa automember-add-condition
$ ipa automember-add-condition Automember Rule: user_group Attribute Key: uid Grouping Type: group [Inclusive Regex]: .* [Exclusive Regex]: ---------------------------------- Added condition(s) to "user_group" ---------------------------------- Automember Rule: user_group Inclusive Regex: uid=.* ---------------------------- Number of conditions added 1 ----------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa automember-add-condition
$ ipa automember-add-condition Automember Rule: ad_users Attribute Key: objectclass Grouping Type: group [Inclusive Regex]: ntUser [Exclusive Regex]: ------------------------------------- Added condition(s) to "ad_users" ------------------------------------- Automember Rule: ad_users Inclusive Regex: objectclass=ntUser ---------------------------- Number of conditions added 1 ----------------------------
17.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa automember-find
$ ipa automember-find Grouping Type: group --------------- 1 rules matched --------------- Automember Rule: user_group Inclusive Regex: uid=.* ---------------------------- Number of entries returned 1 ----------------------------
17.6.
17.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa automember-remove-condition
$ ipa automember-remove-condition Automember Rule: user_group Attribute Key: uid Grouping Type: group [Inclusive Regex]: .* [Exclusive Regex]: ----------------------------------- Removed condition(s) from "user_group" ----------------------------------- Automember Rule: user_group ------------------------------ Number of conditions removed 1 ------------------------------
17.8.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa automember-rebuild --type=group
$ ipa automember-rebuild --type=group -------------------------------------------------------- Automember rebuild task finished. Processed (9) entries. --------------------------------------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa automember-rebuild --users=target_user1 --users=target_user2
$ ipa automember-rebuild --users=target_user1 --users=target_user2 -------------------------------------------------------- Automember rebuild task finished. Processed (2) entries. --------------------------------------------------------
17.9.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa automember-default-group-set
$ ipa automember-default-group-set Default (fallback) Group: default_user_group Grouping Type: group --------------------------------------------------- Set default (fallback) group for automember "default_user_group" --------------------------------------------------- Default (fallback) Group: cn=default_user_group,cn=groups,cn=accounts,dc=example,dc=com
注記
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa automember-default-group-show
$ ipa automember-default-group-show Grouping Type: group Default (fallback) Group: cn=default_user_group,cn=groups,cn=accounts,dc=example,dc=com
第18章
18.1.
18.2.
18.3.
18.4.
[D]
18.5.
18.6.
18.7.
18.8.
18.8.1.
[D]
18.8.2.
[D]
18.9.
18.10.
第19章
19.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mkdir ~/MyPlaybooks/
$ mkdir ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks
$ cd ~/MyPlaybooks
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [defaults] inventory = /home/your_username/MyPlaybooks/inventory [privilege_escalation] become=True
[defaults] inventory = /home/your_username/MyPlaybooks/inventory [privilege_escalation] become=True
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com [ipareplicas] replica1.idm.example.com replica2.idm.example.com [ipacluster:children] ipaserver ipareplicas [ipacluster:vars] ipaadmin_password=SomeADMINpassword [ipaclients] ipaclient1.example.com ipaclient2.example.com [ipaclients:vars] ipaadmin_password=SomeADMINpassword
[ipaserver] server.idm.example.com [ipareplicas] replica1.idm.example.com replica2.idm.example.com [ipacluster:children] ipaserver ipareplicas [ipacluster:vars] ipaadmin_password=SomeADMINpassword [ipaclients] ipaclient1.example.com ipaclient2.example.com [ipaclients:vars] ipaadmin_password=SomeADMINpassword
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh-keygen
$ ssh-keygen
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh-copy-id admin@server.idm.example.com ssh-copy-id admin@replica.idm.example.com
$ ssh-copy-id admin@server.idm.example.com $ ssh-copy-id admin@replica.idm.example.com
19.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/automember/automember-group-present.yml automember-group-present-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/automember/automember-group-present.yml automember-group-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Automember group present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure group automember rule admins is present ipaautomember: ipaadmin_password: "{{ ipaadmin_password }}" name: testing_group automember_type: group state: present
--- - name: Automember group present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure group automember rule admins is present ipaautomember: ipaadmin_password: "{{ ipaadmin_password }}" name: testing_group automember_type: group state: present
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory automember-group-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory automember-group-present-copy.yml
19.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/automember/automember-hostgroup-rule-present.yml automember-usergroup-rule-present.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/automember/automember-hostgroup-rule-present.yml automember-usergroup-rule-present.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Automember user group rule member present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure an automember condition for a user group is present ipaautomember: ipaadmin_password: "{{ ipaadmin_password }}" name: testing_group automember_type: group state: present action: member inclusive: - key: UID expression: .*
--- - name: Automember user group rule member present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure an automember condition for a user group is present ipaautomember: ipaadmin_password: "{{ ipaadmin_password }}" name: testing_group automember_type: group state: present action: member inclusive: - key: UID expression: .*
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory automember-usergroup-rule-present.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory automember-usergroup-rule-present.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
$ kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-add user101 --first user --last 101
$ ipa user-add user101 --first user --last 101 ----------------------- Added user "user101" ----------------------- User login: user101 First name: user Last name: 101 ... Member of groups: ipausers, testing_group ...
19.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/automember/automember-hostgroup-rule-absent.yml automember-usergroup-rule-absent.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/automember/automember-hostgroup-rule-absent.yml automember-usergroup-rule-absent.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Automember user group rule member absent hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure an automember condition for a user group is absent ipaautomember: ipaadmin_password: "{{ ipaadmin_password }}" name: testing_group automember_type: group state: absent action: member inclusive: - key: initials expression: dp
--- - name: Automember user group rule member absent hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure an automember condition for a user group is absent ipaautomember: ipaadmin_password: "{{ ipaadmin_password }}" name: testing_group automember_type: group state: absent action: member inclusive: - key: initials expression: dp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory automember-usergroup-rule-absent.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory automember-usergroup-rule-absent.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
$ kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa automember-show --type=group testing_group
$ ipa automember-show --type=group testing_group Automember Rule: testing_group
19.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/automember/automember-group-absent.yml automember-group-absent-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/automember/automember-group-absent.yml automember-group-absent-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Automember group absent example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure group automember rule admins is absent ipaautomember: ipaadmin_password: "{{ ipaadmin_password }}" name: testing_group automember_type: group state: absent
--- - name: Automember group absent example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure group automember rule admins is absent ipaautomember: ipaadmin_password: "{{ ipaadmin_password }}" name: testing_group automember_type: group state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory automember-group-absent.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory automember-group-absent.yml
19.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/automember/automember-hostgroup-rule-present.yml automember-hostgroup-rule-present-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/automember/automember-hostgroup-rule-present.yml automember-hostgroup-rule-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Automember user group rule member present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure an automember condition for a user group is present ipaautomember: ipaadmin_password: "{{ ipaadmin_password }}" name: primary_dns_domain_hosts automember_type: hostgroup state: present action: member inclusive: - key: fqdn expression: .*.idm.example.com exclusive: - key: fqdn expression: .*.example.org
--- - name: Automember user group rule member present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure an automember condition for a user group is present ipaautomember: ipaadmin_password: "{{ ipaadmin_password }}" name: primary_dns_domain_hosts automember_type: hostgroup state: present action: member inclusive: - key: fqdn expression: .*.idm.example.com exclusive: - key: fqdn expression: .*.example.org
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory automember-hostgroup-rule-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory automember-hostgroup-rule-present-copy.yml
19.7.
第20章
|
|
|
|
|
|
|
|
20.1.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20.2.
20.3.
- 重要
20.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow set -o braceexpand
# set -o braceexpand
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa config-mod --userobjectclasses={person,organizationalperson,inetorgperson,inetuser,posixaccount,krbprincipalaux,krbticketpolicyaux,ipaobject,ipasshuser,mepOriginEntry,top,mailRecipient}
[bjensen@server ~]$ ipa config-mod --userobjectclasses={person,organizationalperson,inetorgperson,inetuser,posixaccount,krbprincipalaux,krbticketpolicyaux,ipaobject,ipasshuser,mepOriginEntry,top,mailRecipient}
重要
20.5.
- 重要
20.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow set -o braceexpand
# set -o braceexpand
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa config-mod --groupobjectclasses={top,groupofnames,nestedgroup,ipausergroup,ipaobject,ipasshuser,employeegroup}
[bjensen@server ~]$ ipa config-mod --groupobjectclasses={top,groupofnames,nestedgroup,ipausergroup,ipaobject,ipasshuser,employeegroup}
重要注記
20.7.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
|
|
|
|
|
|
|
|
|
|
|
20.8.
20.9.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa config-show --all
[bjensen@server ~]$ ipa config-show --all dn: cn=ipaConfig,cn=etc,dc=example,dc=com Maximum username length: 32 Home directory base: /home Default shell: /bin/sh Default users group: ipausers Default e-mail domain: example.com Search time limit: 2 Search size limit: 100 User search fields: uid,givenname,sn,telephonenumber,ou,title Group search fields: cn,description Enable migration mode: FALSE Certificate Subject base: O=EXAMPLE.COM Default group objectclasses: top, groupofnames, nestedgroup, ipausergroup, ipaobject Default user objectclasses: top, person, organizationalperson, inetorgperson, inetuser, posixaccount, krbprincipalaux, krbticketpolicyaux, ipaobject, ipasshuser Password Expiration Notification (days): 4 Password plugin features: AllowNThash SELinux user map order: guest_u:s0$xguest_u:s0$user_u:s0$staff_u:s0-s0:c0.c1023$unconfined_u:s0-s0:c0.c1023 Default SELinux user: unconfined_u:s0-s0:c0.c1023 Default PAC types: MS-PAC, nfs:NONE cn: ipaConfig objectclass: nsContainer, top, ipaGuiConfig, ipaConfigObject
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa config-mod --defaultshell "/bin/bash"
[bjensen@server ~]$ ipa config-mod --defaultshell "/bin/bash"
20.10.
第21章
21.1.
21.2.
第22章
22.1.
22.2.
ipa selfservice-add "Users can manage their own name details" --permissions=write --attrs=givenname --attrs=displayname --attrs=title --attrs=initials
$ ipa selfservice-add "Users can manage their own name details" --permissions=write --attrs=givenname --attrs=displayname --attrs=title --attrs=initials
-----------------------------------------------------------
Added selfservice "Users can manage their own name details"
-----------------------------------------------------------
Self-service name: Users can manage their own name details
Permissions: write
Attributes: givenname, displayname, title, initials
22.3.
ipa selfservice-mod "Users can manage their own name details" --attrs=givenname --attrs=displayname --attrs=title --attrs=initials --attrs=surname
$ ipa selfservice-mod "Users can manage their own name details" --attrs=givenname --attrs=displayname --attrs=title --attrs=initials --attrs=surname
--------------------------------------------------------------
Modified selfservice "Users can manage their own name details"
--------------------------------------------------------------
Self-service name: Users can manage their own name details
Permissions: write
Attributes: givenname, displayname, title, initials
ipa selfservice-show "Users can manage their own name details"
$ ipa selfservice-show "Users can manage their own name details"
--------------------------------------------------------------
Self-service name: Users can manage their own name details
Permissions: write
Attributes: givenname, displayname, title, initials
22.4.
ipa selfservice-del "Users can manage their own name details"
$ ipa selfservice-del "Users can manage their own name details"
-----------------------------------------------------------
Deleted selfservice "Users can manage their own name details"
-----------------------------------------------------------
第23章
23.1.
23.2.
23.3.
23.4.
第24章
24.1.
24.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/selfservice/selfservice-present.yml selfservice-present-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/selfservice/selfservice-present.yml selfservice-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Self-service present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure self-service rule "Users can manage their own name details" is present ipaselfservice: ipaadmin_password: "{{ ipaadmin_password }}" name: "Users can manage their own name details" permission: read, write attribute: - givenname - displayname - title - initials
--- - name: Self-service present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure self-service rule "Users can manage their own name details" is present ipaselfservice: ipaadmin_password: "{{ ipaadmin_password }}" name: "Users can manage their own name details" permission: read, write attribute: - givenname - displayname - title - initials
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory selfservice-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory selfservice-present-copy.yml
24.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/selfservice/selfservice-absent.yml selfservice-absent-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/selfservice/selfservice-absent.yml selfservice-absent-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Self-service absent hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure self-service rule "Users can manage their own name details" is absent ipaselfservice: ipaadmin_password: "{{ ipaadmin_password }}" name: "Users can manage their own name details" state: absent
--- - name: Self-service absent hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure self-service rule "Users can manage their own name details" is absent ipaselfservice: ipaadmin_password: "{{ ipaadmin_password }}" name: "Users can manage their own name details" state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory selfservice-absent-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory selfservice-absent-copy.yml
24.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/selfservice/selfservice-member-present.yml selfservice-member-present-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/selfservice/selfservice-member-present.yml selfservice-member-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Self-service member present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure selfservice "Users can manage their own name details" member attribute surname is present ipaselfservice: ipaadmin_password: "{{ ipaadmin_password }}" name: "Users can manage their own name details" attribute: - surname action: member
--- - name: Self-service member present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure selfservice "Users can manage their own name details" member attribute surname is present ipaselfservice: ipaadmin_password: "{{ ipaadmin_password }}" name: "Users can manage their own name details" attribute: - surname action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory selfservice-member-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory selfservice-member-present-copy.yml
24.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/selfservice/selfservice-member-absent.yml selfservice-member-absent-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/selfservice/selfservice-member-absent.yml selfservice-member-absent-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Self-service member absent hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure selfservice "Users can manage their own name details" member attributes givenname and surname are absent ipaselfservice: ipaadmin_password: "{{ ipaadmin_password }}" name: "Users can manage their own name details" attribute: - givenname - surname action: member state: absent
--- - name: Self-service member absent hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure selfservice "Users can manage their own name details" member attributes givenname and surname are absent ipaselfservice: ipaadmin_password: "{{ ipaadmin_password }}" name: "Users can manage their own name details" attribute: - givenname - surname action: member state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory selfservice-member-absent-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory selfservice-member-absent-copy.yml
第25章
25.1.
25.2.
ipa delegation-add "basic manager attributes" --permissions=read --permissions=write --attrs=businesscategory --attrs=departmentnumber --attrs=employeetype --attrs=employeenumber --group=managers --membergroup=employees
$ ipa delegation-add "basic manager attributes" --permissions=read --permissions=write --attrs=businesscategory --attrs=departmentnumber --attrs=employeetype --attrs=employeenumber --group=managers --membergroup=employees
-------------------------------------------
Added delegation "basic manager attributes"
-------------------------------------------
Delegation name: basic manager attributes
Permissions: read, write
Attributes: businesscategory, departmentnumber, employeetype, employeenumber
Member user group: employees
User group: managers
25.3.
ipa delegation-find
$ ipa delegation-find
--------------------
1 delegation matched
--------------------
Delegation name: basic manager attributes
Permissions: read, write
Attributes: businesscategory, departmentnumber, employeenumber, employeetype
Member user group: employees
User group: managers
----------------------------
Number of entries returned 1
----------------------------
25.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa delegation-mod "basic manager attributes" --attrs=businesscategory --attrs=departmentnumber --attrs=employeetype --attrs=employeenumber --attrs=displayname
$ ipa delegation-mod "basic manager attributes" --attrs=businesscategory --attrs=departmentnumber --attrs=employeetype --attrs=employeenumber --attrs=displayname ---------------------------------------------- Modified delegation "basic manager attributes" ---------------------------------------------- Delegation name: basic manager attributes Permissions: read, write Attributes: businesscategory, departmentnumber, employeetype, employeenumber, displayname Member user group: employees User group: managers
25.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa delegation-del
$ ipa delegation-del Delegation name: basic manager attributes --------------------------------------------- Deleted delegation "basic manager attributes" ---------------------------------------------
第26章
26.1.
26.2.
26.3.
[D]
26.4.
26.5.
第27章
27.1.
27.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mkdir ~/MyPlaybooks/
$ mkdir ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks
$ cd ~/MyPlaybooks
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [defaults] inventory = /home/<username>/MyPlaybooks/inventory [privilege_escalation] become=True
[defaults] inventory = /home/<username>/MyPlaybooks/inventory [privilege_escalation] become=True
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [eu] server.idm.example.com [us] replica.idm.example.com [ipaserver:children] eu us
[eu] server.idm.example.com [us] replica.idm.example.com [ipaserver:children] eu us
27.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/delegation/delegation-present.yml delegation-present-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/delegation/delegation-present.yml delegation-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage a delegation rule hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure delegation "basic manager attributes" is present ipadelegation: ipaadmin_password: "{{ ipaadmin_password }}" name: "basic manager attributes" permission: read, write attribute: - businesscategory - departmentnumber - employeenumber - employeetype group: managers membergroup: employees
--- - name: Playbook to manage a delegation rule hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure delegation "basic manager attributes" is present ipadelegation: ipaadmin_password: "{{ ipaadmin_password }}" name: "basic manager attributes" permission: read, write attribute: - businesscategory - departmentnumber - employeenumber - employeetype group: managers membergroup: employees
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory delegation-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory delegation-present-copy.yml
27.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks>/
$ cd ~/MyPlaybooks>/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/delegation/delegation-present.yml delegation-absent-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/delegation/delegation-present.yml delegation-absent-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Delegation absent hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure delegation "basic manager attributes" is absent ipadelegation: ipaadmin_password: "{{ ipaadmin_password }}" name: "basic manager attributes" state: absent
--- - name: Delegation absent hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure delegation "basic manager attributes" is absent ipadelegation: ipaadmin_password: "{{ ipaadmin_password }}" name: "basic manager attributes" state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory delegation-absent-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory delegation-absent-copy.yml
27.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/delegation/delegation-member-present.yml delegation-member-present-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/delegation/delegation-member-present.yml delegation-member-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Delegation member present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure delegation "basic manager attributes" member attribute departmentnumber is present ipadelegation: ipaadmin_password: "{{ ipaadmin_password }}" name: "basic manager attributes" attribute: - departmentnumber action: member
--- - name: Delegation member present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure delegation "basic manager attributes" member attribute departmentnumber is present ipadelegation: ipaadmin_password: "{{ ipaadmin_password }}" name: "basic manager attributes" attribute: - departmentnumber action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory delegation-member-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory delegation-member-present-copy.yml
27.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/delegation/delegation-member-absent.yml delegation-member-absent-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/delegation/delegation-member-absent.yml delegation-member-absent-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Delegation member absent hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure delegation "basic manager attributes" member attributes employeenumber and employeetype are absent ipadelegation: ipaadmin_password: "{{ ipaadmin_password }}" name: "basic manager attributes" attribute: - employeenumber - employeetype action: member state: absent
--- - name: Delegation member absent hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure delegation "basic manager attributes" member attributes employeenumber and employeetype are absent ipadelegation: ipaadmin_password: "{{ ipaadmin_password }}" name: "basic manager attributes" attribute: - employeenumber - employeetype action: member state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory delegation-member-absent-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i ~/MyPlaybooks/inventory delegation-member-absent-copy.yml
第28章
28.1.
28.1.1.
- 注記
28.1.2.
28.1.3.
28.1.4.
28.1.5.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa permission-add "dns admin"
$ ipa permission-add "dns admin"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa permission-add "dns admin" --bindtype=all
$ ipa permission-add "dns admin" --bindtype=all
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa permission-add "dns admin" --right=read --right=write ipa permission-add "dns admin" --right={read,write}
$ ipa permission-add "dns admin" --right=read --right=write $ ipa permission-add "dns admin" --right={read,write}
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa permission-add "dns admin" --attrs=description --attrs=automountKey ipa permission-add "dns admin" --attrs={description,automountKey}
$ ipa permission-add "dns admin" --attrs=description --attrs=automountKey $ ipa permission-add "dns admin" --attrs={description,automountKey}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa permission-add "manage service" --right=all --type=service --attrs=krbprincipalkey --attrs=krbprincipalname --attrs=managedby
$ ipa permission-add "manage service" --right=all --type=service --attrs=krbprincipalkey --attrs=krbprincipalname --attrs=managedby
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa permission-add "manage automount locations" --subtree="ldap://ldap.example.com:389/cn=automount,dc=example,dc=com" --right=write --attrs=automountmapname --attrs=automountkey --attrs=automountInformation
$ ipa permission-add "manage automount locations" --subtree="ldap://ldap.example.com:389/cn=automount,dc=example,dc=com" --right=write --attrs=automountmapname --attrs=automountkey --attrs=automountInformation
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa permission-add "manage Windows groups" --filter="(!(objectclass=posixgroup))" --right=write --attrs=description
$ ipa permission-add "manage Windows groups" --filter="(!(objectclass=posixgroup))" --right=write --attrs=description
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa permission-add ManageShell --right="write" --type=user --attr=loginshell --memberof=engineers
$ ipa permission-add ManageShell --right="write" --type=user --attr=loginshell --memberof=engineers
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa permission-add ManageMembers --right="write" --subtree=cn=groups,cn=accounts,dc=example,dc=test --attr=member --targetgroup=engineers
$ ipa permission-add ManageMembers --right="write" --subtree=cn=groups,cn=accounts,dc=example,dc=test --attr=member --targetgroup=engineers
28.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa permission-show <permission> --raw
$ ipa permission-show <permission> --raw
28.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa privilege-add "managing filesystems" --desc="for filesystems"
$ ipa privilege-add "managing filesystems" --desc="for filesystems"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa privilege-add-permission "managing filesystems" --permissions="managing automount" --permissions="managing ftp services"
$ ipa privilege-add-permission "managing filesystems" --permissions="managing automount" --permissions="managing ftp services"
28.5.
28.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa role-add --desc="User Administrator" useradmin
$ ipa role-add --desc="User Administrator" useradmin ------------------------ Added role "useradmin" ------------------------ Role name: useradmin Description: User Administrator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa role-add-privilege --privileges="user administrators" useradmin
$ ipa role-add-privilege --privileges="user administrators" useradmin Role name: useradmin Description: User Administrator Privileges: user administrators ---------------------------- Number of privileges added 1 ----------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa role-add-member --groups=useradmins useradmin
$ ipa role-add-member --groups=useradmins useradmin Role name: useradmin Description: User Administrator Member groups: useradmins Privileges: user administrators ------------------------- Number of members added 1 -------------------------
28.7.
第29章
29.1.
29.1.1.
- 注記
29.1.2.
29.1.3.
29.1.4.
29.1.5.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
29.2.
- 注記
- 注記
- 重要
- 注記
29.3.
29.4.
第30章
30.1.
- 注記
30.2.
30.3.
30.4.
30.5.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
30.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/<MyPlaybooks>/
$ cd ~/<MyPlaybooks>/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-user-present.yml role-member-user-present-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-user-present.yml role-member-user-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage IPA role with members. hosts: ipaserver become: true gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - iparole: ipaadmin_password: "{{ ipaadmin_password }}" name: user_and_host_administrator user: idm_user01 group: idm_group01 privilege: - Group Administrators - User Administrators - Stage User Administrators - Group Administrators
--- - name: Playbook to manage IPA role with members. hosts: ipaserver become: true gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - iparole: ipaadmin_password: "{{ ipaadmin_password }}" name: user_and_host_administrator user: idm_user01 group: idm_group01 privilege: - Group Administrators - User Administrators - Stage User Administrators - Group Administrators
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-user-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-user-present-copy.yml
30.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/<MyPlaybooks>/
$ cd ~/<MyPlaybooks>/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/role/role-is-absent.yml role-is-absent-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/role/role-is-absent.yml role-is-absent-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage IPA role with members. hosts: ipaserver become: true gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - iparole: ipaadmin_password: "{{ ipaadmin_password }}" name: user_and_host_administrator state: absent
--- - name: Playbook to manage IPA role with members. hosts: ipaserver become: true gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - iparole: ipaadmin_password: "{{ ipaadmin_password }}" name: user_and_host_administrator state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-is-absent-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-is-absent-copy.yml
30.8.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/<MyPlaybooks>/
$ cd ~/<MyPlaybooks>/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-group-present.yml role-member-group-present-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-group-present.yml role-member-group-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage IPA role with members. hosts: ipaserver become: true gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - iparole: ipaadmin_password: "{{ ipaadmin_password }}" name: helpdesk group: junior_sysadmins action: member
--- - name: Playbook to manage IPA role with members. hosts: ipaserver become: true gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - iparole: ipaadmin_password: "{{ ipaadmin_password }}" name: helpdesk group: junior_sysadmins action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-group-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-group-present-copy.yml
30.9.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/<MyPlaybooks>/
$ cd ~/<MyPlaybooks>/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-user-absent.yml role-member-user-absent-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-user-absent.yml role-member-user-absent-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage IPA role with members. hosts: ipaserver become: true gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - iparole: ipaadmin_password: "{{ ipaadmin_password }}" name: helpdesk user - user_01 - user_02 action: member state: absent
--- - name: Playbook to manage IPA role with members. hosts: ipaserver become: true gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - iparole: ipaadmin_password: "{{ ipaadmin_password }}" name: helpdesk user - user_01 - user_02 action: member state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-user-absent-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-user-absent-copy.yml
30.10.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/<MyPlaybooks>/
$ cd ~/<MyPlaybooks>/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-service-present-absent.yml role-member-service-present-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-service-present-absent.yml role-member-service-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage IPA role with members. hosts: ipaserver become: true gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - iparole: ipaadmin_password: "{{ ipaadmin_password }}" name: web_administrator service: - HTTP/client01.idm.example.com action: member
--- - name: Playbook to manage IPA role with members. hosts: ipaserver become: true gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - iparole: ipaadmin_password: "{{ ipaadmin_password }}" name: web_administrator service: - HTTP/client01.idm.example.com action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-service-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-service-present-copy.yml
30.11.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/<MyPlaybooks>/
$ cd ~/<MyPlaybooks>/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-host-present.yml role-member-host-present-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-host-present.yml role-member-host-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage IPA role with members. hosts: ipaserver become: true gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - iparole: ipaadmin_password: "{{ ipaadmin_password }}" name: web_administrator host: - client01.idm.example.com action: member
--- - name: Playbook to manage IPA role with members. hosts: ipaserver become: true gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - iparole: ipaadmin_password: "{{ ipaadmin_password }}" name: web_administrator host: - client01.idm.example.com action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-host-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-host-present-copy.yml
30.12.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/<MyPlaybooks>/
$ cd ~/<MyPlaybooks>/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-hostgroup-present.yml role-member-hostgroup-present-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/role/role-member-hostgroup-present.yml role-member-hostgroup-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage IPA role with members. hosts: ipaserver become: true gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - iparole: ipaadmin_password: "{{ ipaadmin_password }}" name: web_administrator hostgroup: - web_servers action: member
--- - name: Playbook to manage IPA role with members. hosts: ipaserver become: true gather_facts: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - iparole: ipaadmin_password: "{{ ipaadmin_password }}" name: web_administrator hostgroup: - web_servers action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-hostgroup-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i ~/<MyPlaybooks>/inventory role-member-hostgroup-present-copy.yml
第31章
31.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/privilege/privilege-present.yml privilege-present-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/privilege/privilege-present.yml privilege-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Privilege present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure privilege full_host_administration is present ipaprivilege: ipaadmin_password: "{{ ipaadmin_password }}" name: full_host_administration description: This privilege combines all IdM permissions related to host administration
--- - name: Privilege present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure privilege full_host_administration is present ipaprivilege: ipaadmin_password: "{{ ipaadmin_password }}" name: full_host_administration description: This privilege combines all IdM permissions related to host administration
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory privilege-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory privilege-present-copy.yml
31.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/privilege/privilege-member-present.yml privilege-member-present-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/privilege/privilege-member-present.yml privilege-member-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Privilege member present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that permissions are present for the "full_host_administration" privilege ipaprivilege: ipaadmin_password: "{{ ipaadmin_password }}" name: full_host_administration permission: - "System: Add krbPrincipalName to a Host" - "System: Enroll a Host" - "System: Manage Host Certificates" - "System: Manage Host Enrollment Password" - "System: Manage Host Keytab" - "System: Manage Host Principals" - "Retrieve Certificates from the CA" - "Revoke Certificate" - "System: Add Hosts" - "System: Add krbPrincipalName to a Host" - "System: Enroll a Host" - "System: Manage Host Certificates" - "System: Manage Host Enrollment Password" - "System: Manage Host Keytab" - "System: Manage Host Keytab Permissions" - "System: Manage Host Principals" - "System: Manage Host SSH Public Keys" - "System: Manage Service Keytab" - "System: Manage Service Keytab Permissions" - "System: Modify Hosts" - "System: Remove Hosts" - "System: Add Hostgroups" - "System: Modify Hostgroup Membership" - "System: Modify Hostgroups" - "System: Remove Hostgroups"
--- - name: Privilege member present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that permissions are present for the "full_host_administration" privilege ipaprivilege: ipaadmin_password: "{{ ipaadmin_password }}" name: full_host_administration permission: - "System: Add krbPrincipalName to a Host" - "System: Enroll a Host" - "System: Manage Host Certificates" - "System: Manage Host Enrollment Password" - "System: Manage Host Keytab" - "System: Manage Host Principals" - "Retrieve Certificates from the CA" - "Revoke Certificate" - "System: Add Hosts" - "System: Add krbPrincipalName to a Host" - "System: Enroll a Host" - "System: Manage Host Certificates" - "System: Manage Host Enrollment Password" - "System: Manage Host Keytab" - "System: Manage Host Keytab Permissions" - "System: Manage Host Principals" - "System: Manage Host SSH Public Keys" - "System: Manage Service Keytab" - "System: Manage Service Keytab Permissions" - "System: Modify Hosts" - "System: Remove Hosts" - "System: Add Hostgroups" - "System: Modify Hostgroup Membership" - "System: Modify Hostgroups" - "System: Remove Hostgroups"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory privilege-member-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory privilege-member-present-copy.yml
31.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/privilege/privilege-member-absent.yml privilege-member-absent-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/privilege/privilege-member-absent.yml privilege-member-absent-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Privilege absent example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that the "Request Certificate ignoring CA ACLs" permission is absent from the "Certificate Administrators" privilege ipaprivilege: ipaadmin_password: "{{ ipaadmin_password }}" name: Certificate Administrators permission: - "Request Certificate ignoring CA ACLs" action: member state: absent
--- - name: Privilege absent example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that the "Request Certificate ignoring CA ACLs" permission is absent from the "Certificate Administrators" privilege ipaprivilege: ipaadmin_password: "{{ ipaadmin_password }}" name: Certificate Administrators permission: - "Request Certificate ignoring CA ACLs" action: member state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory privilege-member-absent-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory privilege-member-absent-copy.yml
31.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/privilege/privilege-present.yml rename-privilege.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/privilege/privilege-present.yml rename-privilege.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Rename a privilege hosts: ipaserver
--- - name: Rename a privilege hosts: ipaserver
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [...] tasks: - name: Ensure the full_host_administration privilege is renamed to limited_host_administration ipaprivilege: [...]
[...] tasks: - name: Ensure the full_host_administration privilege is renamed to limited_host_administration ipaprivilege: [...]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Rename a privilege hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure the full_host_administration privilege is renamed to limited_host_administration ipaprivilege: ipaadmin_password: "{{ ipaadmin_password }}" name: full_host_administration rename: limited_host_administration state: renamed
--- - name: Rename a privilege hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure the full_host_administration privilege is renamed to limited_host_administration ipaprivilege: ipaadmin_password: "{{ ipaadmin_password }}" name: full_host_administration rename: limited_host_administration state: renamed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory rename-privilege.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory rename-privilege.yml
31.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/privilege/privilege-absent.yml privilege-absent-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/privilege/privilege-absent.yml privilege-absent-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [...] tasks: - name: Ensure privilege "CA administrator" is absent ipaprivilege: [...]
[...] tasks: - name: Ensure privilege "CA administrator" is absent ipaprivilege: [...]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Privilege absent example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure privilege "CA administrator" is absent ipaprivilege: ipaadmin_password: "{{ ipaadmin_password }}" name: CA administrator state: absent
--- - name: Privilege absent example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure privilege "CA administrator" is absent ipaprivilege: ipaadmin_password: "{{ ipaadmin_password }}" name: CA administrator state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory privilege-absent-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory privilege-absent-copy.yml
31.6.
第32章
32.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-present.yml permission-present-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-present.yml permission-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Permission present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that the "MyPermission" permission is present ipapermission: ipaadmin_password: "{{ ipaadmin_password }}" name: MyPermission object_type: host right: all
--- - name: Permission present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that the "MyPermission" permission is present ipapermission: ipaadmin_password: "{{ ipaadmin_password }}" name: MyPermission object_type: host right: all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory permission-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory permission-present-copy.yml
32.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-present.yml permission-present-with-attribute.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-present.yml permission-present-with-attribute.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Permission present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that the "MyPermission" permission is present with an attribute ipapermission: ipaadmin_password: "{{ ipaadmin_password }}" name: MyPermission object_type: host right: all attrs: description
--- - name: Permission present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that the "MyPermission" permission is present with an attribute ipapermission: ipaadmin_password: "{{ ipaadmin_password }}" name: MyPermission object_type: host right: all attrs: description
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory permission-present-with-attribute.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory permission-present-with-attribute.yml
32.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-absent.yml permission-absent-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-absent.yml permission-absent-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Permission absent example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that the "MyPermission" permission is absent ipapermission: ipaadmin_password: "{{ ipaadmin_password }}" name: MyPermission state: absent
--- - name: Permission absent example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that the "MyPermission" permission is absent ipapermission: ipaadmin_password: "{{ ipaadmin_password }}" name: MyPermission state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory permission-absent-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory permission-absent-copy.yml
32.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-member-present.yml permission-member-present-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-member-present.yml permission-member-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Permission member present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that the "gecos" and "description" attributes are present in "MyPermission" ipapermission: ipaadmin_password: "{{ ipaadmin_password }}" name: MyPermission attrs: - description - gecos action: member
--- - name: Permission member present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that the "gecos" and "description" attributes are present in "MyPermission" ipapermission: ipaadmin_password: "{{ ipaadmin_password }}" name: MyPermission attrs: - description - gecos action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory permission-member-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory permission-member-present-copy.yml
32.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-member-absent.yml permission-member-absent-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-member-absent.yml permission-member-absent-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Permission absent example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that an attribute is not a member of "MyPermission" ipapermission: ipaadmin_password: "{{ ipaadmin_password }}" name: MyPermission attrs: description action: member state: absent
--- - name: Permission absent example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that an attribute is not a member of "MyPermission" ipapermission: ipaadmin_password: "{{ ipaadmin_password }}" name: MyPermission attrs: description action: member state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory permission-member-absent-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory permission-member-absent-copy.yml
32.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-renamed.yml permission-renamed-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/permission/permission-renamed.yml permission-renamed-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Permission present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Rename the "MyPermission" permission ipapermission: ipaadmin_password: "{{ ipaadmin_password }}" name: MyPermission rename: MyNewPermission state: renamed
--- - name: Permission present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Rename the "MyPermission" permission ipapermission: ipaadmin_password: "{{ ipaadmin_password }}" name: MyPermission rename: MyNewPermission state: renamed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory permission-renamed-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory permission-renamed-copy.yml
32.7.
第33章
33.1.
33.2.
33.3.
33.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pwdhash -D /etc/dirsrv/slapd-IDM-EXAMPLE-COM password
# pwdhash -D /etc/dirsrv/slapd-IDM-EXAMPLE-COM password {PBKDF2_SHA256}AAAgABU0bKhyjY53NcxY33ueoPjOUWtl4iyYN5uW...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipactl stop
# ipactl stop
Copy to Clipboard Copied! Toggle word wrap Toggle overflow nsslapd-rootpw: {PBKDF2_SHA256}AAAgABU0bKhyjY53NcxY33ueoPjOUWtl4iyYN5uW...
nsslapd-rootpw: {PBKDF2_SHA256}AAAgABU0bKhyjY53NcxY33ueoPjOUWtl4iyYN5uW...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipactl start
# ipactl start
33.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-mod idm_user --password
$ ipa user-mod idm_user --password Password: Enter Password again to verify: -------------------- Modified user "idm_user" -------------------- ...
33.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ldapmodify -x -D "cn=Directory Manager" -W -h server.idm.example.com -p 389
$ ldapmodify -x -D "cn=Directory Manager" -W -h server.idm.example.com -p 389 Enter LDAP Password:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dn: cn=ipa_pwd_extop,cn=plugins,cn=config
dn: cn=ipa_pwd_extop,cn=plugins,cn=config
Copy to Clipboard Copied! Toggle word wrap Toggle overflow changetype: modify
changetype: modify
Copy to Clipboard Copied! Toggle word wrap Toggle overflow add: passSyncManagersDNs
add: passSyncManagersDNs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow passSyncManagersDNs: \ uid=admin,cn=users,cn=accounts,dc=example,dc=com
passSyncManagersDNs: \ uid=admin,cn=users,cn=accounts,dc=example,dc=com
33.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-status example_user
$ ipa user-status example_user ----------------------- Account disabled: False ----------------------- Server: idm.example.com Failed logins: 8 Last successful authentication: N/A Last failed authentication: 20220229080317Z Time now: 2022-02-29T08:04:46Z ---------------------------- Number of entries returned 1 ----------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa pwpolicy-show --user example_user
$ ipa pwpolicy-show --user example_user Group: global_policy Max lifetime (days): 90 Min lifetime (hours): 1 History size: 0 Character classes: 0 Min length: 8 Max failures: 6 Failure reset interval: 60 Lockout duration: 600 Grace login limit: -1
33.8.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-unlock idm_user
$ ipa user-unlock idm_user ----------------------- Unlocked account "idm_user" -----------------------
33.9.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa config-show | grep "Password plugin features"
# ipa config-show | grep "Password plugin features" Password plugin features: AllowNThash, KDC:Disable Last Success
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa config-mod --ipaconfigstring='AllowNThash'
# ipa config-mod --ipaconfigstring='AllowNThash'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipactl restart
# ipactl restart
第34章
34.1.
34.2.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34.3.
34.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Tests hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure presence of pwpolicy for group ops ipapwpolicy: ipaadmin_password: "{{ ipaadmin_password }}" name: ops minlife: 7 maxlife: 49 history: 5 priority: 1 lockouttime: 300 minlength: 8 minclasses: 4 maxfail: 3 failinterval: 5
--- - name: Tests hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure presence of pwpolicy for group ops ipapwpolicy: ipaadmin_password: "{{ ipaadmin_password }}" name: ops minlife: 7 maxlife: 49 history: 5 priority: 1 lockouttime: 300 minlength: 8 minclasses: 4 maxfail: 3 failinterval: 5
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/new_pwpolicy_present.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/new_pwpolicy_present.yml
34.5.
34.5.1.
34.5.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa pwpolicy-add
$ ipa pwpolicy-add Group: group_name Priority: priority_level
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa pwpolicy-find
$ ipa pwpolicy-find
34.6.
34.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa pwpolicy-mod --usercheck=True managers
$ ipa pwpolicy-mod --usercheck=True managers
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa pwpolicy-mod --maxrepeat=2 managers
$ ipa pwpolicy-mod --maxrepeat=2 managers
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-add test_user
$ ipa user-add test_user First name: test Last name: user ---------------------------- Added user "test_user" ----------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit test_user
$ kinit test_user
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Password expired. You must change it now. Enter new password: Enter it again: Password change rejected: Password not changed. Unspecified password quality failure while trying to change password. Please try again.
Password expired. You must change it now. Enter new password: Enter it again: Password change rejected: Password not changed. Unspecified password quality failure while trying to change password. Please try again.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Password change rejected: Password not changed. Unspecified password quality failure while trying to change password. Please try again. Enter new password: Enter it again:
Password change rejected: Password not changed. Unspecified password quality failure while trying to change password. Please try again. Enter new password: Enter it again:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Password change rejected: Password not changed. Unspecified password quality failure while trying to change password. Please try again. Enter new password: Enter it again:
Password change rejected: Password not changed. Unspecified password quality failure while trying to change password. Please try again. Enter new password: Enter it again:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist
$ klist Ticket cache: KCM:0:33945 Default principal: test_user@IDM.EXAMPLE.COM Valid starting Expires Service principal 07/07/2021 12:44:44 07/08/2021 12:44:44 krbtgt@IDM.EXAMPLE.COM@IDM.EXAMPLE.COM
34.8.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Tests hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure presence of usercheck and maxrepeat pwpolicy for group managers ipapwpolicy: ipaadmin_password: "{{ ipaadmin_password }}" name: managers usercheck: True maxrepeat: 2 maxsequence: 3
--- - name: Tests hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure presence of usercheck and maxrepeat pwpolicy for group managers ipapwpolicy: ipaadmin_password: "{{ ipaadmin_password }}" name: managers usercheck: True maxrepeat: 2 maxsequence: 3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/manager_pwpolicy_present.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/manager_pwpolicy_present.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-add test_user
$ ipa user-add test_user First name: test Last name: user ---------------------------- Added user "test_user" ----------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit test_user
$ kinit test_user
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Password expired. You must change it now. Enter new password: Enter it again: Password change rejected: Password not changed. Unspecified password quality failure while trying to change password. Please try again.
Password expired. You must change it now. Enter new password: Enter it again: Password change rejected: Password not changed. Unspecified password quality failure while trying to change password. Please try again.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Password change rejected: Password not changed. Unspecified password quality failure while trying to change password. Please try again. Enter new password: Enter it again:
Password change rejected: Password not changed. Unspecified password quality failure while trying to change password. Please try again. Enter new password: Enter it again:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Password change rejected: Password not changed. Unspecified password quality failure while trying to change password. Please try again. Enter new password: Enter it again:
Password change rejected: Password not changed. Unspecified password quality failure while trying to change password. Please try again. Enter new password: Enter it again:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Password change rejected: Password not changed. Unspecified password quality failure while trying to change password. Please try again. Enter new password: Enter it again:
Password change rejected: Password not changed. Unspecified password quality failure while trying to change password. Please try again. Enter new password: Enter it again:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist
$ klist Ticket cache: KCM:0:33945 Default principal: test_user@IDM.EXAMPLE.COM Valid starting Expires Service principal 07/07/2021 12:44:44 07/08/2021 12:44:44 krbtgt@IDM.EXAMPLE.COM@IDM.EXAMPLE.COM
第35章
35.1.
35.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install ipa-client-epn
# yum install ipa-client-epn
35.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow vi /etc/ipa/epn.conf
# vi /etc/ipa/epn.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow notify_ttls = 28, 14, 7, 3, 1
notify_ttls = 28, 14, 7, 3, 1
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow smtp_server = localhost smtp_port = 25
smtp_server = localhost smtp_port = 25
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mail_from = admin-email@example.com
mail_from = admin-email@example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow smtp_client_cert = /etc/pki/tls/certs/client.pem
smtp_client_cert = /etc/pki/tls/certs/client.pem
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow smtp_client_key = /etc/pki/tls/certs/client.key
smtp_client_key = /etc/pki/tls/certs/client.key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow smtp_client_key_pass = Secret123!
smtp_client_key_pass = Secret123!
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-epn --dry-run [ { "uid": "user5", "cn": "user 5", "krbpasswordexpiration": "2020-04-17 15:51:53", "mail": "['user5@ipa.test']" } ] [ { "uid": "user6", "cn": "user 6", "krbpasswordexpiration": "2020-12-17 15:51:53", "mail": "['user5@ipa.test']" } ] The IPA-EPN command was successful
ipa-epn --dry-run [ { "uid": "user5", "cn": "user 5", "krbpasswordexpiration": "2020-04-17 15:51:53", "mail": "['user5@ipa.test']" } ] [ { "uid": "user6", "cn": "user 6", "krbpasswordexpiration": "2020-12-17 15:51:53", "mail": "['user5@ipa.test']" } ] The IPA-EPN command was successful
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-epn [ { "uid": "user5", "cn": "user 5", "krbpasswordexpiration": "2020-10-01 15:51:53", "mail": "['user5@ipa.test']" } ] [ { "uid": "user6", "cn": "user 6", "krbpasswordexpiration": "2020-12-17 15:51:53", "mail": "['user5@ipa.test']" } ] The IPA-EPN command was successful
ipa-epn [ { "uid": "user5", "cn": "user 5", "krbpasswordexpiration": "2020-10-01 15:51:53", "mail": "['user5@ipa.test']" } ] [ { "uid": "user6", "cn": "user 6", "krbpasswordexpiration": "2020-12-17 15:51:53", "mail": "['user5@ipa.test']" } ] The IPA-EPN command was successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-epn --from-nbdays 8 --to-nbdays 12
# ipa-epn --from-nbdays 8 --to-nbdays 12
注記
35.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl start ipa-epn.timer
systemctl start ipa-epn.timer
35.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow vi /etc/ipa/epn/expire_msg.template
# vi /etc/ipa/epn/expire_msg.template
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Hi {{ fullname }}, Your password will expire on {{ expiration }}. Please change it as soon as possible.
Hi {{ fullname }}, Your password will expire on {{ expiration }}. Please change it as soon as possible.
第36章
36.1.
36.2.
36.3.
36.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa help idviews
$ ipa help idviews ID Views Manage ID Views IPA allows to override certain properties of users and groups[...] [...] Topic commands: idoverridegroup-add Add a new Group ID override idoverridegroup-del Delete a Group ID override [...]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idview-add --help
$ ipa idview-add --help Usage: ipa [global-options] idview-add NAME [options] Add a new ID View. Options: -h, --help show this help message and exit --desc=STR Description [...]
36.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idview-add example_for_host1
$ ipa idview-add example_for_host1 --------------------------- Added ID View "example_for_host1" --------------------------- ID View Name: example_for_host1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idoverrideuser-add example_for_host1 idm_user --login=user_1234
$ ipa idoverrideuser-add example_for_host1 idm_user --login=user_1234 ----------------------------- Added User ID override "idm_user" ----------------------------- Anchor to override: idm_user User login: user_1234
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idoverrideuser-add-cert example_for_host1 user --certificate="MIIEATCC..."
$ ipa idoverrideuser-add-cert example_for_host1 user --certificate="MIIEATCC..."
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idview-apply example_for_host1 --hosts=host1.idm.example.com
$ ipa idview-apply example_for_host1 --hosts=host1.idm.example.com ----------------------------- Applied ID View "example_for_host1" ----------------------------- hosts: host1.idm.example.com --------------------------------------------- Number of hosts the ID View was applied to: 1 ---------------------------------------------
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh root@host1
$ ssh root@host1 Password:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow root@host1 ~]# sss_cache -E
root@host1 ~]# sss_cache -E
Copy to Clipboard Copied! Toggle word wrap Toggle overflow root@host1 ~]# systemctl restart sssd
root@host1 ~]# systemctl restart sssd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh user_1234@host1.idm.example.com
[root@r8server ~]# ssh user_1234@host1.idm.example.com Password: Last login: Sun Jun 21 22:34:25 2020 from 192.168.122.229 [user_1234@host1 ~]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pwd
[user_1234@host1 ~]$ pwd /home/idm_user/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow id idm_user user_1234
[root@host1 ~]# id idm_user uid=779800003(user_1234) gid=779800003(idm_user) groups=779800003(idm_user) [root@host1 ~]# user_1234 uid=779800003(user_1234) gid=779800003(idm_user) groups=779800003(idm_user)
36.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mkdir /home/user_1234/
[root@host1 /]# mkdir /home/user_1234/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chown idm_user:idm_user /home/user_1234/
[root@host1 /]# chown idm_user:idm_user /home/user_1234/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idview-show example_for_host1 --all
$ ipa idview-show example_for_host1 --all dn: cn=example_for_host1,cn=views,cn=accounts,dc=idm,dc=example,dc=com ID View Name: example_for_host1 User object override: idm_user Hosts the view applies to: host1.idm.example.com objectclass: ipaIDView, top, nsContainer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idoverrideuser-mod example_for_host1 idm_user --homedir=/home/user_1234
$ ipa idoverrideuser-mod example_for_host1 idm_user --homedir=/home/user_1234 ----------------------------- Modified a User ID override "idm_user" ----------------------------- Anchor to override: idm_user User login: user_1234 Home directory: /home/user_1234/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh root@host1
$ ssh root@host1 Password:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow root@host1 ~]# sss_cache -E
root@host1 ~]# sss_cache -E
Copy to Clipboard Copied! Toggle word wrap Toggle overflow root@host1 ~]# systemctl restart sssd
root@host1 ~]# systemctl restart sssd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh idm_user@host1.idm.example.com
[root@r8server ~]# ssh idm_user@host1.idm.example.com Password: Last login: Sun Jun 21 22:34:25 2020 from 192.168.122.229 [user_1234@host1 ~]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pwd
[user_1234@host1 ~]$ pwd /home/user_1234/
36.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mkdir /home/user_1234/
[root@host1 /]# mkdir /home/user_1234/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chown idm_user:idm_user /home/user_1234/
[root@host1 /]# chown idm_user:idm_user /home/user_1234/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idview-add example_for_host1
$ ipa idview-add example_for_host1 --------------------------- Added ID View "example_for_host1" --------------------------- ID View Name: example_for_host1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idoverrideuser-add example_for_host1 idm_user --homedir=/home/user_1234
$ ipa idoverrideuser-add example_for_host1 idm_user --homedir=/home/user_1234 ----------------------------- Added User ID override "idm_user" ----------------------------- Anchor to override: idm_user Home directory: /home/user_1234/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idview-apply example_for_host1 --hosts=host1.idm.example.com
$ ipa idview-apply example_for_host1 --hosts=host1.idm.example.com ----------------------------- Applied ID View "example_for_host1" ----------------------------- hosts: host1.idm.example.com --------------------------------------------- Number of hosts the ID View was applied to: 1 ---------------------------------------------
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh root@host1
$ ssh root@host1 Password:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow root@host1 ~]# sss_cache -E
root@host1 ~]# sss_cache -E
Copy to Clipboard Copied! Toggle word wrap Toggle overflow root@host1 ~]# systemctl restart sssd
root@host1 ~]# systemctl restart sssd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh idm_user@host1.idm.example.com
[root@r8server ~]# ssh idm_user@host1.idm.example.com Password: Activate the web console with: systemctl enable --now cockpit.socket Last login: Sun Jun 21 22:34:25 2020 from 192.168.122.229 [idm_user@host1 /]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pwd
[idm_user@host1 /]$ pwd /home/user_1234/
36.8.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-add --desc="Baltimore hosts" baltimore
[root@server ~]# ipa hostgroup-add --desc="Baltimore hosts" baltimore --------------------------- Added hostgroup "baltimore" --------------------------- Host-group: baltimore Description: Baltimore hosts
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-add-member --hosts={host102,host103} baltimore
[root@server ~]# ipa hostgroup-add-member --hosts={host102,host103} baltimore Host-group: baltimore Description: Baltimore hosts Member hosts: host102.idm.example.com, host103.idm.example.com ------------------------- Number of members added 2 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idview-apply --hostgroups=baltimore
[root@server ~]# ipa idview-apply --hostgroups=baltimore ID View Name: example_for_host1 ----------------------------------------- Applied ID View "example_for_host1" ----------------------------------------- hosts: host102.idm.example.com, host103.idm.example.com --------------------------------------------- Number of hosts the ID View was applied to: 2 ---------------------------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-add-member --hosts=somehost.idm.example.com baltimore
[root@server ~]# ipa hostgroup-add-member --hosts=somehost.idm.example.com baltimore Host-group: baltimore Description: Baltimore hosts Member hosts: host102.idm.example.com, host103.idm.example.com,somehost.idm.example.com ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idview-show example_for_host1 --all
[root@server ~]# ipa idview-show example_for_host1 --all dn: cn=example_for_host1,cn=views,cn=accounts,dc=idm,dc=example,dc=com ID View Name: example_for_host1 [...] Hosts the view applies to: host102.idm.example.com, host103.idm.example.com objectclass: ipaIDView, top, nsContainer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idview-apply --host=somehost.idm.example.com
[root@server ~]# ipa idview-apply --host=somehost.idm.example.com ID View Name: example_for_host1 ----------------------------------------- Applied ID View "example_for_host1" ----------------------------------------- hosts: somehost.idm.example.com --------------------------------------------- Number of hosts the ID View was applied to: 1 ---------------------------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idview-show example_for_host1 --all
[root@server ~]# ipa idview-show example_for_host1 --all dn: cn=example_for_host1,cn=views,cn=accounts,dc=idm,dc=example,dc=com ID View Name: example_for_host1 [...] Hosts the view applies to: host102.idm.example.com, host103.idm.example.com, somehost.idm.example.com objectclass: ipaIDView, top, nsContainer
36.9.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage idoverrideuser hosts: ipaserver become: false gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure idview_for_host1 is present idview: ipaadmin_password: ”{{ ipaadmin_password }}" name: idview_for_host1 - name: Ensure idview_for_host1 is applied to host1.idm.example.com idview: ipaadmin_password: ”{{ ipaadmin_password }}" name: idview_for_host1 host: host1.idm.example.com action: member - name: Ensure idm_user is present in idview_for_host1 with homedir /home/user_1234 and name user_1234 ipaidoverrideuser: ipaadmin_password: ”{{ ipaadmin_password }}" idview: idview_for_host1 anchor: idm_user name: user_1234 homedir: /home/user_1234
--- - name: Playbook to manage idoverrideuser hosts: ipaserver become: false gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure idview_for_host1 is present idview: ipaadmin_password: ”{{ ipaadmin_password }}" name: idview_for_host1 - name: Ensure idview_for_host1 is applied to host1.idm.example.com idview: ipaadmin_password: ”{{ ipaadmin_password }}" name: idview_for_host1 host: host1.idm.example.com action: member - name: Ensure idm_user is present in idview_for_host1 with homedir /home/user_1234 and name user_1234 ipaidoverrideuser: ipaadmin_password: ”{{ ipaadmin_password }}" idview: idview_for_host1 anchor: idm_user name: user_1234 homedir: /home/user_1234
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/inventory <path_to_playbooks_directory>/add-idoverrideuser-with-name-and-homedir.yml
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/inventory <path_to_playbooks_directory>/add-idoverrideuser-with-name-and-homedir.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh root@host1
$ ssh root@host1 Password:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow root@host1 ~]# sss_cache -E
root@host1 ~]# sss_cache -E
Copy to Clipboard Copied! Toggle word wrap Toggle overflow root@host1 ~]# systemctl restart sssd
root@host1 ~]# systemctl restart sssd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh idm_user@host1.idm.example.com
[root@r8server ~]# ssh idm_user@host1.idm.example.com Password: Last login: Sun Jun 21 22:34:25 2020 from 192.168.122.229 [user_1234@host1 ~]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pwd
[user_1234@host1 ~]$ pwd /home/user_1234/
36.10.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage idoverrideuser hosts: ipaserver become: false gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure test user idm_user is present in idview idview_for_host1 with sshpubkey ipaidoverrideuser: ipaadmin_password: ”{{ ipaadmin_password }}" idview: idview_for_host1 anchor: idm_user sshpubkey: - ssh-rsa AAAAB3NzaC1yc2EAAADAQABAAABgQCqmVDpEX5gnSjKuv97Ay ... - name: Ensure idview_for_host1 is applied to host1.idm.example.com ipaidview: ipaadmin_password: ”{{ ipaadmin_password }}" name: idview_for_host1 host: host1.idm.example.com action: member
--- - name: Playbook to manage idoverrideuser hosts: ipaserver become: false gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure test user idm_user is present in idview idview_for_host1 with sshpubkey ipaidoverrideuser: ipaadmin_password: ”{{ ipaadmin_password }}" idview: idview_for_host1 anchor: idm_user sshpubkey: - ssh-rsa AAAAB3NzaC1yc2EAAADAQABAAABgQCqmVDpEX5gnSjKuv97Ay ... - name: Ensure idview_for_host1 is applied to host1.idm.example.com ipaidview: ipaadmin_password: ”{{ ipaadmin_password }}" name: idview_for_host1 host: host1.idm.example.com action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/inventory <path_to_playbooks_directory>/ensure-idoverrideuser-can-login-with-sshkey.yml
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/inventory <path_to_playbooks_directory>/ensure-idoverrideuser-can-login-with-sshkey.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh root@host1
$ ssh root@host1 Password:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow root@host1 ~]# sss_cache -E
root@host1 ~]# sss_cache -E
Copy to Clipboard Copied! Toggle word wrap Toggle overflow root@host1 ~]# systemctl restart sssd
root@host1 ~]# systemctl restart sssd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh -i ~/.ssh/id_rsa.pub idm_user@host1.idm.example.com
[root@r8server ~]# ssh -i ~/.ssh/id_rsa.pub idm_user@host1.idm.example.com Last login: Sun Jun 21 22:34:25 2023 from 192.168.122.229 [idm_user@host1 ~]$
36.11.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [...] # Allow initgroups to default to the setting for group. initgroups: sss [SUCCESS=merge] files
[...] # Allow initgroups to default to the setting for group. initgroups: sss [SUCCESS=merge] files
Copy to Clipboard Copied! Toggle word wrap Toggle overflow getent group audio
$ getent group audio --------------------- audio:x:63
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage idoverrideuser hosts: ipaserver become: false tasks: - name: Add aduser@addomain.com user to the Default Trust View ipaidoverrideuser: ipaadmin_password: "{{ ipaadmin_password }}" idview: "Default Trust View" anchor: aduser@addomain.com
--- - name: Playbook to manage idoverrideuser hosts: ipaserver become: false tasks: - name: Add aduser@addomain.com user to the Default Trust View ipaidoverrideuser: ipaadmin_password: "{{ ipaadmin_password }}" idview: "Default Trust View" anchor: aduser@addomain.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - name: Add the audio group with the aduser member and GID of 63 ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: audio idoverrideuser: - aduser@addomain.com gidnumber: 63
- name: Add the audio group with the aduser member and GID of 63 ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: audio idoverrideuser: - aduser@addomain.com gidnumber: 63
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory add-aduser-to-audio-group.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory add-aduser-to-audio-group.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh aduser@addomain.com@client.idm.example.com
$ ssh aduser@addomain.com@client.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow id aduser@addomain.com
$ id aduser@addomain.com uid=702801456(aduser@addomain.com) gid=63(audio) groups=63(audio)
36.12.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Ensure both local user and IdM user have access to same files hosts: ipaserver become: false gather_facts: false tasks: - name: Ensure idview_for_host1 is applied to host1.idm.example.com ipaidview: ipaadmin_password: "{{ ipaadmin_password }}" name: idview_for_host01 host: host1.idm.example.com - name: Ensure idmuser is present in idview_for_host01 with the UID of 20001 ipaidoverrideuser: ipaadmin_password: "{{ ipaadmin_password }}" idview: idview_for_host01 anchor: idm_user UID: 20001
--- - name: Ensure both local user and IdM user have access to same files hosts: ipaserver become: false gather_facts: false tasks: - name: Ensure idview_for_host1 is applied to host1.idm.example.com ipaidview: ipaadmin_password: "{{ ipaadmin_password }}" name: idview_for_host01 host: host1.idm.example.com - name: Ensure idmuser is present in idview_for_host01 with the UID of 20001 ipaidoverrideuser: ipaadmin_password: "{{ ipaadmin_password }}" idview: idview_for_host01 anchor: idm_user UID: 20001
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory ensure-idmuser-and-local-user-have-access-to-same-files.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory ensure-idmuser-and-local-user-have-access-to-same-files.yml
36.13.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Ensure both local user and IdM user have access to same files hosts: ipaserver become: false gather_facts: false tasks: - name: Ensure idview_for_host1 is applied to host01.idm.example.com ipaidview: ipaadmin_password: "{{ ipaadmin_password }}" name: idview_for_host01 host: host01.idm.example.com - name: Ensure an IdM user is present in ID view with two certificates ipaidoverrideuser: ipaadmin_password: "{{ ipaadmin_password }}" idview: idview_for_host01 anchor: idm_user certificate: - "{{ lookup('file', 'cert1.b64', rstrip=False) }}" - "{{ lookup('file', 'cert2.b64', rstrip=False) }}"
--- - name: Ensure both local user and IdM user have access to same files hosts: ipaserver become: false gather_facts: false tasks: - name: Ensure idview_for_host1 is applied to host01.idm.example.com ipaidview: ipaadmin_password: "{{ ipaadmin_password }}" name: idview_for_host01 host: host01.idm.example.com - name: Ensure an IdM user is present in ID view with two certificates ipaidoverrideuser: ipaadmin_password: "{{ ipaadmin_password }}" idview: idview_for_host01 anchor: idm_user certificate: - "{{ lookup('file', 'cert1.b64', rstrip=False) }}" - "{{ lookup('file', 'cert2.b64', rstrip=False) }}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory ensure-idmuser-present-in-idview-with-certificates.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory ensure-idmuser-present-in-idview-with-certificates.yml
36.14.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow getent group audio
$ getent group audio --------------------- audio:x:63
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to give IdM group access to sound card on IdM client hosts: ipaserver become: false tasks: - name: Ensure the audio group exists in IdM ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: audio - name: Ensure idview_for_host01 exists and is applied to host01.idm.example.com ipaidview: ipaadmin_password: ”{{ ipaadmin_password }}" name: idview_for_host01 host: host01.idm.example.com - name: Add an override for the IdM audio group with GID 63 to idview_for_host01 ipaidoverridegroup: ipaadmin_password: "{{ ipaadmin_password }}" idview: idview_for_host01 anchor: audio GID: 63
--- - name: Playbook to give IdM group access to sound card on IdM client hosts: ipaserver become: false tasks: - name: Ensure the audio group exists in IdM ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: audio - name: Ensure idview_for_host01 exists and is applied to host01.idm.example.com ipaidview: ipaadmin_password: ”{{ ipaadmin_password }}" name: idview_for_host01 host: host01.idm.example.com - name: Add an override for the IdM audio group with GID 63 to idview_for_host01 ipaidoverridegroup: ipaadmin_password: "{{ ipaadmin_password }}" idview: idview_for_host01 anchor: audio GID: 63
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory give-idm-group-access-to-sound-card-on-idm-client.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory give-idm-group-access-to-sound-card-on-idm-client.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
$ kinit admin Password:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-add testuser --first test --last user --password
$ ipa user-add testuser --first test --last user --password User login [tuser]: Password: Enter Password again to verify: ------------------ Added user "tuser" ------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-add-member --tuser audio
$ ipa group-add-member --tuser audio
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh tuser@host01.idm.example.com
$ ssh tuser@host01.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow id tuser
$ id tuser uid=702801456(tuser) gid=63(audio) groups=63(audio)
36.15.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idview-show example-view
$ ipa idview-show example-view ID View Name: example-view User object overrides: example-user1 Group object overrides: example-group
第37章
37.1.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idoverrideuser-add 'Default Trust View' ad_user@ad.example.com --gidnumber=732000006
# ipa idoverrideuser-add 'Default Trust View' ad_user@ad.example.com --gidnumber=732000006
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl cache-expire -u ad_user@ad.example.com
# sssctl cache-expire -u ad_user@ad.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow id ad_user@ad.example.com
# id ad_user@ad.example.com uid=702801456(ad_user@ad.example.com) gid=732000006(ad_admins) groups=732000006(ad_admins),702800513(domain users@ad.example.com)
37.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idview-add example_for_host1
$ ipa idview-add example_for_host1 --------------------------- Added ID View "example_for_host1" --------------------------- ID View Name: example_for_host1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idoverrideuser-add example_for_host1 ad_user@ad.example.com --gidnumber=732001337
$ ipa idoverrideuser-add example_for_host1 ad_user@ad.example.com --gidnumber=732001337 ----------------------------- Added User ID override "ad_user@ad.example.com" ----------------------------- Anchor to override: ad_user@ad.example.com GID: 732001337
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idview-apply example_for_host1 --hosts=host1.idm.example.com
$ ipa idview-apply example_for_host1 --hosts=host1.idm.example.com ----------------------------- Applied ID View "example_for_host1" ----------------------------- hosts: host1.idm.example.com --------------------------------------------- Number of hosts the ID View was applied to: 1 ---------------------------------------------
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl cache-expire -u ad_user@ad.example.com
[root@host1 ~]# sssctl cache-expire -u ad_user@ad.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh ad_user@ad.example.com@host1.idm.example.com
[root@r8server ~]# ssh ad_user@ad.example.com@host1.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ad_user@ad.example.com@host1 ~]$ id ad_user@ad.example.com uid=702801456(ad_user@ad.example.com) gid=732001337(admins2) groups=732001337(admins2),702800513(domain users@ad.example.com)
[ad_user@ad.example.com@host1 ~]$ id ad_user@ad.example.com uid=702801456(ad_user@ad.example.com) gid=732001337(admins2) groups=732001337(admins2),702800513(domain users@ad.example.com)
37.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-add --desc="Baltimore hosts" baltimore
[root@server ~]# ipa hostgroup-add --desc="Baltimore hosts" baltimore --------------------------- Added hostgroup "baltimore" --------------------------- Host-group: baltimore Description: Baltimore hosts
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-add-member --hosts={host102,host103} baltimore
[root@server ~]# ipa hostgroup-add-member --hosts={host102,host103} baltimore Host-group: baltimore Description: Baltimore hosts Member hosts: host102.idm.example.com, host103.idm.example.com ------------------------- Number of members added 2 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idview-apply --hostgroups=baltimore
[root@server ~]# ipa idview-apply --hostgroups=baltimore ID View Name: example_for_host1 ----------------------------------------- Applied ID View "example_for_host1" ----------------------------------------- hosts: host102.idm.example.com, host103.idm.example.com --------------------------------------------- Number of hosts the ID View was applied to: 2 ---------------------------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-add-member --hosts=somehost.idm.example.com baltimore
[root@server ~]# ipa hostgroup-add-member --hosts=somehost.idm.example.com baltimore Host-group: baltimore Description: Baltimore hosts Member hosts: host102.idm.example.com, host103.idm.example.com,somehost.idm.example.com ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idview-show example_for_host1 --all
[root@server ~]# ipa idview-show example_for_host1 --all dn: cn=example_for_host1,cn=views,cn=accounts,dc=idm,dc=example,dc=com ID View Name: example_for_host1 [...] Hosts the view applies to: host102.idm.example.com, host103.idm.example.com objectclass: ipaIDView, top, nsContainer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idview-apply --host=somehost.idm.example.com
[root@server ~]# ipa idview-apply --host=somehost.idm.example.com ID View Name: example_for_host1 ----------------------------------------- Applied ID View "example_for_host1" ----------------------------------------- hosts: somehost.idm.example.com --------------------------------------------- Number of hosts the ID View was applied to: 1 ---------------------------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idview-show example_for_host1 --all
[root@server ~]# ipa idview-show example_for_host1 --all dn: cn=example_for_host1,cn=views,cn=accounts,dc=idm,dc=example,dc=com ID View Name: example_for_host1 [...] Hosts the view applies to: host102.idm.example.com, host103.idm.example.com, somehost.idm.example.com objectclass: ipaIDView, top, nsContainer
第38章
38.1.
38.2.
38.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idrange-find
# ipa idrange-find --------------- 1 range matched --------------- Range name: IDM.EXAMPLE.COM_id_range First Posix ID of the range: 882200000 Number of IDs in the range: 200000 Range type: local domain range ---------------------------- Number of entries returned 1 ----------------------------
38.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idrange-add IDM.EXAMPLE.COM_new_range --base-id 5000 --range-size 1000 --rid-base 300000 --secondary-rid-base 1300000 --type ipa-local
# ipa idrange-add IDM.EXAMPLE.COM_new_range --base-id 5000 --range-size 1000 --rid-base 300000 --secondary-rid-base 1300000 --type ipa-local ipa: WARNING: Service dirsrv@IDM-EXAMPLE-COM.service requires restart on IPA server <all IPA servers> to apply configuration changes. ------------------------------------------ Added ID range "IDM.EXAMPLE.COM_new_range" ------------------------------------------ Range name: IDM.EXAMPLE.COM_new_range First Posix ID of the range: 5000 Number of IDs in the range: 1000 First RID of the corresponding RID range: 300000 First RID of the secondary RID range: 1300000 Range type: local domain range
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart dirsrv@IDM-EXAMPLE-COM.service
# systemctl restart dirsrv@IDM-EXAMPLE-COM.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sss_cache -E
# sss_cache -E
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart sssd
# systemctl restart sssd
注記
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idrange-find
# ipa idrange-find ---------------- 2 ranges matched ---------------- Range name: IDM.EXAMPLE.COM_id_range First Posix ID of the range: 882200000 Number of IDs in the range: 200000 Range type: local domain range Range name: IDM.EXAMPLE.COM_new_range First Posix ID of the range: 5000 Number of IDs in the range: 1000 First RID of the corresponding RID range: 300000 First RID of the secondary RID range: 1300000 Range type: local domain range ---------------------------- Number of entries returned 2 ----------------------------
38.5.
ipa idrange-show IDM.EXAMPLE.COM_id_range
$ ipa idrange-show IDM.EXAMPLE.COM_id_range
Range name: IDM.EXAMPLE.COM_id_range
First Posix ID of the range: 196600000
Number of IDs in the range: 200000
First RID of the corresponding RID range: 1000
First RID of the secondary RID range: 1000000
Range type: local domain range
38.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage idrange hosts: ipaserver become: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure local idrange is present ipaidrange: ipaadmin_password: "{{ ipaadmin_password }}" name: new_id_range base_id: 12000000 range_size: 200000 rid_base: 1000000 secondary_rid_base: 200000000
--- - name: Playbook to manage idrange hosts: ipaserver become: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure local idrange is present ipaidrange: ipaadmin_password: "{{ ipaadmin_password }}" name: new_id_range base_id: 12000000 range_size: 200000 rid_base: 1000000 secondary_rid_base: 200000000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory idrange-present.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory idrange-present.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart dirsrv@IDM.EXAMPLE.COM.service
# systemctl restart dirsrv@IDM.EXAMPLE.COM.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sss_cache -E
# sss_cache -E
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart sssd
# systemctl restart sssd
注記
ipa idrange-find
# ipa idrange-find
----------------
2 ranges matched
----------------
Range name: IDM.EXAMPLE.COM_id_range
First Posix ID of the range: 882200000
Number of IDs in the range: 200000
Range type: local domain range
Range name: IDM.EXAMPLE.COM_new_id_range
First Posix ID of the range: 12000000
Number of IDs in the range: 200000
Range type: local domain range
----------------------------
Number of entries returned 2
----------------------------
38.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idrange-find
[root@server ~]# ipa idrange-find
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idrange-del AD.EXAMPLE.COM_id_range
[root@server ~]# ipa idrange-del AD.EXAMPLE.COM_id_range
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart sssd
[root@server ~]# systemctl restart sssd
38.8.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-replica-manage dnarange-show ipa-replica-manage dnarange-show serverA.example.com
# ipa-replica-manage dnarange-show serverA.example.com: 1001-1500 serverB.example.com: 1501-2000 serverC.example.com: No range set # ipa-replica-manage dnarange-show serverA.example.com serverA.example.com: 1001-1500
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-replica-manage dnanextrange-show ipa-replica-manage dnanextrange-show serverA.example.com
# ipa-replica-manage dnanextrange-show serverA.example.com: 2001-2500 serverB.example.com: No on-deck range set serverC.example.com: No on-deck range set # ipa-replica-manage dnanextrange-show serverA.example.com serverA.example.com: 2001-2500
38.9.
38.10.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-replica-manage dnarange-set serverA.example.com 1250-1499
# ipa-replica-manage dnarange-set serverA.example.com 1250-1499
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-replica-manage dnanextrange-set serverB.example.com 1500-5000
# ipa-replica-manage dnanextrange-set serverB.example.com 1500-5000
第39章
39.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa subid-find
# ipa subid-find
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa subid-generate --owner=idmuser
# ipa subid-generate --owner=idmuser Added subordinate id "359dfcef-6b76-4911-bd37-bb5b66b8c418" Unique ID: 359dfcef-6b76-4911-bd37-bb5b66b8c418 Description: auto-assigned subid Owner: idmuser SubUID range start: 2147483648 SubUID range size: 65536 SubGID range start: 2147483648 SubGID range size: 65536
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /usr/libexec/ipa/ipa-subids --all-users
# /usr/libexec/ipa/ipa-subids --all-users Found 2 user(s) without subordinate ids Processing user 'user4' (1/2) Processing user 'user5' (2/2) Updated 2 user(s) The ipa-subids command was successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa config-mod --user-default-subid=True
# ipa config-mod --user-default-subid=True
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa subid-find --owner=idmuser
# ipa subid-find --owner=idmuser 1 subordinate id matched Unique ID: 359dfcef-6b76-4911-bd37-bb5b66b8c418 Owner: idmuser SubUID range start: 2147483648 SubUID range size: 65536 SubGID range start: 2147483648 SubGID range size: 65536 Number of entries returned 1
39.2.
39.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa subid-show 359dfcef-6b76-4911-bd37-bb5b66b8c418
$ ipa subid-show 359dfcef-6b76-4911-bd37-bb5b66b8c418 Unique ID: 359dfcef-6b76-4911-bd37-bb5b66b8c418 Owner: idmuser SubUID range start: 2147483648 SubUID range size: 65536 SubGID range start: 2147483648 SubGID range size: 65536
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa subid-match --subuid=2147483670
$ ipa subid-match --subuid=2147483670 1 subordinate id matched Unique ID: 359dfcef-6b76-4911-bd37-bb5b66b8c418 Owner: uid=idmuser SubUID range start: 2147483648 SubUID range size: 65536 SubGID range start: 2147483648 SubGID range size: 65536 Number of entries returned 1
39.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [...] subid: sss
[...] subid: sss
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow getsubids idmuser
$ getsubids idmuser 0: idmuser 2147483648 65536
第40章
40.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/topology/add-topologysegment.yml add-topologysegment-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/add-topologysegment.yml add-topologysegment-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to handle topologysegment hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Add topology segment ipatopologysegment: ipaadmin_password: "{{ ipaadmin_password }}" suffix: domain left: server.idm.example.com right: replica.idm.example.com state: present
--- - name: Playbook to handle topologysegment hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Add topology segment ipatopologysegment: ipaadmin_password: "{{ ipaadmin_password }}" suffix: domain left: server.idm.example.com right: replica.idm.example.com state: present
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory add-topologysegment-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory add-topologysegment-copy.yml
40.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/topology/add-topologysegments.yml add-topologysegments-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/add-topologysegments.yml add-topologysegments-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Add topology segments hosts: ipaserver gather_facts: false vars: ipaadmin_password: "{{ ipaadmin_password }}" ipatopology_segments: - {suffix: domain, left: replica1.idm.example.com , right: replica2.idm.example.com } - {suffix: domain, left: replica2.idm.example.com , right: replica3.idm.example.com } - {suffix: domain, left: replica3.idm.example.com , right: replica4.idm.example.com } - {suffix: domain+ca, left: replica4.idm.example.com , right: replica1.idm.example.com } vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Add topology segment ipatopologysegment: ipaadmin_password: "{{ ipaadmin_password }}" suffix: "{{ item.suffix }}" name: "{{ item.name | default(omit) }}" left: "{{ item.left }}" right: "{{ item.right }}" state: present loop: "{{ ipatopology_segments | default([]) }}"
--- - name: Add topology segments hosts: ipaserver gather_facts: false vars: ipaadmin_password: "{{ ipaadmin_password }}" ipatopology_segments: - {suffix: domain, left: replica1.idm.example.com , right: replica2.idm.example.com } - {suffix: domain, left: replica2.idm.example.com , right: replica3.idm.example.com } - {suffix: domain, left: replica3.idm.example.com , right: replica4.idm.example.com } - {suffix: domain+ca, left: replica4.idm.example.com , right: replica1.idm.example.com } vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Add topology segment ipatopologysegment: ipaadmin_password: "{{ ipaadmin_password }}" suffix: "{{ item.suffix }}" name: "{{ item.name | default(omit) }}" left: "{{ item.left }}" right: "{{ item.right }}" state: present loop: "{{ ipatopology_segments | default([]) }}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory add-topologysegments-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory add-topologysegments-copy.yml
40.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/topology/check-topologysegments.yml check-topologysegments-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/check-topologysegments.yml check-topologysegments-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Add topology segments hosts: ipaserver gather_facts: false vars: ipaadmin_password: "{{ ipaadmin_password }}" ipatopology_segments: - {suffix: domain, left: replica1.idm.example.com, right: replica2.idm.example.com } - {suffix: domain, left: replica2.idm.example.com , right: replica3.idm.example.com } - {suffix: domain, left: replica3.idm.example.com , right: replica4.idm.example.com } - {suffix: domain+ca, left: replica4.idm.example.com , right: replica1.idm.example.com } vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Check topology segment ipatopologysegment: ipaadmin_password: "{{ ipaadmin_password }}" suffix: "{{ item.suffix }}" name: "{{ item.name | default(omit) }}" left: "{{ item.left }}" right: "{{ item.right }}" state: checked loop: "{{ ipatopology_segments | default([]) }}"
--- - name: Add topology segments hosts: ipaserver gather_facts: false vars: ipaadmin_password: "{{ ipaadmin_password }}" ipatopology_segments: - {suffix: domain, left: replica1.idm.example.com, right: replica2.idm.example.com } - {suffix: domain, left: replica2.idm.example.com , right: replica3.idm.example.com } - {suffix: domain, left: replica3.idm.example.com , right: replica4.idm.example.com } - {suffix: domain+ca, left: replica4.idm.example.com , right: replica1.idm.example.com } vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Check topology segment ipatopologysegment: ipaadmin_password: "{{ ipaadmin_password }}" suffix: "{{ item.suffix }}" name: "{{ item.name | default(omit) }}" left: "{{ item.left }}" right: "{{ item.right }}" state: checked loop: "{{ ipatopology_segments | default([]) }}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory check-topologysegments-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory check-topologysegments-copy.yml
40.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/topology/ verify-topologysuffix.yml verify-topologysuffix-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/ verify-topologysuffix.yml verify-topologysuffix-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to handle topologysuffix hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Verify topology suffix ipatopologysuffix: ipaadmin_password: "{{ ipaadmin_password }}" suffix: domain state: verified
--- - name: Playbook to handle topologysuffix hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Verify topology suffix ipatopologysuffix: ipaadmin_password: "{{ ipaadmin_password }}" suffix: domain state: verified
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory verify-topologysuffix-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory verify-topologysuffix-copy.yml
40.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/topology/reinitialize-topologysegment.yml reinitialize-topologysegment-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/reinitialize-topologysegment.yml reinitialize-topologysegment-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to handle topologysegment hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Reinitialize topology segment ipatopologysegment: ipaadmin_password: "{{ ipaadmin_password }}" suffix: domain left: server.idm.example.com right: replica.idm.example.com direction: left-to-right state: reinitialized
--- - name: Playbook to handle topologysegment hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Reinitialize topology segment ipatopologysegment: ipaadmin_password: "{{ ipaadmin_password }}" suffix: domain left: server.idm.example.com right: replica.idm.example.com direction: left-to-right state: reinitialized
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory reinitialize-topologysegment-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory reinitialize-topologysegment-copy.yml
40.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/topology/delete-topologysegment.yml delete-topologysegment-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/topology/delete-topologysegment.yml delete-topologysegment-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to handle topologysegment hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Delete topology segment ipatopologysegment: ipaadmin_password: "{{ ipaadmin_password }}" suffix: domain left: replica01.idm.example.com right: replica02.idm.example.com: state: absent
--- - name: Playbook to handle topologysegment hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Delete topology segment ipatopologysegment: ipaadmin_password: "{{ ipaadmin_password }}" suffix: domain left: replica01.idm.example.com right: replica02.idm.example.com: state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory delete-topologysegment-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory delete-topologysegment-copy.yml
40.7.
第41章
41.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
$ kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-add provisionator --first=provisioning --last=account --password
$ ipa user-add provisionator --first=provisioning --last=account --password
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa role-add --desc "Responsible for provisioning stage users" "System Provisioning"
$ ipa role-add --desc "Responsible for provisioning stage users" "System Provisioning"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa role-add-privilege "System Provisioning" --privileges="Stage User Provisioning"
$ ipa role-add-privilege "System Provisioning" --privileges="Stage User Provisioning"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa role-add-member --users=provisionator "System Provisioning"
$ ipa role-add-member --users=provisionator "System Provisioning"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-find provisionator --all --raw
$ ipa user-find provisionator --all --raw -------------- 1 user matched -------------- dn: uid=provisionator,cn=users,cn=accounts,dc=idm,dc=example,dc=com uid: provisionator [...]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-add activator --first=activation --last=account --password
$ ipa user-add activator --first=activation --last=account --password
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa role-add-member --users=activator "User Administrator"
$ ipa role-add-member --users=activator "User Administrator"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-add application-accounts
$ ipa group-add application-accounts
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa pwpolicy-add application-accounts --maxlife=10000 --minlife=0 --history=0 --minclasses=4 --minlength=8 --priority=1 --maxfail=0 --failinterval=1 --lockouttime=0
$ ipa pwpolicy-add application-accounts --maxlife=10000 --minlife=0 --history=0 --minclasses=4 --minlength=8 --priority=1 --maxfail=0 --failinterval=1 --lockouttime=0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa pwpolicy-show application-accounts
$ ipa pwpolicy-show application-accounts Group: application-accounts Max lifetime (days): 10000 Min lifetime (hours): 0 History size: 0 [...]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-add-member application-accounts --users={provisionator,activator}
$ ipa group-add-member application-accounts --users={provisionator,activator}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kpasswd provisionator kpasswd activator
$ kpasswd provisionator $ kpasswd activator
41.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-getkeytab -s server.idm.example.com -p "activator" -k /etc/krb5.ipa-activation.keytab
# ipa-getkeytab -s server.idm.example.com -p "activator" -k /etc/krb5.ipa-activation.keytab
Copy to Clipboard Copied! Toggle word wrap Toggle overflow #!/bin/bash kinit -k -i activator ipa stageuser-find --all --raw | grep " uid:" | cut -d ":" -f 2 | while read uid; do ipa stageuser-activate ${uid}; done
#!/bin/bash kinit -k -i activator ipa stageuser-find --all --raw | grep " uid:" | cut -d ":" -f 2 | while read uid; do ipa stageuser-activate ${uid}; done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chmod 755 /usr/local/sbin/ipa-activate-all chown root:root /usr/local/sbin/ipa-activate-all
# chmod 755 /usr/local/sbin/ipa-activate-all # chown root:root /usr/local/sbin/ipa-activate-all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [Unit] Description=Scan IdM every minute for any stage users that must be activated [Service] Environment=KRB5_CLIENT_KTNAME=/etc/krb5.ipa-activation.keytab Environment=KRB5CCNAME=FILE:/tmp/krb5cc_ipa-activate-all ExecStart=/usr/local/sbin/ipa-activate-all
[Unit] Description=Scan IdM every minute for any stage users that must be activated [Service] Environment=KRB5_CLIENT_KTNAME=/etc/krb5.ipa-activation.keytab Environment=KRB5CCNAME=FILE:/tmp/krb5cc_ipa-activate-all ExecStart=/usr/local/sbin/ipa-activate-all
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [Unit] Description=Scan IdM every minute for any stage users that must be activated [Timer] OnBootSec=15min OnUnitActiveSec=1min [Install] WantedBy=multi-user.target
[Unit] Description=Scan IdM every minute for any stage users that must be activated [Timer] OnBootSec=15min OnUnitActiveSec=1min [Install] WantedBy=multi-user.target
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl daemon-reload
# systemctl daemon-reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl enable ipa-activate-all.timer
# systemctl enable ipa-activate-all.timer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl start ipa-activate-all.timer
# systemctl start ipa-activate-all.timer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl status ipa-activate-all.timer
# systemctl status ipa-activate-all.timer ● ipa-activate-all.timer - Scan IdM every minute for any stage users that must be activated Loaded: loaded (/etc/systemd/system/ipa-activate-all.timer; enabled; vendor preset: disabled) Active: active (waiting) since Wed 2020-06-10 16:34:55 CEST; 15s ago Trigger: Wed 2020-06-10 16:35:55 CEST; 44s left Jun 10 16:34:55 server.idm.example.com systemd[1]: Started Scan IdM every minute for any stage users that must be activated.
41.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dn: uid=stageidmuser,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com changetype: add objectClass: top objectClass: inetorgperson uid: stageidmuser sn: surname givenName: first_name cn: full_name
dn: uid=stageidmuser,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com changetype: add objectClass: top objectClass: inetorgperson uid: stageidmuser sn: surname givenName: first_name cn: full_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow scp add-stageidmuser.ldif provisionator@server.idm.example.com:/provisionator/
$ scp add-stageidmuser.ldif provisionator@server.idm.example.com:/provisionator/ Password: add-stageidmuser.ldif 100% 364 217.6KB/s 00:00
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh provisionator@server.idm.example.com
$ ssh provisionator@server.idm.example.com Password: [provisionator@server ~]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit provisionator
[provisionator@server ~]$ kinit provisionator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ~]$ ldapadd -h server.idm.example.com -p 389 -f add-stageidmuser.ldif SASL/GSSAPI authentication started SASL username: provisionator@IDM.EXAMPLE.COM SASL SSF: 256 SASL data security layer installed. adding the entry "uid=stageidmuser,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com"
~]$ ldapadd -h server.idm.example.com -p 389 -f add-stageidmuser.ldif SASL/GSSAPI authentication started SASL username: provisionator@IDM.EXAMPLE.COM SASL SSF: 256 SASL data security layer installed. adding the entry "uid=stageidmuser,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com"
41.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh provisionator@server.idm.example.com
$ ssh provisionator@server.idm.example.com Password: [provisionator@server ~]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit provisionator
$ kinit provisionator
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ldapmodify -h server.idm.example.com -p 389 -Y GSSAPI
# ldapmodify -h server.idm.example.com -p 389 -Y GSSAPI SASL/GSSAPI authentication started SASL username: provisionator@IDM.EXAMPLE.COM SASL SSF: 56 SASL data security layer installed.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dn: uid=stageuser,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com
dn: uid=stageuser,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow changetype: add
changetype: add
Copy to Clipboard Copied! Toggle word wrap Toggle overflow objectClass: top objectClass: inetorgperson
objectClass: top objectClass: inetorgperson
Copy to Clipboard Copied! Toggle word wrap Toggle overflow uid: stageuser
uid: stageuser
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cn: Babs Jensen
cn: Babs Jensen
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sn: Jensen
sn: Jensen
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [Enter] adding new entry "uid=stageuser,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com"
[Enter] adding new entry "uid=stageuser,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa stageuser-show stageuser --all --raw
$ ipa stageuser-show stageuser --all --raw dn: uid=stageuser,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com uid: stageuser sn: Jensen cn: Babs Jensen has_password: FALSE has_keytab: FALSE nsaccountlock: TRUE objectClass: top objectClass: inetorgperson objectClass: organizationalPerson objectClass: person
41.5.
第42章
42.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dn: uid=user_login,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com changetype: add objectClass: top objectClass: inetorgperson uid: user_login sn: surname givenName: first_name cn: full_name
dn: uid=user_login,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com changetype: add objectClass: top objectClass: inetorgperson uid: user_login sn: surname givenName: first_name cn: full_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dn: uid=user_login,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com changetype: add objectClass: top objectClass: person objectClass: inetorgperson objectClass: organizationalperson objectClass: posixaccount uid: user_login uidNumber: UID_number gidNumber: GID_number sn: surname givenName: first_name cn: full_name homeDirectory: /home/user_login
dn: uid=user_login,cn=staged users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com changetype: add objectClass: top objectClass: person objectClass: inetorgperson objectClass: organizationalperson objectClass: posixaccount uid: user_login uidNumber: UID_number gidNumber: GID_number sn: surname givenName: first_name cn: full_name homeDirectory: /home/user_login
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dn: distinguished_name changetype: modify replace: attribute_to_modify attribute_to_modify: new_value
dn: distinguished_name changetype: modify replace: attribute_to_modify attribute_to_modify: new_value
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dn: distinguished_name changetype: modify replace: nsAccountLock nsAccountLock: TRUE
dn: distinguished_name changetype: modify replace: nsAccountLock nsAccountLock: TRUE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dn: distinguished_name changetype: modify replace: nsAccountLock nsAccountLock: FALSE
dn: distinguished_name changetype: modify replace: nsAccountLock nsAccountLock: FALSE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dn: distinguished_name changetype: modrdn newrdn: uid=user_login deleteoldrdn: 0 newsuperior: cn=deleted users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com
dn: distinguished_name changetype: modrdn newrdn: uid=user_login deleteoldrdn: 0 newsuperior: cn=deleted users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com
[...] # ldapsearch -LLL -x -D "uid=user_allowed_to_modify_user_entries,cn=users,cn=accounts,dc=idm,dc=example,dc=com" -w "Secret123" -H ldap://r8server.idm.example.com -b "cn=users,cn=accounts,dc=idm,dc=example,dc=com" uid=test_user dn: uid=test_user,cn=users,cn=accounts,dc=idm,dc=example,dc=com memberOf: cn=ipausers,cn=groups,cn=accounts,dc=idm,dc=example,dc=com
[...]
# ldapsearch -LLL -x -D "uid=user_allowed_to_modify_user_entries,cn=users,cn=accounts,dc=idm,dc=example,dc=com" -w "Secret123" -H ldap://r8server.idm.example.com -b "cn=users,cn=accounts,dc=idm,dc=example,dc=com" uid=test_user
dn: uid=test_user,cn=users,cn=accounts,dc=idm,dc=example,dc=com
memberOf: cn=ipausers,cn=groups,cn=accounts,dc=idm,dc=example,dc=com
42.2.
dn: cn=group_name,cn=groups,cn=accounts,dc=idm,dc=example,dc=com changetype: add objectClass: top objectClass: ipaobject objectClass: ipausergroup objectClass: groupofnames objectClass: nestedgroup objectClass: posixgroup uid: group_name cn: group_name gidNumber: GID_number
dn: cn=group_name,cn=groups,cn=accounts,dc=idm,dc=example,dc=com
changetype: add
objectClass: top
objectClass: ipaobject
objectClass: ipausergroup
objectClass: groupofnames
objectClass: nestedgroup
objectClass: posixgroup
uid: group_name
cn: group_name
gidNumber: GID_number
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dn: group_distinguished_name changetype: delete
dn: group_distinguished_name changetype: delete
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dn: group_distinguished_name changetype: modify add: member member: uid=user_login,cn=users,cn=accounts,dc=idm,dc=example,dc=com
dn: group_distinguished_name changetype: modify add: member member: uid=user_login,cn=users,cn=accounts,dc=idm,dc=example,dc=com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dn: distinguished_name changetype: modify delete: member member: uid=user_login,cn=users,cn=accounts,dc=idm,dc=example,dc=com
dn: distinguished_name changetype: modify delete: member member: uid=user_login,cn=users,cn=accounts,dc=idm,dc=example,dc=com
ldapsearch -YGSSAPI -H ldap://server.idm.example.com -b "cn=groups,cn=accounts,dc=idm,dc=example,dc=com" "cn=group_name"
# ldapsearch -YGSSAPI -H ldap://server.idm.example.com -b "cn=groups,cn=accounts,dc=idm,dc=example,dc=com" "cn=group_name"
dn: cn=group_name,cn=groups,cn=accounts,dc=idm,dc=example,dc=com
ipaNTSecurityIdentifier: S-1-5-21-1650388524-2605035987-2578146103-11017
cn: testgroup
objectClass: top
objectClass: groupofnames
objectClass: nestedgroup
objectClass: ipausergroup
objectClass: ipaobject
objectClass: posixgroup
objectClass: ipantgroupattrs
ipaUniqueID: 569bf864-9d45-11ea-bea3-525400f6f085
gidNumber: 1997010017
42.3.
例42.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ldapmodify -Y GSSAPI -H ldap://server.example.com
# ldapmodify -Y GSSAPI -H ldap://server.example.com dn: uid=testuser,cn=users,cn=accounts,dc=example,dc=com changetype: modify replace: telephoneNumber telephonenumber: 88888888
例42.2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ldapmodify -Y GSSAPI -H ldap://server.example.com -f ~/example.ldif
# ldapmodify -Y GSSAPI -H ldap://server.example.com -f ~/example.ldif
42.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
$ kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ldapmodify -Y GSSAPI
# ldapmodify -Y GSSAPI SASL/GSSAPI authentication started SASL username: admin@IDM.EXAMPLE.COM SASL SSF: 256 SASL data security layer installed.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dn: uid=user1,cn=users,cn=accounts,dc=idm,dc=example,dc=com
dn: uid=user1,cn=users,cn=accounts,dc=idm,dc=example,dc=com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow changetype: modrdn
changetype: modrdn
Copy to Clipboard Copied! Toggle word wrap Toggle overflow newrdn: uid=user1
newrdn: uid=user1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow deleteoldrdn: 0
deleteoldrdn: 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow newsuperior: cn=deleted users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com
newsuperior: cn=deleted users,cn=accounts,cn=provisioning,dc=idm,dc=example,dc=com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [Enter] modifying rdn of entry "uid=user1,cn=users,cn=accounts,dc=idm,dc=example,dc=com"
[Enter] modifying rdn of entry "uid=user1,cn=users,cn=accounts,dc=idm,dc=example,dc=com"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-find --preserved=true
$ ipa user-find --preserved=true -------------- 1 user matched -------------- User login: user1 First name: First 1 Last name: Last 1 Home directory: /home/user1 Login shell: /bin/sh Principal name: user1@IDM.EXAMPLE.COM Principal alias: user1@IDM.EXAMPLE.COM Email address: user1@idm.example.com UID: 1997010003 GID: 1997010003 Account disabled: True Preserved user: True ---------------------------- Number of entries returned 1 ----------------------------
第43章
43.1.
43.2.
43.3.
43.4.
表43.1 表43.2
43.5.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43.6.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
43.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa host-add client1.example.com
$ ipa host-add client1.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa host-add --ip-address=192.168.166.31 client1.example.com
$ ipa host-add --ip-address=192.168.166.31 client1.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa host-add --force client1.example.com
$ ipa host-add --force client1.example.com
43.8.
ipa host-del --updatedns client1.example.com
$ ipa host-del --updatedns client1.example.com
43.9.
43.9.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin ipa host-disable client.example.com
$ kinit admin $ ipa host-disable client.example.com
43.9.2.
ipa-getkeytab -s server.example.com -p host/client.example.com -k /etc/krb5.keytab -D "cn=directory manager" -w password
$ ipa-getkeytab -s server.example.com -p host/client.example.com -k /etc/krb5.keytab -D "cn=directory manager" -w password
43.10.
43.10.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa service-add-host principal --hosts=<hostname>
ipa service-add-host principal --hosts=<hostname>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa service-add HTTP/web.example.com ipa service-add-host HTTP/web.example.com --hosts=client1.example.com
[root@server ~]# ipa service-add HTTP/web.example.com [root@server ~]# ipa service-add-host HTTP/web.example.com --hosts=client1.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit -kt /etc/krb5.keytab host/client1.example.com ipa-getkeytab -s server.example.com -k /tmp/test.keytab -p HTTP/web.example.com
[root@client1 ~]# kinit -kt /etc/krb5.keytab host/client1.example.com [root@client1 ~]# ipa-getkeytab -s server.example.com -k /tmp/test.keytab -p HTTP/web.example.com Keytab successfully retrieved and stored in: /tmp/test.keytab
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit -kt /etc/krb5.keytab host/client1.example.com openssl req -newkey rsa:2048 -subj '/CN=web.example.com/O=EXAMPLE.COM' -keyout /etc/pki/tls/web.key -out /tmp/web.csr -nodes
[root@client1]# kinit -kt /etc/krb5.keytab host/client1.example.com [root@client1]# openssl req -newkey rsa:2048 -subj '/CN=web.example.com/O=EXAMPLE.COM' -keyout /etc/pki/tls/web.key -out /tmp/web.csr -nodes Generating a 2048 bit RSA private key .............................................................+++ ............................................................................................+++ Writing new private key to '/etc/pki/tls/private/web.key'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa cert-request --principal=HTTP/web.example.com web.csr
[root@client1]# ipa cert-request --principal=HTTP/web.example.com web.csr Certificate: MIICETCCAXqgA...[snip] Subject: CN=web.example.com,O=EXAMPLE.COM Issuer: CN=EXAMPLE.COM Certificate Authority Not Before: Tue Feb 08 18:51:51 2011 UTC Not After: Mon Feb 08 18:51:51 2016 UTC Serial number: 1005
43.10.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
[root@server ~]# kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa host-add-managedby client2.example.com --hosts=client1.example.com
[root@server ~]# ipa host-add-managedby client2.example.com --hosts=client1.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit -kt /etc/krb5.keytab host/client1.example.com
[root@client1 ~]# kinit -kt /etc/krb5.keytab host/client1.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-getkeytab -s server.example.com -k /tmp/client2.keytab -p host/client2.example.com
[root@client1 ~]# ipa-getkeytab -s server.example.com -k /tmp/client2.keytab -p host/client2.example.com Keytab successfully retrieved and stored in: /tmp/client2.keytab
43.10.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit -kt /etc/krb5.keytab host/ipa.example.com@EXAMPLE.COM
[root@server ~]# kinit -kt /etc/krb5.keytab host/ipa.example.com@EXAMPLE.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit -kt /etc/httpd/conf/krb5.keytab HTTP/ipa.example.com@EXAMPLE.COM
[root@server ~]# kinit -kt /etc/httpd/conf/krb5.keytab HTTP/ipa.example.com@EXAMPLE.COM
43.11.
第44章
44.1.
44.2.
44.3.
44.4.
表44.1 表44.2
44.5.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
44.6.
図44.1
[D]注記
第45章
45.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Host present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Host host01.idm.example.com present ipahost: ipaadmin_password: "{{ ipaadmin_password }}" name: host01.idm.example.com state: present force: true
--- - name: Host present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Host host01.idm.example.com present ipahost: ipaadmin_password: "{{ ipaadmin_password }}" name: host01.idm.example.com state: present force: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-is-present.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-is-present.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh admin@server.idm.example.com
$ ssh admin@server.idm.example.com Password:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa host-show host01.idm.example.com
$ ipa host-show host01.idm.example.com Host name: host01.idm.example.com Principal name: host/host01.idm.example.com@IDM.EXAMPLE.COM Principal alias: host/host01.idm.example.com@IDM.EXAMPLE.COM Password: False Keytab: False Managed by: host01.idm.example.com
45.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Host present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure host01.idm.example.com is present ipahost: ipaadmin_password: "{{ ipaadmin_password }}" name: host01.idm.example.com description: Example host ip_address: 192.168.0.123 locality: Lab ns_host_location: Lab ns_os_version: RHEL 7 ns_hardware_platform: Lenovo T61 mac_address: - "08:00:27:E3:B1:2D" - "52:54:00:BD:97:1E" state: present
--- - name: Host present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure host01.idm.example.com is present ipahost: ipaadmin_password: "{{ ipaadmin_password }}" name: host01.idm.example.com description: Example host ip_address: 192.168.0.123 locality: Lab ns_host_location: Lab ns_os_version: RHEL 7 ns_hardware_platform: Lenovo T61 mac_address: - "08:00:27:E3:B1:2D" - "52:54:00:BD:97:1E" state: present
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-is-present.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-is-present.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh admin@server.idm.example.com
$ ssh admin@server.idm.example.com Password:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa host-show host01.idm.example.com
$ ipa host-show host01.idm.example.com Host name: host01.idm.example.com Description: Example host Locality: Lab Location: Lab Platform: Lenovo T61 Operating system: RHEL 7 Principal name: host/host01.idm.example.com@IDM.EXAMPLE.COM Principal alias: host/host01.idm.example.com@IDM.EXAMPLE.COM MAC address: 08:00:27:E3:B1:2D, 52:54:00:BD:97:1E Password: False Keytab: False Managed by: host01.idm.example.com
45.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Ensure hosts with random password hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Hosts host01.idm.example.com and host02.idm.example.com present with random passwords ipahost: ipaadmin_password: "{{ ipaadmin_password }}" hosts: - name: host01.idm.example.com random: true force: true - name: host02.idm.example.com random: true force: true register: ipahost
--- - name: Ensure hosts with random password hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Hosts host01.idm.example.com and host02.idm.example.com present with random passwords ipahost: ipaadmin_password: "{{ ipaadmin_password }}" hosts: - name: host01.idm.example.com random: true force: true - name: host02.idm.example.com random: true force: true register: ipahost
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-are-present.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-are-present.yml [...] TASK [Hosts host01.idm.example.com and host02.idm.example.com present with random passwords] changed: [r8server.idm.example.com] => {"changed": true, "host": {"host01.idm.example.com": {"randompassword": "0HoIRvjUdH0Ycbf6uYdWTxH"}, "host02.idm.example.com": {"randompassword": "5VdLgrf3wvojmACdHC3uA3s"}}}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh admin@server.idm.example.com
$ ssh admin@server.idm.example.com Password:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa host-show host01.idm.example.com
$ ipa host-show host01.idm.example.com Host name: host01.idm.example.com Password: True Keytab: False Managed by: host01.idm.example.com
45.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Host member IP addresses present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure host101.example.com IP addresses present ipahost: ipaadmin_password: "{{ ipaadmin_password }}" name: host01.idm.example.com ip_address: - 192.168.0.123 - fe80::20c:29ff:fe02:a1b3 - 192.168.0.124 - fe80::20c:29ff:fe02:a1b4 force: true
--- - name: Host member IP addresses present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure host101.example.com IP addresses present ipahost: ipaadmin_password: "{{ ipaadmin_password }}" name: host01.idm.example.com ip_address: - 192.168.0.123 - fe80::20c:29ff:fe02:a1b3 - 192.168.0.124 - fe80::20c:29ff:fe02:a1b4 force: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-with-multiple-IP-addreses-is-present.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-with-multiple-IP-addreses-is-present.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh admin@server.idm.example.com
$ ssh admin@server.idm.example.com Password:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa host-show host01.idm.example.com
$ ipa host-show host01.idm.example.com Principal name: host/host01.idm.example.com@IDM.EXAMPLE.COM Principal alias: host/host01.idm.example.com@IDM.EXAMPLE.COM Password: False Keytab: False Managed by: host01.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa dnsrecord-show idm.example.com host01
$ ipa dnsrecord-show idm.example.com host01 [...] Record name: host01 A record: 192.168.0.123, 192.168.0.124 AAAA record: fe80::20c:29ff:fe02:a1b3, fe80::20c:29ff:fe02:a1b4
45.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Host absent hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Host host01.idm.example.com absent ipahost: ipaadmin_password: "{{ ipaadmin_password }}" name: host01.idm.example.com updatedns: true state: absent
--- - name: Host absent hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Host host01.idm.example.com absent ipahost: ipaadmin_password: "{{ ipaadmin_password }}" name: host01.idm.example.com updatedns: true state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-absent.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-host-absent.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh admin@server.idm.example.com
$ ssh admin@server.idm.example.com Password: [admin@server /]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa host-show host01.idm.example.com
$ ipa host-show host01.idm.example.com ipa: ERROR: host01.idm.example.com: host not found
45.6.
第46章
46.1.
46.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-find
$ ipa hostgroup-find ------------------- 1 hostgroup matched ------------------- Host-group: ipaservers Description: IPA server hosts ---------------------------- Number of entries returned 1 ----------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-find --all
$ ipa hostgroup-find --all ------------------- 1 hostgroup matched ------------------- dn: cn=ipaservers,cn=hostgroups,cn=accounts,dc=idm,dc=local Host-group: ipaservers Description: IPA server hosts Member hosts: xxx.xxx.xxx.xxx ipauniqueid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx objectclass: top, groupOfNames, nestedGroup, ipaobject, ipahostgroup ---------------------------- Number of entries returned 1 ----------------------------
46.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-add --desc 'My new host group' group_name
$ ipa hostgroup-add --desc 'My new host group' group_name --------------------- Added hostgroup "group_name" --------------------- Host-group: group_name Description: My new host group ---------------------
46.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-del group_name
$ ipa hostgroup-del group_name -------------------------- Deleted hostgroup "group_name" --------------------------
46.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-add-member group_name --hosts example_member
$ ipa hostgroup-add-member group_name --hosts example_member Host-group: group_name Description: My host group Member hosts: example_member ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-add-member group_name --hostgroups nested_group
$ ipa hostgroup-add-member group_name --hostgroups nested_group Host-group: group_name Description: My host group Member host-groups: nested_group ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-add-member group_name --hosts={host1,host2} --hostgroups={group1,group2}
$ ipa hostgroup-add-member group_name --hosts={host1,host2} --hostgroups={group1,group2}
46.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-remove-member group_name --hosts example_member
$ ipa hostgroup-remove-member group_name --hosts example_member Host-group: group_name Description: My host group ------------------------- Number of members removed 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-remove-member group_name --hostgroups example_member
$ ipa hostgroup-remove-member group_name --hostgroups example_member Host-group: group_name Description: My host group ------------------------- Number of members removed 1 -------------------------
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-remove-member group_name --hosts={host1,host2} --hostgroups={group1,group2}
$ ipa hostgroup-remove-member group_name --hosts={host1,host2} --hostgroups={group1,group2}
46.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-add-member-manager group_name --user example_member
$ ipa hostgroup-add-member-manager group_name --user example_member Host-group: group_name Member hosts: server.idm.example.com Member host-groups: project_admins Member of netgroups: group_name Membership managed by users: example_member ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-add-member-manager group_name --groups admin_group
$ ipa hostgroup-add-member-manager group_name --groups admin_group Host-group: group_name Member hosts: server.idm.example.com Member host-groups: project_admins Member of netgroups: group_name Membership managed by groups: admin_group Membership managed by users: example_member ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-show group_name
$ ipa hostgroup-show group_name Host-group: group_name Member hosts: server.idm.example.com Member host-groups: project_admins Membership managed by groups: admin_group Membership managed by users: example_member
46.8.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-remove-member-manager group_name --user example_member
$ ipa hostgroup-remove-member-manager group_name --user example_member Host-group: group_name Member hosts: server.idm.example.com Member host-groups: project_admins Member of netgroups: group_name Membership managed by groups: nested_group --------------------------- Number of members removed 1 ---------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-remove-member-manager group_name --groups nested_group
$ ipa hostgroup-remove-member-manager group_name --groups nested_group Host-group: group_name Member hosts: server.idm.example.com Member host-groups: project_admins Member of netgroups: group_name --------------------------- Number of members removed 1 ---------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-show group_name
$ ipa hostgroup-show group_name Host-group: group_name Member hosts: server.idm.example.com Member host-groups: project_admins
第47章
47.1.
47.2.
47.3.
47.4.
47.5.
47.6.
47.7.
[D]
47.8.
[D]
第48章
48.1.
48.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure host-group databases is present - ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases state: present
--- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure host-group databases is present - ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases state: present
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hostgroup-is-present.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hostgroup-is-present.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh admin@server.idm.example.com
$ ssh admin@server.idm.example.com Password: [admin@server /]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
$ kinit admin Password for admin@IDM.EXAMPLE.COM:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-show databases
$ ipa hostgroup-show databases Host-group: databases
48.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure host-group databases is present - ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases host: - db.idm.example.com action: member
--- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure host-group databases is present - ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases host: - db.idm.example.com action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-or-hostgroups-are-present-in-hostgroup.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-or-hostgroups-are-present-in-hostgroup.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh admin@server.idm.example.com
$ ssh admin@server.idm.example.com Password: [admin@server /]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
$ kinit admin Password for admin@IDM.EXAMPLE.COM:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-show databases
$ ipa hostgroup-show databases Host-group: databases Member hosts: db.idm.example.com
48.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure hosts and hostgroups are present in existing databases hostgroup - ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases hostgroup: - mysql-server - oracle-server action: member
--- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure hosts and hostgroups are present in existing databases hostgroup - ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases hostgroup: - mysql-server - oracle-server action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-or-hostgroups-are-present-in-hostgroup.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-or-hostgroups-are-present-in-hostgroup.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh admin@server.idm.example.com
$ ssh admin@server.idm.example.com Password: [admin@server /]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
$ kinit admin Password for admin@IDM.EXAMPLE.COM:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-show databases
$ ipa hostgroup-show databases Host-group: databases Member hosts: db.idm.example.com Member host-groups: mysql-server, oracle-server
48.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to handle host group membership management hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure member manager user example_member is present for group_name ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_name membermanager_user: example_member - name: Ensure member manager group project_admins is present for group_name ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_name membermanager_group: project_admins
--- - name: Playbook to handle host group membership management hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure member manager user example_member is present for group_name ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_name membermanager_user: example_member - name: Ensure member manager group project_admins is present for group_name ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_name membermanager_group: project_admins
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-member-managers-host-groups.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/add-member-managers-host-groups.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh admin@server.idm.example.com
$ ssh admin@server.idm.example.com Password: [admin@server /]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipaserver]$ ipa hostgroup-show group_name Host-group: group_name Member hosts: server.idm.example.com Member host-groups: testhostgroup2 Membership managed by groups: project_admins Membership managed by users: example_member
ipaserver]$ ipa hostgroup-show group_name Host-group: group_name Member hosts: server.idm.example.com Member host-groups: testhostgroup2 Membership managed by groups: project_admins Membership managed by users: example_member
48.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure host-group databases is absent - ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases host: - db.idm.example.com action: member state: absent
--- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure host-group databases is absent - ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases host: - db.idm.example.com action: member state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-or-hostgroups-are-absent-in-hostgroup.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-or-hostgroups-are-absent-in-hostgroup.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh admin@server.idm.example.com
$ ssh admin@server.idm.example.com Password: [admin@server /]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
$ kinit admin Password for admin@IDM.EXAMPLE.COM:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-show databases
$ ipa hostgroup-show databases Host-group: databases Member host-groups: mysql-server, oracle-server
48.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure hosts and hostgroups are absent in existing databases hostgroup - ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases hostgroup: - mysql-server - oracle-server action: member state: absent
--- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure hosts and hostgroups are absent in existing databases hostgroup - ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases hostgroup: - mysql-server - oracle-server action: member state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-or-hostgroups-are-absent-in-hostgroup.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hosts-or-hostgroups-are-absent-in-hostgroup.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh admin@server.idm.example.com
$ ssh admin@server.idm.example.com Password: [admin@server /]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
$ kinit admin Password for admin@IDM.EXAMPLE.COM:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-show databases
$ ipa hostgroup-show databases Host-group: databases
48.8.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - Ensure host-group databases is absent ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases state: absent
--- - name: Playbook to handle hostgroups hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - Ensure host-group databases is absent ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: databases state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hostgroup-is-absent.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-hostgroup-is-absent.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh admin@server.idm.example.com
$ ssh admin@server.idm.example.com Password: [admin@server /]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
$ kinit admin Password for admin@IDM.EXAMPLE.COM:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hostgroup-show databases
$ ipa hostgroup-show databases ipa: ERROR: databases: host group not found
48.9.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to handle host group membership management hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure member manager host and host group members are absent for group_name ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_name membermanager_user: example_member membermanager_group: project_admins action: member state: absent
--- - name: Playbook to handle host group membership management hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure member manager host and host group members are absent for group_name ipahostgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: group_name membermanager_user: example_member membermanager_group: project_admins action: member state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-member-managers-host-groups-are-absent.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-member-managers-host-groups-are-absent.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh admin@server.idm.example.com
$ ssh admin@server.idm.example.com Password: [admin@server /]$
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipaserver]$ ipa hostgroup-show group_name Host-group: group_name Member hosts: server.idm.example.com Member host-groups: testhostgroup2
ipaserver]$ ipa hostgroup-show group_name Host-group: group_name Member hosts: server.idm.example.com Member host-groups: testhostgroup2
第49章
49.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-add-principal <user> <useralias>
# ipa user-add-principal <user> <useralias> -------------------------------- Added new aliases to user "user" -------------------------------- User login: user Principal alias: user@IDM.EXAMPLE.COM, useralias@IDM.EXAMPLE.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit -C <useralias>
# kinit -C <useralias> Password for <user>@IDM.EXAMPLE.COM:
49.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-remove-principal <user> <useralias>
# ipa user-remove-principal <user> <useralias> -------------------------------- Removed aliases from user "user" -------------------------------- User login: user Principal alias: user@IDM.EXAMPLE.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-show <user> ipa user-remove-principal user user
# ipa user-show <user> User login: user ... Principal name: user@IDM.EXAMPLE.COM ... # ipa user-remove-principal user user ipa: ERROR: invalid 'krbprincipalname': at least one value equal to the canonical principal name must be present
49.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-add-principal <user> <user\\@example.com>
# ipa user-add-principal <user> <user\\@example.com> -------------------------------- Added new aliases to user "user" -------------------------------- User login: user Principal alias: user@IDM.EXAMPLE.COM, user\@example.com@IDM.EXAMPLE.COM
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa: ERROR: The realm for the principal does not match the realm for this IPA server.
ipa: ERROR: The realm for the principal does not match the realm for this IPA server.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit -E <user@example.com>
# kinit -E <user@example.com> Password for user\@example.com@IDM.EXAMPLE.COM:
49.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-remove-principal <user> <user\\@example.com>
# ipa user-remove-principal <user> <user\\@example.com> -------------------------------- Removed aliases from user "user" -------------------------------- User login: user Principal alias: user@IDM.EXAMPLE.COM
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa: ERROR: The realm for the principal does not match the realm for this IPA server
ipa: ERROR: The realm for the principal does not match the realm for this IPA server
第50章
50.1.
50.2.
50.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa service-mod service/ipa.example.com@EXAMPLE.COM --ok-as-delegate=1
$ ipa service-mod service/ipa.example.com@EXAMPLE.COM --ok-as-delegate=1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa service-mod service/ipa.example.com@EXAMPLE.COM --ok-as-delegate=0
$ ipa service-mod service/ipa.example.com@EXAMPLE.COM --ok-as-delegate=0
50.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kvno demo/ipa.example.com@EXAMPLE.COM
$ kvno demo/ipa.example.com@EXAMPLE.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist -f
$ klist -f Ticket cache: KEYRING:persistent:0:0 Default principal: admin@EXAMPLE.COM Valid starting Expires Service principal 02/19/2024 09:59:02 02/20/2024 08:21:33 demo/ipa/example.com@EXAMPLE.COM Flags: FATO
第51章
51.1.
51.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa config-mod --enable-sid --add-sids
[root@server ~]# ipa config-mod --enable-sid --add-sids
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-show admin --all | grep ipantsecurityidentifier
[root@server ~]# ipa user-show admin --all | grep ipantsecurityidentifier ipantsecurityidentifier: S-1-5-21-2633809701-976279387-419745629-500
第52章
52.1.

[D]
52.2.
52.3.
52.4.
図52.1

[D]
52.4.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa service-add testservice/client.example.com
[root@client ~]# ipa service-add testservice/client.example.com ------------------------------------------------------------- Modified service "testservice/client.example.com@EXAMPLE.COM" ------------------------------------------------------------- Principal name: testservice/client.example.com@EXAMPLE.COM Principal alias: testservice/client.example.com@EXAMPLE.COM Managed by: client.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-getkeytab -k /etc/testservice.keytab -p testservice/client.example.com
[root@client ~]# ipa-getkeytab -k /etc/testservice.keytab -p testservice/client.example.com Keytab successfully retrieved and stored in: /etc/testservice.keytab
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa service-show testservice/client.example.com
[root@server ~]# ipa service-show testservice/client.example.com Principal name: testservice/client.example.com@EXAMPLE.COM Principal alias: testservice/client.example.com@EXAMPLE.COM Keytab: True Managed by: client.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist -ekt /etc/testservice.keytab
[root@server etc]# klist -ekt /etc/testservice.keytab Keytab name: FILE:/etc/testservice.keytab KVNO Timestamp Principal ---- ------------------- ------------------------------------------------------ 2 04/01/2020 17:52:55 testservice/client.example.com@EXAMPLE.COM (aes256-cts-hmac-sha1-96) 2 04/01/2020 17:52:55 testservice/client.example.com@EXAMPLE.COM (aes128-cts-hmac-sha1-96) 2 04/01/2020 17:52:55 testservice/client.example.com@EXAMPLE.COM (camellia128-cts-cmac) 2 04/01/2020 17:52:55 testservice/client.example.com@EXAMPLE.COM (camellia256-cts-cmac)
52.4.2.
host/server.example.com@EXAMPLE.COM HTTP/server.example.com@EXAMPLE.COM ldap/server.example.com@EXAMPLE.COM DNS/server.example.com@EXAMPLE.COM cifs/server.example.com@EXAMPLE.COM
host/server.example.com@EXAMPLE.COM
HTTP/server.example.com@EXAMPLE.COM
ldap/server.example.com@EXAMPLE.COM
DNS/server.example.com@EXAMPLE.COM
cifs/server.example.com@EXAMPLE.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa service-mod testservice/client.example.com@EXAMPLE.COM --auth-ind otp --auth-ind pkinit
[root@server ~]# ipa service-mod testservice/client.example.com@EXAMPLE.COM --auth-ind otp --auth-ind pkinit ------------------------------------------------------------- Modified service "testservice/client.example.com@EXAMPLE.COM" ------------------------------------------------------------- Principal name: testservice/client.example.com@EXAMPLE.COM Principal alias: testservice/client.example.com@EXAMPLE.COM Authentication Indicators: otp, pkinit Managed by: client.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa service-mod testservice/client.example.com@EXAMPLE.COM --auth-ind ''
[root@server ~]# ipa service-mod testservice/client.example.com@EXAMPLE.COM --auth-ind '' ------------------------------------------------------ Modified service "testservice/client.example.com@EXAMPLE.COM" ------------------------------------------------------ Principal name: testservice/client.example.com@EXAMPLE.COM Principal alias: testservice/client.example.com@EXAMPLE.COM Managed by: client.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa service-show testservice/client.example.com
[root@server ~]# ipa service-show testservice/client.example.com Principal name: testservice/client.example.com@EXAMPLE.COM Principal alias: testservice/client.example.com@EXAMPLE.COM Authentication Indicators: otp, pkinit Keytab: True Managed by: client.example.com
52.4.3.
52.4.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kvno -S testservice client.example.com
[root@server ~]# kvno -S testservice client.example.com testservice/client.example.com@EXAMPLE.COM: kvno = 1
kdestroy
[root@server ~]# kdestroy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist_
[root@server etc]# klist_ Ticket cache: KCM:1000 Default principal: admin@EXAMPLE.COM Valid starting Expires Service principal 04/01/2020 12:52:42 04/02/2020 12:52:39 krbtgt/EXAMPLE.COM@EXAMPLE.COM 04/01/2020 12:54:07 04/02/2020 12:52:39 testservice/client.example.com@EXAMPLE.COM
52.4.5.
52.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa krbtpolicy-mod --maxlife=$((8*60*60)) --maxrenew=$((24*60*60))
[root@server ~]# ipa krbtpolicy-mod --maxlife=$((8*60*60)) --maxrenew=$((24*60*60)) Max life: 28800 Max renew: 86400
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa krbtpolicy-reset
[root@server ~]# ipa krbtpolicy-reset Max life: 86400 Max renew: 604800
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa krbtpolicy-show
[root@server ~]# ipa krbtpolicy-show Max life: 28800 Max renew: 86640
52.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa krbtpolicy-mod --otp-maxlife=604800 --otp-maxrenew=604800 --pkinit-maxlife=172800 --pkinit-maxrenew=172800
[root@server ~]# ipa krbtpolicy-mod --otp-maxlife=604800 --otp-maxrenew=604800 --pkinit-maxlife=172800 --pkinit-maxrenew=172800
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa krbtpolicy-show
[root@server ~]# ipa krbtpolicy-show Max life: 86400 OTP max life: 604800 PKINIT max life: 172800 Max renew: 604800 OTP max renew: 604800 PKINIT max renew: 172800
52.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa krbtpolicy-mod admin --maxlife=172800 --maxrenew=1209600
[root@server ~]# ipa krbtpolicy-mod admin --maxlife=172800 --maxrenew=1209600 Max life: 172800 Max renew: 1209600
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa krbtpolicy-reset admin
[root@server ~]# ipa krbtpolicy-reset admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa krbtpolicy-show admin
[root@server ~]# ipa krbtpolicy-show admin Max life: 172800 Max renew: 1209600
52.8.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa krbtpolicy-mod admin --otp-maxrenew=$((2*24*60*60))
[root@server ~]# ipa krbtpolicy-mod admin --otp-maxrenew=$((2*24*60*60)) OTP max renew: 172800
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa krbtpolicy-reset username
[root@server ~]# ipa krbtpolicy-reset username
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa krbtpolicy-show admin
[root@server ~]# ipa krbtpolicy-show admin Max life: 28800 Max renew: 86640
52.9.
|
|
|
|
|
|
|
|
|
|
|
|
第53章
53.1.
|
|
|
|
|
|
53.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa pkinit-status
$ ipa pkinit-status Server name: server1.example.com PKINIT status: enabled [...output truncated...] Server name: server2.example.com PKINIT status: disabled [...output truncated...]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa config-show
$ ipa config-show Maximum username length: 32 Home directory base: /home Default shell: /bin/sh Default users group: ipausers [...output truncated...] IPA masters capable of PKINIT: server1.example.com [...output truncated...]
53.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin ipa pkinit-status --server=server.idm.example.com
# kinit admin Password for admin@IDM.EXAMPLE.COM: # ipa pkinit-status --server=server.idm.example.com 1 server matched ---------------- Server name: server.idm.example.com PKINIT status:enabled ---------------------------- Number of entries returned 1 ----------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa pkinit-status --server server.idm.example.com
# ipa pkinit-status --server server.idm.example.com ----------------- 0 servers matched ----------------- ---------------------------- Number of entries returned 0 ----------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-cacert-manage install -t CT,C,C ca.pem
# ipa-cacert-manage install -t CT,C,C ca.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-certupdate
# ipa-certupdate
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-cacert-manage list
# ipa-cacert-manage list CN=CA,O=Example Organization The ipa-cacert-manage command was successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-server-certinstall --kdc kdc.pem kdc.key systemctl restart krb5kdc.service
# ipa-server-certinstall --kdc kdc.pem kdc.key # systemctl restart krb5kdc.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa pkinit-status
# ipa pkinit-status Server name: server1.example.com PKINIT status: enabled [...output truncated...] Server name: server2.example.com PKINIT status: disabled [...output truncated...]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-pkinit-manage enable
# ipa-pkinit-manage enable Configuring Kerberos KDC (krb5kdc) [1/1]: installing X509 Certificate for PKINIT Done configuring Kerberos KDC (krb5kdc). The ipa-pkinit-manage command was successful
53.4.
第54章
54.1.
klist -ekt /etc/krb5.keytab
[root@idmserver ~]# klist -ekt /etc/krb5.keytab
Keytab name: FILE:/etc/krb5.keytab
KVNO Timestamp Principal
---- ------------------- ------------------------------------------------------
2 02/24/2022 20:28:09 host/idmserver.idm.example.com@IDM.EXAMPLE.COM (aes256-cts-hmac-sha1-96)
2 02/24/2022 20:28:09 host/idmserver.idm.example.com@IDM.EXAMPLE.COM (aes128-cts-hmac-sha1-96)
2 02/24/2022 20:28:09 host/idmserver.idm.example.com@IDM.EXAMPLE.COM (camellia128-cts-cmac)
2 02/24/2022 20:28:09 host/idmserver.idm.example.com@IDM.EXAMPLE.COM (camellia256-cts-cmac)
54.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist -ekt /etc/named.keytab
[root@server1 ~]# klist -ekt /etc/named.keytab Keytab name: FILE:/etc/named.keytab KVNO Timestamp Principal ---- ------------------- ------------------------------------------------------ 2 11/26/2021 13:51:11 DNS/server1.idm.example.com@EXAMPLE.COM (aes256-cts-hmac-sha1-96) 2 11/26/2021 13:51:11 DNS/server1.idm.example.com@EXAMPLE.COM (aes128-cts-hmac-sha1-96) 2 11/26/2021 13:51:11 DNS/server1.idm.example.com@EXAMPLE.COM (camellia128-cts-cmac) 2 11/26/2021 13:51:11 DNS/server1.idm.example.com@EXAMPLE.COM (camellia256-cts-cmac)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kvno DNS/server1.idm.example.com@EXAMPLE.COM
[root@server1 ~]# kvno DNS/server1.idm.example.com@EXAMPLE.COM DNS/server1.idm.example.com@EXAMPLE.COM: kvno = 3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
[root@server1 ~]# kinit admin Password for admin@IDM.EXAMPLE.COM:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-getkeytab -s server1.idm.example.com -p DNS/server1.idm.example.com -k /etc/named.keytab
[root@server1 ~]# ipa-getkeytab -s server1.idm.example.com -p DNS/server1.idm.example.com -k /etc/named.keytab
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist -ekt /etc/named.keytab
[root@server1 ~]# klist -ekt /etc/named.keytab Keytab name: FILE:/etc/named.keytab KVNO Timestamp Principal ---- ------------------- ------------------------------------------------------ 4 08/17/2022 14:42:11 DNS/server1.idm.example.com@EXAMPLE.COM (aes256-cts-hmac-sha1-96) 4 08/17/2022 14:42:11 DNS/server1.idm.example.com@EXAMPLE.COM (aes128-cts-hmac-sha1-96) 4 08/17/2022 14:42:11 DNS/server1.idm.example.com@EXAMPLE.COM (camellia128-cts-cmac) 4 08/17/2022 14:42:11 DNS/server1.idm.example.com@EXAMPLE.COM (camellia256-cts-cmac)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kvno DNS/server1.idm.example.com@EXAMPLE.COM
[root@server1 ~]# kvno DNS/server1.idm.example.com@EXAMPLE.COM DNS/server1.idm.example.com@EXAMPLE.COM: kvno = 4
54.3.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
54.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kadmin.local getprinc K/M | grep -E '^Key:'
# kadmin.local getprinc K/M | grep -E '^Key:' Key: vno 1, aes256-cts-hmac-sha1-96
第55章
55.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [realms] EXAMPLE.COM = { kdc = https://kdc.example.com/KdcProxy admin_server = https://kdc.example.com/KdcProxy kpasswd_server = https://kdc.example.com/KdcProxy default_domain = example.com }
[realms] EXAMPLE.COM = { kdc = https://kdc.example.com/KdcProxy admin_server = https://kdc.example.com/KdcProxy kpasswd_server = https://kdc.example.com/KdcProxy default_domain = example.com }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ~]# systemctl restart sssd
~]# systemctl restart sssd
55.2.
ls -l /etc/httpd/conf.d/ipa-kdc-proxy.conf
$ ls -l /etc/httpd/conf.d/ipa-kdc-proxy.conf
lrwxrwxrwx. 1 root root 36 Jun 21 2020 /etc/httpd/conf.d/ipa-kdc-proxy.conf -> /etc/ipa/kdcproxy/ipa-kdc-proxy.conf
55.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-ldap-updater /usr/share/ipa/kdcproxy-disable.uldif
# ipa-ldap-updater /usr/share/ipa/kdcproxy-disable.uldif Update complete The ipa-ldap-updater command was successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart httpd.service
# systemctl restart httpd.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ls -l /etc/httpd/conf.d/ipa-kdc-proxy.conf
$ ls -l /etc/httpd/conf.d/ipa-kdc-proxy.conf ls: cannot access '/etc/httpd/conf.d/ipa-kdc-proxy.conf': No such file or directory
55.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-ldap-updater /usr/share/ipa/kdcproxy-enable.uldif
# ipa-ldap-updater /usr/share/ipa/kdcproxy-enable.uldif Update complete The ipa-ldap-updater command was successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart httpd.service
# systemctl restart httpd.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ls -l /etc/httpd/conf.d/ipa-kdc-proxy.conf
$ ls -l /etc/httpd/conf.d/ipa-kdc-proxy.conf lrwxrwxrwx. 1 root root 36 Jun 21 2020 /etc/httpd/conf.d/ipa-kdc-proxy.conf -> /etc/ipa/kdcproxy/ipa-kdc-proxy.conf
55.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [global] use_dns = false
[global] use_dns = false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [AD.EXAMPLE.COM] kerberos = kerberos+tcp://1.2.3.4:88 kerberos+tcp://5.6.7.8:88 kpasswd = kpasswd+tcp://1.2.3.4:464 kpasswd+tcp://5.6.7.8:464
[AD.EXAMPLE.COM] kerberos = kerberos+tcp://1.2.3.4:88 kerberos+tcp://5.6.7.8:88 kpasswd = kpasswd+tcp://1.2.3.4:464 kpasswd+tcp://5.6.7.8:464
重要Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipactl restart
# ipactl restart
55.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [global] configs = mit use_dns = true
[global] configs = mit use_dns = true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [realms] AD.EXAMPLE.COM = { kdc = ad-server.ad.example.com kpasswd_server = ad-server.ad.example.com }
[realms] AD.EXAMPLE.COM = { kdc = ad-server.ad.example.com kpasswd_server = ad-server.ad.example.com }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipactl restart
# ipactl restart
第56章
56.1.
56.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
[root@idmclient ~]# kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa sudocmd-add /usr/sbin/reboot
[root@idmclient ~]# ipa sudocmd-add /usr/sbin/reboot ------------------------------------- Added Sudo Command "/usr/sbin/reboot" ------------------------------------- Sudo Command: /usr/sbin/reboot
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa sudorule-add idm_user_reboot
[root@idmclient ~]# ipa sudorule-add idm_user_reboot --------------------------------- Added Sudo Rule "idm_user_reboot" --------------------------------- Rule name: idm_user_reboot Enabled: TRUE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa sudorule-add-allow-command idm_user_reboot --sudocmds '/usr/sbin/reboot'
[root@idmclient ~]# ipa sudorule-add-allow-command idm_user_reboot --sudocmds '/usr/sbin/reboot' Rule name: idm_user_reboot Enabled: TRUE Sudo Allow Commands: /usr/sbin/reboot ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa sudorule-add-host idm_user_reboot --hosts idmclient.idm.example.com
[root@idmclient ~]# ipa sudorule-add-host idm_user_reboot --hosts idmclient.idm.example.com Rule name: idm_user_reboot Enabled: TRUE Hosts: idmclient.idm.example.com Sudo Allow Commands: /usr/sbin/reboot ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa sudorule-add-user idm_user_reboot --users idm_user
[root@idmclient ~]# ipa sudorule-add-user idm_user_reboot --users idm_user Rule name: idm_user_reboot Enabled: TRUE Users: idm_user Hosts: idmclient.idm.example.com Sudo Allow Commands: /usr/sbin/reboot ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa sudorule-mod idm_user_reboot --setattr sudonotbefore=20251231123400Z
[root@idmclient ~]# ipa sudorule-mod idm_user_reboot --setattr sudonotbefore=20251231123400Z
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa sudorule-mod idm_user_reboot --setattr sudonotafter=20261231123400Z
[root@idmclient ~]# ipa sudorule-mod idm_user_reboot --setattr sudonotafter=20261231123400Z
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo -l
[idm_user@idmclient ~]$ sudo -l Matching Defaults entries for idm_user on idmclient: !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY KRB5CCNAME", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User idm_user may run the following commands on idmclient: (root) /usr/sbin/reboot
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo /usr/sbin/reboot
[idm_user@idmclient ~]$ sudo /usr/sbin/reboot [sudo] password for idm_user:
56.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-add --desc='AD users external map' ad_users_external --external
[root@ipaserver ~]# ipa group-add --desc='AD users external map' ad_users_external --external ------------------------------- Added group "ad_users_external" ------------------------------- Group name: ad_users_external Description: AD users external map
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-add --desc='AD users' ad_users
[root@ipaserver ~]# ipa group-add --desc='AD users' ad_users ---------------------- Added group "ad_users" ---------------------- Group name: ad_users Description: AD users GID: 129600004
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-add-member ad_users_external --external "administrator@ad-domain.com"
[root@ipaserver ~]# ipa group-add-member ad_users_external --external "administrator@ad-domain.com" [member user]: [member group]: Group name: ad_users_external Description: AD users external map External member: S-1-5-21-3655990580-1375374850-1633065477-513 ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-add-member ad_users --groups ad_users_external
[root@ipaserver ~]# ipa group-add-member ad_users --groups ad_users_external Group name: ad_users Description: AD users GID: 129600004 Member groups: ad_users_external ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa sudocmd-add /usr/sbin/reboot
[root@idmclient ~]# ipa sudocmd-add /usr/sbin/reboot ------------------------------------- Added Sudo Command "/usr/sbin/reboot" ------------------------------------- Sudo Command: /usr/sbin/reboot
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa sudorule-add ad_users_reboot
[root@idmclient ~]# ipa sudorule-add ad_users_reboot --------------------------------- Added Sudo Rule "ad_users_reboot" --------------------------------- Rule name: ad_users_reboot Enabled: True
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa sudorule-add-allow-command ad_users_reboot --sudocmds '/usr/sbin/reboot'
[root@idmclient ~]# ipa sudorule-add-allow-command ad_users_reboot --sudocmds '/usr/sbin/reboot' Rule name: ad_users_reboot Enabled: True Sudo Allow Commands: /usr/sbin/reboot ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa sudorule-add-host ad_users_reboot --hosts idmclient.idm.example.com
[root@idmclient ~]# ipa sudorule-add-host ad_users_reboot --hosts idmclient.idm.example.com Rule name: ad_users_reboot Enabled: True Hosts: idmclient.idm.example.com Sudo Allow Commands: /usr/sbin/reboot ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa sudorule-add-user ad_users_reboot --groups ad_users
[root@idmclient ~]# ipa sudorule-add-user ad_users_reboot --groups ad_users Rule name: ad_users_reboot Enabled: TRUE User Groups: ad_users Hosts: idmclient.idm.example.com Sudo Allow Commands: /usr/sbin/reboot ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh administrator@ad-domain.com@ipaclient
$ ssh administrator@ad-domain.com@ipaclient Password:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [administrator@ad-domain.com@idmclient ~]$ sudo -l Matching Defaults entries for administrator@ad-domain.com on idmclient: !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY KRB5CCNAME", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User administrator@ad-domain.com may run the following commands on idmclient: (root) /usr/sbin/reboot
[administrator@ad-domain.com@idmclient ~]$ sudo -l Matching Defaults entries for administrator@ad-domain.com on idmclient: !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY KRB5CCNAME", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User administrator@ad-domain.com may run the following commands on idmclient: (root) /usr/sbin/reboot
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [administrator@ad-domain.com@idmclient ~]$ sudo /usr/sbin/reboot [sudo] password for administrator@ad-domain.com:
[administrator@ad-domain.com@idmclient ~]$ sudo /usr/sbin/reboot [sudo] password for administrator@ad-domain.com:
56.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo /usr/sbin/reboot
$ sudo /usr/sbin/reboot [sudo] password for idm_user:
56.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
[root@idmclient ~]# kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa sudocmd-add /opt/third-party-app/bin/report
[root@idmclient ~]# ipa sudocmd-add /opt/third-party-app/bin/report ---------------------------------------------------- Added Sudo Command "/opt/third-party-app/bin/report" ---------------------------------------------------- Sudo Command: /opt/third-party-app/bin/report
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa sudorule-add run_third-party-app_report
[root@idmclient ~]# ipa sudorule-add run_third-party-app_report -------------------------------------------- Added Sudo Rule "run_third-party-app_report" -------------------------------------------- Rule name: run_third-party-app_report Enabled: TRUE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa sudorule-add-runasuser run_third-party-app_report --users=thirdpartyapp
[root@idmclient ~]# ipa sudorule-add-runasuser run_third-party-app_report --users=thirdpartyapp Rule name: run_third-party-app_report Enabled: TRUE RunAs External User: thirdpartyapp ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa sudorule-add-allow-command run_third-party-app_report --sudocmds '/opt/third-party-app/bin/report'
[root@idmclient ~]# ipa sudorule-add-allow-command run_third-party-app_report --sudocmds '/opt/third-party-app/bin/report' Rule name: run_third-party-app_report Enabled: TRUE Sudo Allow Commands: /opt/third-party-app/bin/report RunAs External User: thirdpartyapp ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa sudorule-add-host run_third-party-app_report --hosts idmclient.idm.example.com
[root@idmclient ~]# ipa sudorule-add-host run_third-party-app_report --hosts idmclient.idm.example.com Rule name: run_third-party-app_report Enabled: TRUE Hosts: idmclient.idm.example.com Sudo Allow Commands: /opt/third-party-app/bin/report RunAs External User: thirdpartyapp ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa sudorule-add-user run_third-party-app_report --users idm_user
[root@idmclient ~]# ipa sudorule-add-user run_third-party-app_report --users idm_user Rule name: run_third-party-app_report Enabled: TRUE Users: idm_user Hosts: idmclient.idm.example.com Sudo Allow Commands: /opt/third-party-app/bin/report RunAs External User: thirdpartyapp ------------------------- Number of members added 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo -l
[idm_user@idmclient ~]$ sudo -l Matching Defaults entries for idm_user@idm.example.com on idmclient: !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY KRB5CCNAME", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User idm_user@idm.example.com may run the following commands on idmclient: (thirdpartyapp) /opt/third-party-app/bin/report
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo -u thirdpartyapp /opt/third-party-app/bin/report
[idm_user@idmclient ~]$ sudo -u thirdpartyapp /opt/third-party-app/bin/report [sudo] password for idm_user@idm.example.com: Executing report... Report successful.
56.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo -l
[idm_user@idmclient ~]$ sudo -l Matching Defaults entries for idm_user@idm.example.com on idmclient: !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY KRB5CCNAME", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User idm_user@idm.example.com may run the following commands on idmclient: (thirdpartyapp) /opt/third-party-app/bin/report
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo -u thirdpartyapp /opt/third-party-app/bin/report
[idm_user@idmclient ~]$ sudo -u thirdpartyapp /opt/third-party-app/bin/report [sudo] password for idm_user@idm.example.com: Executing report... Report successful.
56.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [domain/<domain_name>] pam_gssapi_services = sudo, sudo-i
[domain/<domain_name>] pam_gssapi_services = sudo, sudo-i
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart sssd
[root@idmclient ~]# systemctl restart sssd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow authselect current
# authselect current Profile ID: sssd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow authselect enable-feature with-gssapi
# authselect enable-feature with-gssapi
Copy to Clipboard Copied! Toggle word wrap Toggle overflow authselect select sssd with-gssapi
# authselect select sssd with-gssapi
Copy to Clipboard Copied! Toggle word wrap Toggle overflow #%PAM-1.0 auth sufficient pam_sss_gss.so auth include system-auth account include system-auth password include system-auth session include system-auth
#%PAM-1.0 auth sufficient pam_sss_gss.so auth include system-auth account include system-auth password include system-auth session include system-auth
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh -l idm_user@idm.example.com localhost
[root@idm-client ~]# ssh -l idm_user@idm.example.com localhost idm_user@idm.example.com's password:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist
[idmuser@idmclient ~]$ klist Ticket cache: KCM:1366201107 Default principal: idm_user@IDM.EXAMPLE.COM Valid starting Expires Service principal 01/08/2021 09:11:48 01/08/2021 19:11:48 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM renew until 01/15/2021 09:11:44
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kdestroy -A kinit idm_user@IDM.EXAMPLE.COM
[idm_user@idmclient ~]$ kdestroy -A [idm_user@idmclient ~]$ kinit idm_user@IDM.EXAMPLE.COM Password for idm_user@idm.example.com:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo /usr/sbin/reboot
[idm_user@idmclient ~]$ sudo /usr/sbin/reboot
56.8.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [domain/<idm_domain_name>] pam_gssapi_services = sudo, sudo-i pam_gssapi_indicators_map = sudo:pkinit, sudo-i:pkinit
[domain/<idm_domain_name>] pam_gssapi_services = sudo, sudo-i pam_gssapi_indicators_map = sudo:pkinit, sudo-i:pkinit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart sssd
[root@idmclient ~]# systemctl restart sssd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow authselect current
# authselect current Profile ID: sssd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow authselect select sssd
# authselect select sssd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow authselect enable-feature with-gssapi
# authselect enable-feature with-gssapi
Copy to Clipboard Copied! Toggle word wrap Toggle overflow authselect with-smartcard-required
# authselect with-smartcard-required
Copy to Clipboard Copied! Toggle word wrap Toggle overflow #%PAM-1.0 auth sufficient pam_sss_gss.so auth include system-auth account include system-auth password include system-auth session include system-auth
#%PAM-1.0 auth sufficient pam_sss_gss.so auth include system-auth account include system-auth password include system-auth session include system-auth
Copy to Clipboard Copied! Toggle word wrap Toggle overflow #%PAM-1.0 auth sufficient pam_sss_gss.so auth include sudo account include sudo password include sudo session optional pam_keyinit.so force revoke session include sudo
#%PAM-1.0 auth sufficient pam_sss_gss.so auth include sudo account include sudo password include sudo session optional pam_keyinit.so force revoke session include sudo
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh -l idm_user@idm.example.com localhost
[root@idmclient ~]# ssh -l idm_user@idm.example.com localhost PIN for smart_card
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist
[idm_user@idmclient ~]$ klist Ticket cache: KEYRING:persistent:1358900015:krb_cache_TObtNMd Default principal: idm_user@IDM.EXAMPLE.COM Valid starting Expires Service principal 02/15/2021 16:29:48 02/16/2021 02:29:48 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM renew until 02/22/2021 16:29:44
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo -l
[idm_user@idmclient ~]$ sudo -l Matching Defaults entries for idmuser on idmclient: !visiblepw, always_set_home, match_group_by_gid, always_query_group_plugin, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY KRB5CCNAME", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin User idm_user may run the following commands on idmclient: (root) /usr/sbin/reboot
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo /usr/sbin/reboot
[idm_user@idmclient ~]$ sudo /usr/sbin/reboot
56.9.
[pam] pam_gssapi_services = sudo, sudo-i pam_gssapi_indicators_map = sudo:otp pam_gssapi_check_upn = true
[pam]
pam_gssapi_services = sudo, sudo-i
pam_gssapi_indicators_map = sudo:otp
pam_gssapi_check_upn = true
[domain/idm.example.com] pam_gssapi_services = sudo, sudo-i pam_gssapi_indicators_map = sudo:pkinit, sudo-i:otp pam_gssapi_check_upn = true ... [domain/ad.example.com] pam_gssapi_services = sudo pam_gssapi_check_upn = false ...
[domain/idm.example.com]
pam_gssapi_services = sudo, sudo-i
pam_gssapi_indicators_map = sudo:pkinit, sudo-i:otp
pam_gssapi_check_upn = true
...
[domain/ad.example.com]
pam_gssapi_services = sudo
pam_gssapi_check_upn = false
...
56.10.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Server not found in Kerberos database
Server not found in Kerberos database
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat /etc/krb5.conf ... [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM server.example.com = EXAMPLE.COM
[idm-user@idm-client ~]$ cat /etc/krb5.conf ... [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM server.example.com = EXAMPLE.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow No Kerberos credentials available
No Kerberos credentials available
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit idm-user@IDM.EXAMPLE.COM
[idm-user@idm-client ~]$ kinit idm-user@IDM.EXAMPLE.COM Password for idm-user@idm.example.com:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow User with UPN [<UPN>] was not found. UPN [<UPN>] does not match target user [<username>].
User with UPN [<UPN>] was not found. UPN [<UPN>] does not match target user [<username>].
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat /etc/sssd/sssd.conf ... pam_gssapi_check_upn = false
[idm-user@idm-client ~]$ cat /etc/sssd/sssd.conf ... pam_gssapi_check_upn = false
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat /etc/pam.d/sudo #%PAM-1.0 auth sufficient pam_sss_gss.so debug auth include system-auth account include system-auth password include system-auth session include system-auth
[root@idm-client ~]# cat /etc/pam.d/sudo #%PAM-1.0 auth sufficient pam_sss_gss.so debug auth include system-auth account include system-auth password include system-auth session include system-auth
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat /etc/pam.d/sudo-i #%PAM-1.0 auth sufficient pam_sss_gss.so debug auth include sudo account include sudo password include sudo session optional pam_keyinit.so force revoke session include sudo
[root@idm-client ~]# cat /etc/pam.d/sudo-i #%PAM-1.0 auth sufficient pam_sss_gss.so debug auth include sudo account include sudo password include sudo session optional pam_keyinit.so force revoke session include sudo
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo ls -l /etc/sssd/sssd.conf
[idm-user@idm-client ~]$ sudo ls -l /etc/sssd/sssd.conf pam_sss_gss: Initializing GSSAPI authentication with SSSD pam_sss_gss: Switching euid from 0 to 1366201107 pam_sss_gss: Trying to establish security context pam_sss_gss: SSSD User name: idm-user@idm.example.com pam_sss_gss: User domain: idm.example.com pam_sss_gss: User principal: pam_sss_gss: Target name: host@idm.example.com pam_sss_gss: Using ccache: KCM: pam_sss_gss: Acquiring credentials, principal name will be derived pam_sss_gss: Unable to read credentials from [KCM:] [maj:0xd0000, min:0x96c73ac3] pam_sss_gss: GSSAPI: Unspecified GSS failure. Minor code may provide more information pam_sss_gss: GSSAPI: No credentials cache found pam_sss_gss: Switching euid from 1366200907 to 0 pam_sss_gss: System error [5]: Input/output error
56.11.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaservers] server.idm.example.com
[ipaservers] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage sudo command hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure sudo command is present - ipasudocmd: ipaadmin_password: "{{ ipaadmin_password }}" name: /usr/sbin/reboot state: present
--- - name: Playbook to manage sudo command hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure sudo command is present - ipasudocmd: ipaadmin_password: "{{ ipaadmin_password }}" name: /usr/sbin/reboot state: present
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-reboot-sudocmd-is-present.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-reboot-sudocmd-is-present.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Tests hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure a sudorule is present granting idm_user the permission to run /usr/sbin/reboot on idmclient - ipasudorule: ipaadmin_password: "{{ ipaadmin_password }}" name: idm_user_reboot description: A test sudo rule. allow_sudocmd: /usr/sbin/reboot host: idmclient.idm.example.com user: idm_user state: present
--- - name: Tests hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure a sudorule is present granting idm_user the permission to run /usr/sbin/reboot on idmclient - ipasudorule: ipaadmin_password: "{{ ipaadmin_password }}" name: idm_user_reboot description: A test sudo rule. allow_sudocmd: /usr/sbin/reboot host: idmclient.idm.example.com user: idm_user state: present
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-sudorule-for-idmuser-on-idmclient-is-present.yml
$ ansible-playbook -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-sudorule-for-idmuser-on-idmclient-is-present.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo /usr/sbin/reboot
$ sudo /usr/sbin/reboot [sudo] password for idm_user:
第57章
57.1.
57.1.1.
- 注記
57.1.2.
- 重要
57.1.3.
57.2.
57.2.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hbacrule-add
$ ipa hbacrule-add Rule name: rule_name --------------------------- Added HBAC rule "rule_name" --------------------------- Rule name: rule_name Enabled: TRUE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hbacrule-add-user --users=sysadmin
$ ipa hbacrule-add-user --users=sysadmin Rule name: rule_name Rule name: rule_name Enabled: True Users: sysadmin ------------------------- Number of members added 1 -------------------------
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hbacrule-mod rule_name --hostcat=all
$ ipa hbacrule-mod rule_name --hostcat=all ------------------------------ Modified HBAC rule "rule_name" ------------------------------ Rule name: rule_name Host category: all Enabled: TRUE Users: sysadmin
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hbacrule-mod rule_name --servicecat=all
$ ipa hbacrule-mod rule_name --servicecat=all ------------------------------ Modified HBAC rule "rule_name" ------------------------------ Rule name: rule_name Host category: all Service category: all Enabled: True Users: sysadmin
57.2.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hbactest --user=sysadmin --host=server.idm.example.com --service=sudo --rules=rule_name
$ ipa hbactest --user=sysadmin --host=server.idm.example.com --service=sudo --rules=rule_name --------------------- Access granted: True --------------------- Matched rules: rule_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hbacrule-add --hostcat=all rule2_name ipa hbacrule-add-user --users sysadmin rule2_name ipa hbacrule-add-service --hbacsvcs=sshd rule2_name
$ ipa hbacrule-add --hostcat=all rule2_name $ ipa hbacrule-add-user --users sysadmin rule2_name $ ipa hbacrule-add-service --hbacsvcs=sshd rule2_name Rule name: rule2_name Host category: all Enabled: True Users: admin HBAC Services: sshd ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hbactest --user=sysadmin --host=server.idm.example.com --service=sudo --rules=rule_name --rules=rule2_name
$ ipa hbactest --user=sysadmin --host=server.idm.example.com --service=sudo --rules=rule_name --rules=rule2_name -------------------- Access granted: True -------------------- Matched rules: rule_name Not matched rules: rule2_name
57.2.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hbacrule-disable allow_all
$ ipa hbacrule-disable allow_all ------------------------------ Disabled HBAC rule "allow_all" ------------------------------
57.3.
57.3.1.
57.3.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hbacsvc-add tftp
$ ipa hbacsvc-add tftp ------------------------- Added HBAC service "tftp" ------------------------- Service name: tftp
57.4.
57.4.1.
57.4.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hbacsvcgroup-add
$ ipa hbacsvcgroup-add Service group name: login -------------------------------- Added HBAC service group "login" -------------------------------- Service group name: login
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa hbacsvcgroup-add-member
$ ipa hbacsvcgroup-add-member Service group name: login [member HBAC service]: sshd Service group name: login Member HBAC service: sshd ------------------------- Number of members added 1 -------------------------
第58章
58.1.
58.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to handle hbacrules hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure idm_user can access client.idm.example.com via the sshd service - ipahbacrule: ipaadmin_password: "{{ ipaadmin_password }}" name: login user: idm_user host: client.idm.example.com hbacsvc: - sshd state: present
--- - name: Playbook to handle hbacrules hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure idm_user can access client.idm.example.com via the sshd service - ipahbacrule: ipaadmin_password: "{{ ipaadmin_password }}" name: login user: idm_user host: client.idm.example.com hbacsvc: - sshd state: present
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-new-hbacrule-present.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory/ensure-new-hbacrule-present.yml
第59章
59.1.
図59.1

[D]
59.2.
図59.2

[D]
59.3.
図59.3

[D]
59.4.
59.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa topologysuffix-find
$ ipa topologysuffix-find --------------------------- 2 topology suffixes matched --------------------------- Suffix name: ca Managed LDAP suffix DN: o=ipaca Suffix name: domain Managed LDAP suffix DN: dc=example,dc=com ---------------------------- Number of entries returned 2 ----------------------------
59.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa topologysegment-find
$ ipa topologysegment-find Suffix name: domain ----------------- 1 segment matched ----------------- Segment name: server1.example.com-to-server2.example.com Left node: server1.example.com Right node: server2.example.com Connectivity: both ---------------------------- Number of entries returned 1 ----------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa topologysegment-show
$ ipa topologysegment-show Suffix name: domain Segment name: server1.example.com-to-server2.example.com Segment name: server1.example.com-to-server2.example.com Left node: server1.example.com Right node: server2.example.com Connectivity: both
59.7.
図59.8

[D]
59.8.
59.9.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa topologysegment-add
$ ipa topologysegment-add Suffix name: domain Left node: server1.example.com Right node: server2.example.com Segment name [server1.example.com-to-server2.example.com]: new_segment --------------------------- Added segment "new_segment" --------------------------- Segment name: new_segment Left node: server1.example.com Right node: server2.example.com Connectivity: both
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa topologysegment-show
$ ipa topologysegment-show Suffix name: domain Segment name: new_segment Segment name: new_segment Left node: server1.example.com Right node: server2.example.com Connectivity: both
59.10.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa topologysegment-find
$ ipa topologysegment-find Suffix name: domain ------------------ 8 segments matched ------------------ Segment name: new_segment Left node: server1.example.com Right node: server2.example.com Connectivity: both ... ---------------------------- Number of entries returned 8 ----------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa topologysegment-del
$ ipa topologysegment-del Suffix name: domain Segment name: new_segment ----------------------------- Deleted segment "new_segment" -----------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa topologysegment-find
$ ipa topologysegment-find Suffix name: domain ------------------ 7 segments matched ------------------ Segment name: server2.example.com-to-server3.example.com Left node: server2.example.com Right node: server3.example.com Connectivity: both ... ---------------------------- Number of entries returned 7 ----------------------------
59.11.
図59.11
[D]
59.12.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa server-del
[user@server2 ~]$ ipa server-del Server name: server1.example.com Removing server1.example.com from replication topology, please wait... ---------------------------------------------------------- Deleted IPA server "server1.example.com" ----------------------------------------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa server-install --uninstall
[root@server1 ~]# ipa server-install --uninstall
59.13.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-replica-manage list-ruv
$ ipa-replica-manage list-ruv server1.example.com:389: 6 server2.example.com:389: 5 server3.example.com:389: 4 server4.example.com:389: 12
重要Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-replica-manage clean-ruv 6 ipa-replica-manage clean-ruv 5
ipa-replica-manage clean-ruv 6 ipa-replica-manage clean-ruv 5
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dn: cn=clean replica_ID, cn=cleanallruv, cn=tasks, cn=config objectclass: extensibleObject replica-base-dn: dc=example,dc=com replica-id: replica_ID replica-force-cleaning: no cn: clean replica_ID
dn: cn=clean replica_ID, cn=cleanallruv, cn=tasks, cn=config objectclass: extensibleObject replica-base-dn: dc=example,dc=com replica-id: replica_ID replica-force-cleaning: no cn: clean replica_ID
59.14.
- 注記
図59.12
[D]
59.15.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa config-show
$ ipa config-show ... IPA masters: server1.example.com, server2.example.com, server3.example.com IPA CA servers: server1.example.com, server2.example.com IPA CA renewal master: server1.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa server-show
$ ipa server-show Server name: server.example.com ... Enabled server roles: CA server, DNS server, KRA server
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa server-find --servrole "CA server"
$ ipa server-find --servrole "CA server" --------------------- 2 IPA servers matched --------------------- Server name: server1.example.com ... Server name: server2.example.com ... ---------------------------- Number of entries returned 2 ----------------------------
59.16.
第60章
60.1.
|
|
|
|
|
|
|
|
|
|
|
|
60.2.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
60.3.
第61章
61.1.
|
|
|
|
|
|
|
|
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit -X X509_user_identity='PKCS11:opensc-pkcs11.so' idm_user
$ kinit -X X509_user_identity='PKCS11:opensc-pkcs11.so' idm_user
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit -X X509_user_identity='FILE:`/path/to/cert.pem,/path/to/cert.key`' idm_user
$ kinit -X X509_user_identity='FILE:`/path/to/cert.pem,/path/to/cert.key`' idm_user
openssl x509 -noout -text -in ca.pem
$ openssl x509 -noout -text -in ca.pem
diff cert1.crt cert2.crt
$ diff cert1.crt cert2.crt
diff cert1.crt cert2.crt -y
$ diff cert1.crt cert2.crt -y
61.2.
61.2.1.
61.2.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl x509 -in cert.crt -inform der -outform pem -out cert.pem
$ openssl x509 -in cert.crt -inform der -outform pem -out cert.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl pkcs12 -in cert_and_key.p12 -clcerts -nokeys -out cert.pem
$ openssl pkcs12 -in cert_and_key.p12 -clcerts -nokeys -out cert.pem Enter Import Password:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
$ kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-add-cert some_user --certificate="$(sed -e '/BEGIN CERTIFICATE/d;/END CERTIFICATE/d' cert.pem)"
$ ipa user-add-cert some_user --certificate="$(sed -e '/BEGIN CERTIFICATE/d;/END CERTIFICATE/d' cert.pem)"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-add-cert some_user --certificate=MIIDlzCCAn+gAwIBAgIBATANBgkqhki...
$ ipa user-add-cert some_user --certificate=MIIDlzCCAn+gAwIBAgIBATANBgkqhki...
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-add-cert some_user --cert=some_user_cert.pem
$ ipa user-add-cert some_user --cert=some_user_cert.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-show some_user
[idm_user@r8server]$ ipa user-show some_user
61.2.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl x509 -in cert.crt -inform der -outform pem -out cert.pem
$ openssl x509 -in cert.crt -inform der -outform pem -out cert.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl pkcs12 -in cert_and_key.p12 -clcerts -nokeys -out cert.pem
$ openssl pkcs12 -in cert_and_key.p12 -clcerts -nokeys -out cert.pem Enter Import Password:
61.3.
61.3.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pk12util -d ~/certdb -o ~/some_user.p12 -n some_user
$ pk12util -d ~/certdb -o ~/some_user.p12 -n some_user Enter Password or Pin for "NSS Certificate DB": Enter password for PKCS12 file: Re-enter password: pk12util: PKCS12 EXPORT SUCCESSFUL
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chmod 600 ~/some_user.p12
# chmod 600 ~/some_user.p12
61.3.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl pkcs12 -export -in certfile.cer -inkey certfile.key -out certfile.p12
$ openssl pkcs12 -export -in certfile.cer -inkey certfile.key -out certfile.p12
61.4.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
第62章
62.1.
図62.1
[D]
62.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mkdir ~/certdb/
# mkdir ~/certdb/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -N -d ~/certdb/
# certutil -N -d ~/certdb/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -R -d ~/certdb/ -a -g 4096 -s "CN=server.example.com,O=EXAMPLE.COM" -8 server.example.com > certificate_request.csr
# certutil -R -d ~/certdb/ -a -g 4096 -s "CN=server.example.com,O=EXAMPLE.COM" -8 server.example.com > certificate_request.csr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa cert-request certificate_request.csr --principal=host/server.example.com
# ipa cert-request certificate_request.csr --principal=host/server.example.com
62.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow otherName=1.3.6.1.4.1.311.20.2.3;UTF8:test2/server.example.com@EXAMPLE.COM DNS.1 = server.example.com
otherName=1.3.6.1.4.1.311.20.2.3;UTF8:test2/server.example.com@EXAMPLE.COM DNS.1 = server.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl req -new -newkey rsa:2048 -keyout test2service.key -sha256 -nodes -out certificate_request.csr -config openssl.conf
openssl req -new -newkey rsa:2048 -keyout test2service.key -sha256 -nodes -out certificate_request.csr -config openssl.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa cert-request certificate_request.csr --principal=host/server.example.com
# ipa cert-request certificate_request.csr --principal=host/server.example.com
62.4.
第63章
63.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl req -new -newkey rsa:2048 -days 365 -nodes -keyout new.key -out new.csr -subj '/CN=client.idm.example.com,O=IDM.EXAMPLE.COM'
# openssl req -new -newkey rsa:2048 -days 365 -nodes -keyout new.key -out new.csr -subj '/CN=client.idm.example.com,O=IDM.EXAMPLE.COM'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to request a certificate hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Request a certificate for a web server ipacert: ipaadmin_password: "{{ ipaadmin_password }}" state: requested csr: | -----BEGIN CERTIFICATE REQUEST----- MIGYMEwCAQAwGTEXMBUGA1UEAwwOZnJlZWlwYSBydWxlcyEwKjAFBgMrZXADIQBs HlqIr4b/XNK+K8QLJKIzfvuNK0buBhLz3LAzY7QDEqAAMAUGAytlcANBAF4oSCbA 5aIPukCidnZJdr491G4LBE+URecYXsPknwYb+V+ONnf5ycZHyaFv+jkUBFGFeDgU SYaXm/gF8cDYjQI= -----END CERTIFICATE REQUEST----- principal: HTTP/client.idm.example.com register: cert
--- - name: Playbook to request a certificate hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Request a certificate for a web server ipacert: ipaadmin_password: "{{ ipaadmin_password }}" state: requested csr: | -----BEGIN CERTIFICATE REQUEST----- MIGYMEwCAQAwGTEXMBUGA1UEAwwOZnJlZWlwYSBydWxlcyEwKjAFBgMrZXADIQBs HlqIr4b/XNK+K8QLJKIzfvuNK0buBhLz3LAzY7QDEqAAMAUGAytlcANBAF4oSCbA 5aIPukCidnZJdr491G4LBE+URecYXsPknwYb+V+ONnf5ycZHyaFv+jkUBFGFeDgU SYaXm/gF8cDYjQI= -----END CERTIFICATE REQUEST----- principal: HTTP/client.idm.example.com register: cert
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/request-certificate.yml
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/request-certificate.yml
63.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to revoke a certificate hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Revoke a certificate for a web server ipacert: ipaadmin_password: "{{ ipaadmin_password }}" serial_number: 123456789 revocation_reason: "keyCompromise" state: revoked
--- - name: Playbook to revoke a certificate hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Revoke a certificate for a web server ipacert: ipaadmin_password: "{{ ipaadmin_password }}" serial_number: 123456789 revocation_reason: "keyCompromise" state: revoked
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/revoke-certificate.yml
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/revoke-certificate.yml
63.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to restore a certificate hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Restore a certificate for a web service ipacert: ipaadmin_password: "{{ ipaadmin_password }}" serial_number: 123456789 state: released
--- - name: Playbook to restore a certificate hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Restore a certificate for a web service ipacert: ipaadmin_password: "{{ ipaadmin_password }}" serial_number: 123456789 state: released
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/restore-certificate.yml
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/restore-certificate.yml
63.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to retrieve a certificate and store it locally on the managed node hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Retrieve a certificate and save it to file 'cert.pem' ipacert: ipaadmin_password: "{{ ipaadmin_password }}" serial_number: 123456789 certificate_out: cert.pem state: retrieved
--- - name: Playbook to retrieve a certificate and store it locally on the managed node hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Retrieve a certificate and save it to file 'cert.pem' ipacert: ipaadmin_password: "{{ ipaadmin_password }}" serial_number: 123456789 certificate_out: cert.pem state: retrieved
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/retrieve-certificate.yml
$ ansible-playbook --vault-password-file=password_file -v -i <path_to_inventory_directory>/hosts <path_to_playbooks_directory>/retrieve-certificate.yml
第64章
64.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-add-cert user --certificate=MIQTPrajQAwg...
$ ipa user-add-cert user --certificate=MIQTPrajQAwg...
ipa user-add-cert user --certificate="$(openssl x509 -outform der -in user_cert.pem | base64 -w 0)"
$ ipa user-add-cert user --certificate="$(openssl x509 -outform der -in user_cert.pem | base64 -w 0)"
64.2.
図64.1
[D]
64.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-remove-cert user --certificate=MIQTPrajQAwg...
$ ipa user-remove-cert user --certificate=MIQTPrajQAwg...
ipa user-remove-cert user --certificate="$(openssl x509 -outform der -in user_cert.pem | base64 -w 0)"
$ ipa user-remove-cert user --certificate="$(openssl x509 -outform der -in user_cert.pem | base64 -w 0)"
64.4.
64.5.
第65章
65.1.
65.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa certprofile-show --out smime.cfg caIPAserviceCert
$ ipa certprofile-show --out smime.cfg caIPAserviceCert ------------------------------------------------ Profile configuration stored in file 'smime.cfg' ------------------------------------------------ Profile ID: caIPAserviceCert Profile description: Standard profile for network services Store issued certificates: TRUE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow vi smime.cfg
$ vi smime.cfg
- 注記
Copy to Clipboard Copied! Toggle word wrap Toggle overflow policyset.serverCertSet.7.default.params.exKeyUsageOIDs=1.3.6.1.5.5.7.3.4
policyset.serverCertSet.7.default.params.exKeyUsageOIDs=1.3.6.1.5.5.7.3.4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa certprofile-import smime --file smime.cfg \ --desc "S/MIME certificates" --store TRUE
$ ipa certprofile-import smime --file smime.cfg \ --desc "S/MIME certificates" --store TRUE ------------------------ Imported profile "smime" ------------------------ Profile ID: smime Profile description: S/MIME certificates Store issued certificates: TRUE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa certprofile-find
$ ipa certprofile-find ------------------ 4 profiles matched ------------------ Profile ID: caIPAserviceCert Profile description: Standard profile for network services Store issued certificates: TRUE Profile ID: IECUserRoles Profile description: User profile that includes IECUserRoles extension from request Store issued certificates: TRUE Profile ID: KDCs_PKINIT_Certs Profile description: Profile for PKINIT support by KDCs Store issued certificates: TRUE Profile ID: smime Profile description: S/MIME certificates Store issued certificates: TRUE ---------------------------- Number of entries returned 4 ----------------------------
65.3.
65.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-add smime_users_group
$ ipa group-add smime_users_group --------------------------------- Added group "smime users group" --------------------------------- Group name: smime_users_group GID: 75400001
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-add smime_user
$ ipa user-add smime_user First name: smime Last name: user ---------------------- Added user "smime_user" ---------------------- User login: smime_user First name: smime Last name: user Full name: smime user Display name: smime user Initials: TU Home directory: /home/smime_user GECOS: smime user Login shell: /bin/sh Principal name: smime_user@IDM.EXAMPLE.COM Principal alias: smime_user@IDM.EXAMPLE.COM Email address: smime_user@idm.example.com UID: 1505000004 GID: 1505000004 Password: False Member of groups: ipausers Kerberos keys available: False
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-add-member smime_users_group --users=smime_user
$ ipa group-add-member smime_users_group --users=smime_user Group name: smime_users_group GID: 1505000003 Member users: smime_user ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa caacl-add smime_acl
$ ipa caacl-add smime_acl ------------------------ Added CA ACL "smime_acl" ------------------------ ACL name: smime_acl Enabled: TRUE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa caacl-add-user smime_acl --group smime_users_group
$ ipa caacl-add-user smime_acl --group smime_users_group ACL name: smime_acl Enabled: TRUE User Groups: smime_users_group ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa caacl-add-profile smime_acl --certprofile smime
$ ipa caacl-add-profile smime_acl --certprofile smime ACL name: smime_acl Enabled: TRUE Profiles: smime User Groups: smime_users_group ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa caacl-show smime_acl
$ ipa caacl-show smime_acl ACL name: smime_acl Enabled: TRUE Profiles: smime User Groups: smime_users_group ...
65.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl req -new -newkey rsa:2048 -days 365 -nodes -keyout private.key -out cert.csr -subj '/CN=smime_user'
$ openssl req -new -newkey rsa:2048 -days 365 -nodes -keyout private.key -out cert.csr -subj '/CN=smime_user'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa cert-request cert.csr --principal=smime_user --profile-id=smime
$ ipa cert-request cert.csr --principal=smime_user --profile-id=smime
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-show user
$ ipa user-show user User login: user ... Certificate: MIICfzCCAWcCAQA... ...
65.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa certprofile-find
# ipa certprofile-find ------------------ 4 profiles matched ------------------ Profile ID: caIPAserviceCert Profile description: Standard profile for network services Store issued certificates: TRUE Profile ID: IECUserRoles ... Profile ID: smime Profile description: S/MIME certificates Store issued certificates: TRUE -------------------------- Number of entries returned --------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa certprofile-mod smime --desc "New certificate profile description"
# ipa certprofile-mod smime --desc "New certificate profile description" ------------------------------------ Modified Certificate Profile "smime" ------------------------------------ Profile ID: smime Profile description: New certificate profile description Store issued certificates: TRUE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow vi smime.cfg
# vi smime.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa certprofile-mod _profile_ID_ --file=smime.cfg
# ipa certprofile-mod _profile_ID_ --file=smime.cfg
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa certprofile-show smime
$ ipa certprofile-show smime Profile ID: smime Profile description: New certificate profile description Store issued certificates: TRUE
65.7.
policyset.list=serverCertSet policyset.serverCertSet.list=1,2,3,4,5,6,7,8 policyset.serverCertSet.1.constraint.class_id=subjectNameConstraintImpl policyset.serverCertSet.1.constraint.name=Subject Name Constraint policyset.serverCertSet.1.constraint.params.pattern=CN=[^,]+,.+ policyset.serverCertSet.1.constraint.params.accept=true policyset.serverCertSet.1.default.class_id=subjectNameDefaultImpl policyset.serverCertSet.1.default.name=Subject Name Default policyset.serverCertSet.1.default.params.name=CN=$request.req_subject_name.cn$, OU=pki-ipa, O=IPA policyset.serverCertSet.2.constraint.class_id=validityConstraintImpl policyset.serverCertSet.2.constraint.name=Validity Constraint policyset.serverCertSet.2.constraint.params.range=740 policyset.serverCertSet.2.constraint.params.notBeforeCheck=false policyset.serverCertSet.2.constraint.params.notAfterCheck=false policyset.serverCertSet.2.default.class_id=validityDefaultImpl policyset.serverCertSet.2.default.name=Validity Default policyset.serverCertSet.2.default.params.range=731 policyset.serverCertSet.2.default.params.startTime=0
policyset.list=serverCertSet
policyset.serverCertSet.list=1,2,3,4,5,6,7,8
policyset.serverCertSet.1.constraint.class_id=subjectNameConstraintImpl
policyset.serverCertSet.1.constraint.name=Subject Name Constraint
policyset.serverCertSet.1.constraint.params.pattern=CN=[^,]+,.+
policyset.serverCertSet.1.constraint.params.accept=true
policyset.serverCertSet.1.default.class_id=subjectNameDefaultImpl
policyset.serverCertSet.1.default.name=Subject Name Default
policyset.serverCertSet.1.default.params.name=CN=$request.req_subject_name.cn$, OU=pki-ipa, O=IPA
policyset.serverCertSet.2.constraint.class_id=validityConstraintImpl
policyset.serverCertSet.2.constraint.name=Validity Constraint
policyset.serverCertSet.2.constraint.params.range=740
policyset.serverCertSet.2.constraint.params.notBeforeCheck=false
policyset.serverCertSet.2.constraint.params.notAfterCheck=false
policyset.serverCertSet.2.default.class_id=validityDefaultImpl
policyset.serverCertSet.2.default.name=Validity Default
policyset.serverCertSet.2.default.params.range=731
policyset.serverCertSet.2.default.params.startTime=0
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
第66章
66.1.
66.2.
66.3.
図66.1
[D]
66.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl x509 -noout -text -in ca.pem
$ openssl x509 -noout -text -in ca.pem Certificate: Data: Version: 3 (0x2) Serial Number: 1 (0x1) Signature Algorithm: sha256WithRSAEncryption Issuer: O = IDM.EXAMPLE.COM, CN = Certificate Authority Validity Not Before: Oct 30 19:39:14 2017 GMT Not After : Oct 30 19:39:14 2037 GMT
66.5.
66.5.1.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66.5.2.
図66.2
[D]
66.5.3.
ipa cert-revoke 1032 --revocation-reason=1
$ ipa cert-revoke 1032 --revocation-reason=1
66.6.
66.6.1.
図66.3
[D]
66.6.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa cert-remove-hold 1032
$ ipa cert-remove-hold 1032
第67章
67.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mkdir ~/SmartCard/
[root@server]# mkdir ~/SmartCard/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/SmartCard/
[root@server]# cd ~/SmartCard/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEM
# openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /tmp/rootca.pem ~/SmartCard/ cp /tmp/subca.pem ~/SmartCard/ cp /tmp/issuingca.pem ~/SmartCard/
[root@server SmartCard]# cp /tmp/rootca.pem ~/SmartCard/ [root@server SmartCard]# cp /tmp/subca.pem ~/SmartCard/ [root@server SmartCard]# cp /tmp/issuingca.pem ~/SmartCard/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl x509 -noout -text -in rootca.pem | more
[root@server SmartCard]# openssl x509 -noout -text -in rootca.pem | more
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin ipa-advise config-server-for-smart-card-auth > config-server-for-smart-card-auth.sh
[root@server SmartCard]# kinit admin [root@server SmartCard]# ipa-advise config-server-for-smart-card-auth > config-server-for-smart-card-auth.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chmod +x config-server-for-smart-card-auth.sh ./config-server-for-smart-card-auth.sh rootca.pem subca.pem issuingca.pem
[root@server SmartCard]# chmod +x config-server-for-smart-card-auth.sh [root@server SmartCard]# ./config-server-for-smart-card-auth.sh rootca.pem subca.pem issuingca.pem Ticket cache:KEYRING:persistent:0:0 Default principal: admin@IDM.EXAMPLE.COM [...] Systemwide CA database updated. The ipa-certupdate command was successful
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSLOCSPEnable off
SSLOCSPEnable off
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart httpd
[root@server SmartCard]# systemctl restart httpd
警告
67.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEM
# openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl x509 -noout -text -in root-ca.pem | more
# openssl x509 -noout -text -in root-ca.pem | more
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mkdir SmartCard/
$ mkdir SmartCard/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /tmp/root-ca.pem ~/MyPlaybooks/SmartCard/ cp /tmp/intermediate-ca.pem ~/MyPlaybooks/SmartCard/ cp /etc/ipa/ca.crt ~/MyPlaybooks/SmartCard/ipa-ca.crt
# cp /tmp/root-ca.pem ~/MyPlaybooks/SmartCard/ # cp /tmp/intermediate-ca.pem ~/MyPlaybooks/SmartCard/ # cp /etc/ipa/ca.crt ~/MyPlaybooks/SmartCard/ipa-ca.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] ipaserver.idm.example.com [ipareplicas] ipareplica1.idm.example.com ipareplica2.idm.example.com [ipacluster:children] ipaserver ipareplicas [ipacluster:vars] ipaadmin_password= "{{ ipaadmin_password }}" ipasmartcard_server_ca_certs=/home/<user_name>/MyPlaybooks/SmartCard/root-ca.pem,/home/<user_name>/MyPlaybooks/SmartCard/intermediate-ca.pem,/home/<user_name>/MyPlaybooks/SmartCard/ipa-ca.crt
[ipaserver] ipaserver.idm.example.com [ipareplicas] ipareplica1.idm.example.com ipareplica2.idm.example.com [ipacluster:children] ipaserver ipareplicas [ipacluster:vars] ipaadmin_password= "{{ ipaadmin_password }}" ipasmartcard_server_ca_certs=/home/<user_name>/MyPlaybooks/SmartCard/root-ca.pem,/home/<user_name>/MyPlaybooks/SmartCard/intermediate-ca.pem,/home/<user_name>/MyPlaybooks/SmartCard/ipa-ca.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to set up smart card authentication for an IdM server hosts: ipaserver become: true roles: - role: ipasmartcard_server state: present
--- - name: Playbook to set up smart card authentication for an IdM server hosts: ipaserver become: true roles: - role: ipasmartcard_server state: present
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory install-smartcard-server.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory install-smartcard-server.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh root@ipaserver.idm.example.com
ssh root@ipaserver.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSLOCSPEnable off
SSLOCSPEnable off
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart httpd
# systemctl restart httpd
警告
--- - name: Playbook to setup smartcard for IPA server and replicas hosts: ipacluster [...]
---
- name: Playbook to setup smartcard for IPA server and replicas
hosts: ipacluster
[...]
67.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin ipa-advise config-client-for-smart-card-auth > config-client-for-smart-card-auth.sh
[root@server SmartCard]# kinit admin [root@server SmartCard]# ipa-advise config-client-for-smart-card-auth > config-client-for-smart-card-auth.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow scp config-client-for-smart-card-auth.sh root@client.idm.example.com:/root/SmartCard/
[root@server SmartCard]# scp config-client-for-smart-card-auth.sh root@client.idm.example.com:/root/SmartCard/ Password: config-client-for-smart-card-auth.sh 100% 2419 3.5MB/s 00:00
Copy to Clipboard Copied! Toggle word wrap Toggle overflow scp {rootca.pem,subca.pem,issuingca.pem} root@client.idm.example.com:/root/SmartCard/
[root@server SmartCard]# scp {rootca.pem,subca.pem,issuingca.pem} root@client.idm.example.com:/root/SmartCard/ Password: rootca.pem 100% 1237 9.6KB/s 00:00 subca.pem 100% 2514 19.6KB/s 00:00 issuingca.pem 100% 2514 19.6KB/s 00:00
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin chmod +x config-client-for-smart-card-auth.sh ./config-client-for-smart-card-auth.sh rootca.pem subca.pem issuingca.pem
[root@client SmartCard]# kinit admin [root@client SmartCard]# chmod +x config-client-for-smart-card-auth.sh [root@client SmartCard]# ./config-client-for-smart-card-auth.sh rootca.pem subca.pem issuingca.pem Ticket cache:KEYRING:persistent:0:0 Default principal: admin@IDM.EXAMPLE.COM [...] Systemwide CA database updated. The ipa-certupdate command was successful
注記
67.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEM
# openssl x509 -in <filename>.der -inform DER -out <filename>.pem -outform PEM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl x509 -noout -text -in root-ca.pem | more
# openssl x509 -noout -text -in root-ca.pem | more
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mkdir SmartCard/
$ mkdir SmartCard/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /tmp/root-ca.pem ~/MyPlaybooks/SmartCard/ cp /tmp/intermediate-ca.pem ~/MyPlaybooks/SmartCard/ cp /etc/ipa/ca.crt ~/MyPlaybooks/SmartCard/ipa-ca.crt
# cp /tmp/root-ca.pem ~/MyPlaybooks/SmartCard/ # cp /tmp/intermediate-ca.pem ~/MyPlaybooks/SmartCard/ # cp /etc/ipa/ca.crt ~/MyPlaybooks/SmartCard/ipa-ca.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaclients] ipaclient1.example.com ipaclient2.example.com [ipaclients:vars] ipaadmin_password=SomeADMINpassword ipasmartcard_client_ca_certs=/home/<user_name>/MyPlaybooks/SmartCard/root-ca.pem,/home/<user_name>/MyPlaybooks/SmartCard/intermediate-ca.pem,/home/<user_name>/MyPlaybooks/SmartCard/ipa-ca.crt
[ipaclients] ipaclient1.example.com ipaclient2.example.com [ipaclients:vars] ipaadmin_password=SomeADMINpassword ipasmartcard_client_ca_certs=/home/<user_name>/MyPlaybooks/SmartCard/root-ca.pem,/home/<user_name>/MyPlaybooks/SmartCard/intermediate-ca.pem,/home/<user_name>/MyPlaybooks/SmartCard/ipa-ca.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to set up smart card authentication for an IdM client hosts: ipaclients become: true roles: - role: ipasmartcard_client state: present
--- - name: Playbook to set up smart card authentication for an IdM client hosts: ipaclients become: true roles: - role: ipasmartcard_client state: present
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory install-smartcard-clients.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory install-smartcard-clients.yml
67.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat testuser.crt
[user@client SmartCard]$ cat testuser.crt
67.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
[user@client SmartCard]$ kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit <smartcard_user>
[user@client SmartCard]$ kinit <smartcard_user>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow export CERT=`openssl x509 -outform der -in testuser.crt | base64 -w0 -`
[user@client SmartCard]$ export CERT=`openssl x509 -outform der -in testuser.crt | base64 -w0 -`
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-add-cert <smartcard_user> --certificate=$CERT
[user@client SmartCard]$ ipa user-add-cert <smartcard_user> --certificate=$CERT
67.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum -y install opensc gnutls-utils
# yum -y install opensc gnutls-utils
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl start pcscd
# systemctl start pcscd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl status pcscd
# systemctl status pcscd
67.8.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkcs15-init --erase-card --use-default-transport-keys
$ pkcs15-init --erase-card --use-default-transport-keys Using reader with a card: Reader name PIN [Security Officer PIN] required. Please enter PIN [Security Officer PIN]:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkcs15-init --create-pkcs15 --use-default-transport-keys \ --pin 963214 --puk 321478 --so-pin 65498714 --so-puk 784123
$ pkcs15-init --create-pkcs15 --use-default-transport-keys \ --pin 963214 --puk 321478 --so-pin 65498714 --so-puk 784123 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkcs15-init --store-pin --label testuser \ --auth-id 01 --so-pin 65498714 --pin 963214 --puk 321478
$ pkcs15-init --store-pin --label testuser \ --auth-id 01 --so-pin 65498714 --pin 963214 --puk 321478 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkcs15-init --store-private-key testuser.key --label testuser_key \ --auth-id 01 --id 01 --pin 963214
$ pkcs15-init --store-private-key testuser.key --label testuser_key \ --auth-id 01 --id 01 --pin 963214 Using reader with a card: Reader name
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkcs15-init --store-certificate testuser.crt --label testuser_crt \ --auth-id 01 --id 01 --format pem --pin 963214
$ pkcs15-init --store-certificate testuser.crt --label testuser_crt \ --auth-id 01 --id 01 --format pem --pin 963214 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkcs15-init --store-public-key testuserpublic.key \ --label testuserpublic_key --auth-id 01 --id 01 --pin 963214
$ pkcs15-init --store-public-key testuserpublic.key \ --label testuserpublic_key --auth-id 01 --id 01 --pin 963214 Using reader with a card: Reader name
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkcs15-init -F
$ pkcs15-init -F
67.9.
67.10.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist
$ klist Ticket cache: KEYRING:persistent:1358900015:krb_cache_TObtNMd Default principal: example.user@REDHAT.COM Valid starting Expires Service principal 04/20/2020 13:58:24 04/20/2020 23:58:24 krbtgt/EXAMPLE.COM@EXAMPLE.COM renew until 04/27/2020 08:58:15
67.11.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow su - <user_name>
$ su - <user_name> PIN for smart_card
第68章
68.1.
68.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow root@idmserver ~]# sftp Administrator@winserver.ad.example.com Administrator@winserver.ad.example.com's password: Connected to Administrator@winserver.ad.example.com. sftp> cd <Path to certificates> sftp> ls adcs-winserver-ca.cer aduser1.pfx sftp> sftp> get adcs-winserver-ca.cer Fetching <Path to certificates>/adcs-winserver-ca.cer to adcs-winserver-ca.cer <Path to certificates>/adcs-winserver-ca.cer 100% 1254 15KB/s 00:00 sftp quit
root@idmserver ~]# sftp Administrator@winserver.ad.example.com Administrator@winserver.ad.example.com's password: Connected to Administrator@winserver.ad.example.com. sftp> cd <Path to certificates> sftp> ls adcs-winserver-ca.cer aduser1.pfx sftp> sftp> get adcs-winserver-ca.cer Fetching <Path to certificates>/adcs-winserver-ca.cer to adcs-winserver-ca.cer <Path to certificates>/adcs-winserver-ca.cer 100% 1254 15KB/s 00:00 sftp quit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sftp Administrator@winserver.ad.example.com
[root@client1 ~]# sftp Administrator@winserver.ad.example.com Administrator@winserver.ad.example.com's password: Connected to Administrator@winserver.ad.example.com. sftp> cd /<Path to certificates> sftp> get aduser1.pfx Fetching <Path to certificates>/aduser1.pfx to aduser1.pfx <Path to certificates>/aduser1.pfx 100% 1254 15KB/s 00:00 sftp quit
68.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-advise config-client-for-smart-card-auth > sc_client.sh
[root@idmserver ~]# ipa-advise config-client-for-smart-card-auth > sc_client.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-advise config-server-for-smart-card-auth > sc_server.sh
[root@idmserver ~]# ipa-advise config-server-for-smart-card-auth > sc_server.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sh -x sc_server.sh adcs-winserver-ca.cer
[root@idmserver ~]# sh -x sc_server.sh adcs-winserver-ca.cer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow scp sc_client.sh root@client1.idm.example.com:/root
[root@idmserver ~]# scp sc_client.sh root@client1.idm.example.com:/root Password: sc_client.sh 100% 2857 1.6MB/s 00:00
Copy to Clipboard Copied! Toggle word wrap Toggle overflow scp adcs-winserver-ca.cer root@client1.idm.example.com:/root
[root@idmserver ~]# scp adcs-winserver-ca.cer root@client1.idm.example.com:/root Password: adcs-winserver-ca.cer 100% 1254 952.0KB/s 00:00
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sh -x sc_client.sh adcs-winserver-ca.cer
[root@idmclient1 ~]# sh -x sc_client.sh adcs-winserver-ca.cer
68.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl pkcs12 -in aduser1.pfx -out aduser1_cert_only.pem -clcerts -nodes
[root@idmclient1 ~]# openssl pkcs12 -in aduser1.pfx -out aduser1_cert_only.pem -clcerts -nodes Enter Import Password:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl pkcs12 -in adduser1.pfx -nocerts -out adduser1.pem > aduser1.key
[root@idmclient1 ~]# openssl pkcs12 -in adduser1.pfx -nocerts -out adduser1.pem > aduser1.key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl pkcs12 -in adduser1.pfx -clcerts -nokeys -out aduser1_cert_only.pem > aduser1.crt
[root@idmclient1 ~]# openssl pkcs12 -in adduser1.pfx -clcerts -nokeys -out aduser1_cert_only.pem > aduser1.crt
68.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum -y install opensc gnutls-utils
# yum -y install opensc gnutls-utils
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl start pcscd
# systemctl start pcscd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl status pcscd
# systemctl status pcscd
68.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkcs15-init --erase-card --use-default-transport-keys
$ pkcs15-init --erase-card --use-default-transport-keys Using reader with a card: Reader name PIN [Security Officer PIN] required. Please enter PIN [Security Officer PIN]:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkcs15-init --create-pkcs15 --use-default-transport-keys \ --pin 963214 --puk 321478 --so-pin 65498714 --so-puk 784123
$ pkcs15-init --create-pkcs15 --use-default-transport-keys \ --pin 963214 --puk 321478 --so-pin 65498714 --so-puk 784123 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkcs15-init --store-pin --label testuser \ --auth-id 01 --so-pin 65498714 --pin 963214 --puk 321478
$ pkcs15-init --store-pin --label testuser \ --auth-id 01 --so-pin 65498714 --pin 963214 --puk 321478 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkcs15-init --store-private-key testuser.key --label testuser_key \ --auth-id 01 --id 01 --pin 963214
$ pkcs15-init --store-private-key testuser.key --label testuser_key \ --auth-id 01 --id 01 --pin 963214 Using reader with a card: Reader name
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkcs15-init --store-certificate testuser.crt --label testuser_crt \ --auth-id 01 --id 01 --format pem --pin 963214
$ pkcs15-init --store-certificate testuser.crt --label testuser_crt \ --auth-id 01 --id 01 --format pem --pin 963214 Using reader with a card: Reader name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkcs15-init --store-public-key testuserpublic.key \ --label testuserpublic_key --auth-id 01 --id 01 --pin 963214
$ pkcs15-init --store-public-key testuserpublic.key \ --label testuserpublic_key --auth-id 01 --id 01 --pin 963214 Using reader with a card: Reader name
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow pkcs15-init -F
$ pkcs15-init -F
68.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow vim /etc/sssd/sssd.conf
[root@idmclient1 ~]# vim /etc/sssd/sssd.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [pam] p11_child_timeout = 60
[pam] p11_child_timeout = 60
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [domain/IDM.EXAMPLE.COM] krb5_auth_timeout = 60
[domain/IDM.EXAMPLE.COM] krb5_auth_timeout = 60
68.8.
第69章
69.1.
69.2.
ipa certmaprule-add simple_rule --matchrule '<ISSUER>CN=Smart Card CA,O=EXAMPLE.ORG' --maprule '(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})'
# ipa certmaprule-add simple_rule --matchrule '<ISSUER>CN=Smart Card CA,O=EXAMPLE.ORG' --maprule '(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})'
69.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CERT=$(openssl x509 -in /path/to/certificate -outform der|base64 -w0)
# CERT=$(openssl x509 -in /path/to/certificate -outform der|base64 -w0)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sssctl cert-eval-rule $CERT --match='<ISSUER>CN=adcs19-WIN1-CA,DC=AD,DC=EXAMPLE,DC=COM' --map='LDAPU1:(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<SR>{serial_number!hex_ur})'
# sssctl cert-eval-rule $CERT --match='<ISSUER>CN=adcs19-WIN1-CA,DC=AD,DC=EXAMPLE,DC=COM' --map='LDAPU1:(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<SR>{serial_number!hex_ur})' Certificate matches rule. Mapping filter: (altSecurityIdentities=X509:<I>DC=com,DC=example,DC=ad,CN=adcs19-WIN1-CA<SR>0F0000000000DB8852DD7B246C9C0F0000003B)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa certmaprule-add simple_rule --matchrule '<ISSUER>CN=adcs19-WIN1-CA,DC=AD,DC=EXAMPLE,DC=COM' --maprule 'LDAPU1:(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<SR>{serial_number!hex_ur})'
# ipa certmaprule-add simple_rule --matchrule '<ISSUER>CN=adcs19-WIN1-CA,DC=AD,DC=EXAMPLE,DC=COM' --maprule 'LDAPU1:(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<SR>{serial_number!hex_ur})'
69.4.
69.4.1.
図69.1
[D]Copy to Clipboard Copied! Toggle word wrap Toggle overflow (ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})
(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <ISSUER>CN=Smart Card CA,O=EXAMPLE.ORG
<ISSUER>CN=Smart Card CA,O=EXAMPLE.ORG
図69.2
[D]Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart sssd
# systemctl restart sssd
69.4.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
# kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa certmaprule-add rule_name --matchrule '<ISSUER>CN=Smart Card CA,O=EXAMPLE.ORG' --maprule '(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})'
# ipa certmaprule-add rule_name --matchrule '<ISSUER>CN=Smart Card CA,O=EXAMPLE.ORG' --maprule '(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})' ------------------------------------------------------- Added Certificate Identity Mapping Rule "rule_name" ------------------------------------------------------- Rule name: rule_name Mapping rule: (ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500}) Matching rule: <ISSUER>CN=Smart Card CA,O=EXAMPLE.ORG Enabled: TRUE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart sssd
# systemctl restart sssd
69.4.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat idm_user_certificate.pem -----BEGIN CERTIFICATE----- MIIFFTCCA/2gAwIBAgIBEjANBgkqhkiG9w0BAQsFADA6MRgwFgYDVQQKDA9JRE0u RVhBTVBMRS5DT00xHjAcBgNVBAMMFUNlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0x ODA5MDIxODE1MzlaFw0yMDA5MDIxODE1MzlaMCwxGDAWBgNVBAoMD0lETS5FWEFN [...output truncated...]
[root@server ~]# cat idm_user_certificate.pem -----BEGIN CERTIFICATE----- MIIFFTCCA/2gAwIBAgIBEjANBgkqhkiG9w0BAQsFADA6MRgwFgYDVQQKDA9JRE0u RVhBTVBMRS5DT00xHjAcBgNVBAMMFUNlcnRpZmljYXRlIEF1dGhvcml0eTAeFw0x ODA5MDIxODE1MzlaFw0yMDA5MDIxODE1MzlaMCwxGDAWBgNVBAoMD0lETS5FWEFN [...output truncated...]
図69.3
[D]図69.4
[D]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sss_cache -u idm_user
# sss_cache -u idm_user
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa certmap-match idm_user_cert.pem
# ipa certmap-match idm_user_cert.pem -------------- 1 user matched -------------- Domain: IDM.EXAMPLE.COM User logins: idm_user ---------------------------- Number of entries returned 1 ----------------------------
69.4.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
# kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CERT=$(openssl x509 -in idm_user_cert.pem -outform der|base64 -w0) ipa user-add-certmapdata idm_user --certificate $CERT
# CERT=$(openssl x509 -in idm_user_cert.pem -outform der|base64 -w0) # ipa user-add-certmapdata idm_user --certificate $CERT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-add-certmapdata idm_user --subject "O=EXAMPLE.ORG,CN=test" --issuer "CN=Smart Card CA,O=EXAMPLE.ORG"
# ipa user-add-certmapdata idm_user --subject "O=EXAMPLE.ORG,CN=test" --issuer "CN=Smart Card CA,O=EXAMPLE.ORG" -------------------------------------------- Added certificate mappings to user "idm_user" -------------------------------------------- User login: idm_user Certificate mapping data: X509:<I>O=EXAMPLE.ORG,CN=Smart Card CA<S>CN=test,O=EXAMPLE.ORG
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sss_cache -u idm_user
# sss_cache -u idm_user
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa certmap-match idm_user_cert.pem
# ipa certmap-match idm_user_cert.pem -------------- 1 user matched -------------- Domain: IDM.EXAMPLE.COM User logins: idm_user ---------------------------- Number of entries returned 1 ----------------------------
69.5.
69.6.
69.6.1.
図69.5
[D]Copy to Clipboard Copied! Toggle word wrap Toggle overflow (userCertificate;binary={cert!bin})
(userCertificate;binary={cert!bin})
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow <ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
図69.6
[D]Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart sssd
# systemctl restart sssd
69.6.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
# kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa certmaprule-add simpleADrule --matchrule '<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' --maprule '(userCertificate;binary={cert!bin})' --domain ad.example.com
# ipa certmaprule-add simpleADrule --matchrule '<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' --maprule '(userCertificate;binary={cert!bin})' --domain ad.example.com ------------------------------------------------------- Added Certificate Identity Mapping Rule "simpleADrule" ------------------------------------------------------- Rule name: simpleADrule Mapping rule: (userCertificate;binary={cert!bin}) Matching rule: <ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com Domain name: ad.example.com Enabled: TRUE
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart sssd
# systemctl restart sssd
69.7.
69.7.1.
図69.7
[D]Copy to Clipboard Copied! Toggle word wrap Toggle overflow (altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500})
(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500})
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ad.example.com
ad.example.com
図69.8
[D]Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart sssd
# systemctl restart sssd
69.7.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
# kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa certmaprule-add ad_configured_for_mapping_rule --matchrule '<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' --maprule '(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500})' --domain=ad.example.com
# ipa certmaprule-add ad_configured_for_mapping_rule --matchrule '<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' --maprule '(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500})' --domain=ad.example.com ------------------------------------------------------- Added Certificate Identity Mapping Rule "ad_configured_for_mapping_rule" ------------------------------------------------------- Rule name: ad_configured_for_mapping_rule Mapping rule: (altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500}) Matching rule: <ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com Domain name: ad.example.com Enabled: TRUE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart sssd
# systemctl restart sssd
69.7.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ldapsearch -o ldif-wrap=no -LLL -h adserver.ad.example.com \ -p 389 -D cn=Administrator,cn=users,dc=ad,dc=example,dc=com \ -W -b cn=users,dc=ad,dc=example,dc=com "(cn=ad_user)" \ altSecurityIdentities
$ ldapsearch -o ldif-wrap=no -LLL -h adserver.ad.example.com \ -p 389 -D cn=Administrator,cn=users,dc=ad,dc=example,dc=com \ -W -b cn=users,dc=ad,dc=example,dc=com "(cn=ad_user)" \ altSecurityIdentities Enter LDAP Password: dn: CN=ad_user,CN=Users,DC=ad,DC=example,DC=com altSecurityIdentities: X509:<I>DC=com,DC=example,DC=ad,CN=AD-ROOT-CA<S>DC=com,DC=example,DC=ad,CN=Users,CN=ad_user
69.8.
69.8.1.
図69.9
[D]Copy to Clipboard Copied! Toggle word wrap Toggle overflow (userCertificate;binary={cert!bin})
(userCertificate;binary={cert!bin})
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow <ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
図69.10
[D]Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart sssd
# systemctl restart sssd
69.8.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
# kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa certmaprule-add simpleADrule --matchrule '<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' --maprule '(userCertificate;binary={cert!bin})' --domain ad.example.com
# ipa certmaprule-add simpleADrule --matchrule '<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' --maprule '(userCertificate;binary={cert!bin})' --domain ad.example.com ------------------------------------------------------- Added Certificate Identity Mapping Rule "simpleADrule" ------------------------------------------------------- Rule name: simpleADrule Mapping rule: (userCertificate;binary={cert!bin}) Matching rule: <ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com Domain name: ad.example.com Enabled: TRUE
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart sssd
# systemctl restart sssd
69.8.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sss_cache -u ad_user@ad.example.com
# sss_cache -u ad_user@ad.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa certmap-match ad_user_cert.pem
# ipa certmap-match ad_user_cert.pem -------------- 1 user matched -------------- Domain: AD.EXAMPLE.COM User logins: ad_user@ad.example.com ---------------------------- Number of entries returned 1 ----------------------------
69.8.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
# kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow CERT=$(openssl x509 -in /path/to/certificate -outform der|base64 -w0)
# CERT=$(openssl x509 -in /path/to/certificate -outform der|base64 -w0)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idoverrideuser-add-cert ad_user@ad.example.com --certificate $CERT
# ipa idoverrideuser-add-cert ad_user@ad.example.com --certificate $CERT
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sss_cache -u ad_user@ad.example.com
# sss_cache -u ad_user@ad.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa certmap-match ad_user_cert.pem
# ipa certmap-match ad_user_cert.pem -------------- 1 user matched -------------- Domain: AD.EXAMPLE.COM User logins: ad_user@ad.example.com ---------------------------- Number of entries returned 1 ----------------------------
69.9.
ipa certmaprule-add ad_cert_for_ipa_and_ad_users \ --maprule='(|(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500}))' \ --matchrule='<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' \ --domain=ad.example.com
$ ipa certmaprule-add ad_cert_for_ipa_and_ad_users \
--maprule='(|(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500}))' \
--matchrule='<ISSUER>CN=AD-ROOT-CA,DC=ad,DC=example,DC=com' \
--domain=ad.example.com
ipa certmaprule-add ipa_cert_for_ad_users \ --maprule='(|(userCertificate;binary={cert!bin})(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500}))' \ --matchrule='<ISSUER>CN=Certificate Authority,O=REALM.EXAMPLE.COM' \ --domain=idm.example.com --domain=ad.example.com
$ ipa certmaprule-add ipa_cert_for_ad_users \
--maprule='(|(userCertificate;binary={cert!bin})(ipacertmapdata=X509:<I>{issuer_dn!nss_x500}<S>{subject_dn!nss_x500})(altSecurityIdentities=X509:<I>{issuer_dn!ad_x500}<S>{subject_dn!ad_x500}))' \
--matchrule='<ISSUER>CN=Certificate Authority,O=REALM.EXAMPLE.COM' \
--domain=idm.example.com --domain=ad.example.com
69.10.
第70章
70.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin ipa-advise config-server-for-smart-card-auth > server_certificate_script.sh
# kinit admin # ipa-advise config-server-for-smart-card-auth > server_certificate_script.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chmod +x server_certificate_script.sh
# chmod +x server_certificate_script.sh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ./server_certificate_script.sh /etc/ipa/ca.crt
# ./server_certificate_script.sh /etc/ipa/ca.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ./server_certificate_script.sh /tmp/ca1.pem /tmp/ca2.pem
# ./server_certificate_script.sh /tmp/ca1.pem /tmp/ca2.pem
70.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mkdir ~/certdb/ certutil -N -d ~/certdb/
# mkdir ~/certdb/ # certutil -N -d ~/certdb/ Enter a password which will be used to encrypt your keys. The password should be at least 8 characters long, and should contain at least one non-alphabetic character. Enter new password: Re-enter password:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -R -d ~/certdb/ -a -g 4096 -n idm_user -s "CN=idm_user,O=IDM.EXAMPLE.COM" > certificate_request.csr
# certutil -R -d ~/certdb/ -a -g 4096 -n idm_user -s "CN=idm_user,O=IDM.EXAMPLE.COM" > certificate_request.csr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Enter Password or Pin for "NSS Certificate DB": A random seed must be generated that will be used in the creation of your key. One of the easiest ways to create a random seed is to use the timing of keystrokes on a keyboard. To begin, type keys on the keyboard until this progress meter is full. DO NOT USE THE AUTOREPEAT FUNCTION ON YOUR KEYBOARD! Continue typing until the progress meter is full:
Enter Password or Pin for "NSS Certificate DB": A random seed must be generated that will be used in the creation of your key. One of the easiest ways to create a random seed is to use the timing of keystrokes on a keyboard. To begin, type keys on the keyboard until this progress meter is full. DO NOT USE THE AUTOREPEAT FUNCTION ON YOUR KEYBOARD! Continue typing until the progress meter is full:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa cert-request certificate_request.csr --principal=idm_user@IDM.EXAMPLE.COM --profile-id=IECUserRoles --certificate-out=~/idm_user.pem
# ipa cert-request certificate_request.csr --principal=idm_user@IDM.EXAMPLE.COM --profile-id=IECUserRoles --certificate-out=~/idm_user.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -A -d ~/certdb/ -n idm_user -t "P,," -i ~/idm_user.pem
# certutil -A -d ~/certdb/ -n idm_user -t "P,," -i ~/idm_user.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -K -d ~/certdb/
# certutil -K -d ~/certdb/ < 0> rsa 5ad14d41463b87a095b1896cf0068ccc467df395 NSS Certificate DB:idm_user
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pk12util -d ~/certdb -o ~/idm_user.p12 -n idm_user
# pk12util -d ~/certdb -o ~/idm_user.p12 -n idm_user Enter Password or Pin for "NSS Certificate DB": Enter password for PKCS12 file: Re-enter password: pk12util: PKCS12 EXPORT SUCCESSFUL
Copy to Clipboard Copied! Toggle word wrap Toggle overflow scp ~/idm_user.p12 idm_user@client.idm.example.com:/home/idm_user/
# scp ~/idm_user.p12 idm_user@client.idm.example.com:/home/idm_user/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chmod o-rwx /home/idm_user/
# chmod o-rwx /home/idm_user/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rm ~/certdb/ rm ~/idm_user.p12
# rm ~/certdb/ # rm ~/idm_user.p12
70.3.
70.4.
70.5.
図70.8
[D]
70.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit -X X509_idm_user='PKCS12:~/idm_user.p12' idm_user
$ kinit -X X509_idm_user='PKCS12:~/idm_user.p12' idm_user
注記
第71章
71.1.
71.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ~]$ kinit admin Password for admin@IDM.EXAMPLE.COM:
~]$ kinit admin Password for admin@IDM.EXAMPLE.COM:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ~]$ ipa server-role-find --role 'CA server' ---------------------- 2 server roles matched ---------------------- Server name: server.idm.example.com Role name: CA server Role status: enabled Server name: replica.idm.example.com Role name: CA server Role status: enabled ---------------------------- Number of entries returned 2 ----------------------------
~]$ ipa server-role-find --role 'CA server' ---------------------- 2 server roles matched ---------------------- Server name: server.idm.example.com Role name: CA server Role status: enabled Server name: replica.idm.example.com Role name: CA server Role status: enabled ---------------------------- Number of entries returned 2 ----------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ~]$ ipa config-show | grep 'CA renewal' IPA CA renewal master: server.idm.example.com
~]$ ipa config-show | grep 'CA renewal' IPA CA renewal master: server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ~]$ ipa config-mod --ca-renewal-master-server replica.idm.example.com | grep 'CA renewal' IPA CA renewal master: replica.idm.example.com
~]$ ipa config-mod --ca-renewal-master-server replica.idm.example.com | grep 'CA renewal' IPA CA renewal master: replica.idm.example.com
重要
第72章
72.1.
external_CA certificate > IdM CA certificate > LDAP certificate
external_CA certificate > IdM CA certificate > LDAP certificate
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-cacert-manage renew --self-signed
# ipa-cacert-manage renew --self-signed Renewing CA certificate, please wait CA certificate successfully renewed The ipa-cacert-manage command was successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh root@idmclient01.idm.example.com
# ssh root@idmclient01.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-certupdate
[idmclient01 ~]# ipa-certupdate Systemwide CA database updated. Systemwide CA database updated. The ipa-certupdate command was successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl crl2pkcs7 -nocrl -certfile /etc/ipa/ca.crt | openssl pkcs7 -print_certs -text -noout
[idmclient01 ~]$ openssl crl2pkcs7 -nocrl -certfile /etc/ipa/ca.crt | openssl pkcs7 -print_certs -text -noout [...] Certificate: Data: Version: 3 (0x2) Serial Number: 39 (0x27) Signature Algorithm: sha256WithRSAEncryption Issuer: O=IDM.EXAMPLE.COM, CN=Certificate Authority Validity Not Before: Jul 1 16:32:45 2019 GMT Not After : Jul 1 16:32:45 2039 GMT Subject: O=IDM.EXAMPLE.COM, CN=Certificate Authority [...]
72.2.
72.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ~]# ipa-cacert-manage renew --external-ca --external-ca-type=ms-cs [--external-ca-profile=PROFILE] Exporting CA certificate signing request, please wait The next step is to get /var/lib/ipa/ca.csr signed by your CA and re-run ipa-cacert-manage as: ipa-cacert-manage renew --external-cert-file=/path/to/signed_certificate --external-cert-file=/path/to/external_ca_certificate The ipa-cacert-manage command was successful
~]# ipa-cacert-manage renew --external-ca --external-ca-type=ms-cs [--external-ca-profile=PROFILE] Exporting CA certificate signing request, please wait The next step is to get /var/lib/ipa/ca.csr signed by your CA and re-run ipa-cacert-manage as: ipa-cacert-manage renew --external-cert-file=/path/to/signed_certificate --external-cert-file=/path/to/external_ca_certificate The ipa-cacert-manage command was successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ~]# ipa-cacert-manage renew --external-ca Exporting CA certificate signing request, please wait The next step is to get /var/lib/ipa/ca.csr signed by your CA and re-run ipa-cacert-manage as: ipa-cacert-manage renew --external-cert-file=/path/to/signed_certificate --external-cert-file=/path/to/external_ca_certificate The ipa-cacert-manage command was successful
~]# ipa-cacert-manage renew --external-ca Exporting CA certificate signing request, please wait The next step is to get /var/lib/ipa/ca.csr signed by your CA and re-run ipa-cacert-manage as: ipa-cacert-manage renew --external-cert-file=/path/to/signed_certificate --external-cert-file=/path/to/external_ca_certificate The ipa-cacert-manage command was successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ~]# ipa-cacert-manage renew --external-cert-file=/path/to/signed_certificate --external-cert-file=/path/to/external_ca_certificate_1 --external-cert-file=/path/to/external_ca_certificate_2
~]# ipa-cacert-manage renew --external-cert-file=/path/to/signed_certificate --external-cert-file=/path/to/external_ca_certificate_1 --external-cert-file=/path/to/external_ca_certificate_2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-certupdate
[client ~]$ ipa-certupdate Systemwide CA database updated. Systemwide CA database updated. The ipa-certupdate command was successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl crl2pkcs7 -nocrl -certfile /etc/ipa/ca.crt | openssl pkcs7 -print_certs -text -noout
[client ~]$ openssl crl2pkcs7 -nocrl -certfile /etc/ipa/ca.crt | openssl pkcs7 -print_certs -text -noout [...] Certificate: Data: Version: 3 (0x2) Serial Number: 39 (0x27) Signature Algorithm: sha256WithRSAEncryption Issuer: O=IDM.EXAMPLE.COM, CN=Certificate Authority Validity Not Before: Jul 1 16:32:45 2019 GMT Not After : Jul 1 16:32:45 2039 GMT Subject: O=IDM.EXAMPLE.COM, CN=Certificate Authority [...]
第73章
73.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-cert-fix
# ipa-cert-fix ... The following certificates will be renewed: Dogtag sslserver certificate: Subject: CN=ca1.example.com,O=EXAMPLE.COM 201905222205 Serial: 13 Expires: 2019-05-12 05:55:47 ... Enter "yes" to proceed:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Enter "yes" to proceed: true Proceeding. Renewed Dogtag sslserver certificate: Subject: CN=ca1.example.com,O=EXAMPLE.COM 201905222205 Serial: 268369925 Expires: 2021-08-14 02:19:33 ... Becoming renewal master. The ipa-cert-fix command was successful
Enter "yes" to proceed: true Proceeding. Renewed Dogtag sslserver certificate: Subject: CN=ca1.example.com,O=EXAMPLE.COM 201905222205 Serial: 268369925 Expires: 2021-08-14 02:19:33 ... Becoming renewal master. The ipa-cert-fix command was successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipactl status
# ipactl status Directory Service: RUNNING krb5kdc Service: RUNNING kadmin Service: RUNNING httpd Service: RUNNING ipa-custodia Service: RUNNING pki-tomcatd Service: RUNNING ipa-otpd Service: RUNNING ipa: INFO: The ipactl command was successful
73.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipactl restart --force
# ipactl restart --force
Copy to Clipboard Copied! Toggle word wrap Toggle overflow getcert list | egrep '^Request|status:|subject:'
# getcert list | egrep '^Request|status:|subject:' Request ID '20190522120745': status: MONITORING subject: CN=IPA RA,O=EXAMPLE.COM 201905222205 Request ID '20190522120834': status: MONITORING subject: CN=Certificate Authority,O=EXAMPLE.COM 201905222205 ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Request ID '20190522120835': status: CA_UNREACHABLE subject: CN=ca2.example.com,O=EXAMPLE.COM 201905222205 ...
Request ID '20190522120835': status: CA_UNREACHABLE subject: CN=ca2.example.com,O=EXAMPLE.COM 201905222205 ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-cert-fix
# ipa-cert-fix Dogtag sslserver certificate: Subject: CN=ca2.example.com,O=EXAMPLE.COM Serial: 3 Expires: 2019-05-11 12:07:11 Enter "yes" to proceed: true Proceeding. Renewed Dogtag sslserver certificate: Subject: CN=ca2.example.com,O=EXAMPLE.COM 201905222205 Serial: 15 Expires: 2019-08-14 04:25:05 The ipa-cert-fix command was successful
第74章
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-cacert-manage install
# ipa-cacert-manage install
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-certupdate
# ipa-certupdate
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl req -new -newkey rsa:4096 -days 365 -nodes -keyout new.key -out new.csr -addext "subjectAltName = DNS:server.idm.example.com" -subj '/CN=server.idm.example.com,O=IDM.EXAMPLE.COM'
$ openssl req -new -newkey rsa:4096 -days 365 -nodes -keyout new.key -out new.csr -addext "subjectAltName = DNS:server.idm.example.com" -subj '/CN=server.idm.example.com,O=IDM.EXAMPLE.COM'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-server-certinstall -w --pin=password new.key new.crt
# ipa-server-certinstall -w --pin=password new.key new.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-server-certinstall -d --pin=password new.key new.cert
# ipa-server-certinstall -d --pin=password new.key new.cert
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart httpd.service
# systemctl restart httpd.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart dirsrv@IDM.EXAMPLE.COM.service
# systemctl restart dirsrv@IDM.EXAMPLE.COM.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-certupdate
# ipa-certupdate
第75章
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-cacert-manage install ca_certificate_chain_file.crt
# ipa-cacert-manage install ca_certificate_chain_file.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-certupdate
# ipa-certupdate
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl req -new -nodes -in /var/lib/ipa/private/httpd.key -out /tmp/http.csr -addext 'subjectAltName = DNS:_server.idm.example.com_, otherName:1.3.6.1.4.1.311.20.2.3;UTF8:HTTP/server.idm.example.com@IDM.EXAMPLE.COM' -subj '/O=IDM.EXAMPLE.COM/CN=server.idm.example.com'
$ openssl req -new -nodes -in /var/lib/ipa/private/httpd.key -out /tmp/http.csr -addext 'subjectAltName = DNS:_server.idm.example.com_, otherName:1.3.6.1.4.1.311.20.2.3;UTF8:HTTP/server.idm.example.com@IDM.EXAMPLE.COM' -subj '/O=IDM.EXAMPLE.COM/CN=server.idm.example.com'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl req -new -newkey rsa:2048 -nodes -keyout /var/lib/ipa/private/httpd.key -out /tmp/http.csr -addext 'subjectAltName = DNS:server.idm.example.com, otherName:1.3.6.1.4.1.311.20.2.3;UTF8:HTTP/server.idm.example.com@IDM.EXAMPLE.COM' -subj '/O=IDM.EXAMPLE.COM/CN=server.idm.example.com'
$ openssl req -new -newkey rsa:2048 -nodes -keyout /var/lib/ipa/private/httpd.key -out /tmp/http.csr -addext 'subjectAltName = DNS:server.idm.example.com, otherName:1.3.6.1.4.1.311.20.2.3;UTF8:HTTP/server.idm.example.com@IDM.EXAMPLE.COM' -subj '/O=IDM.EXAMPLE.COM/CN=server.idm.example.com'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl req -new -newkey rsa:2048 -nodes -keyout ~/ldap.key -out /tmp/ldap.csr -addext 'subjectAltName = DNS:server.idm.example.com, otherName:1.3.6.1.4.1.311.20.2.3;UTF8:ldap/server.idm.example.com@IDM.EXAMPLE.COM' -subj '/O=IDM.EXAMPLE.COM/CN=server.idm.example.com'
$ openssl req -new -newkey rsa:2048 -nodes -keyout ~/ldap.key -out /tmp/ldap.csr -addext 'subjectAltName = DNS:server.idm.example.com, otherName:1.3.6.1.4.1.311.20.2.3;UTF8:ldap/server.idm.example.com@IDM.EXAMPLE.COM' -subj '/O=IDM.EXAMPLE.COM/CN=server.idm.example.com'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /path/to/httpd.crt /var/lib/ipa/certs/
# cp /path/to/httpd.crt /var/lib/ipa/certs/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ -L
# certutil -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ -L Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI Server-Cert u,u,u
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -D -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ -n 'Server-Cert' -f /etc/dirsrv/slapd-IDM-EXAMPLE-COM/pwdfile.txt
# certutil -D -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ -n 'Server-Cert' -f /etc/dirsrv/slapd-IDM-EXAMPLE-COM/pwdfile.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl pkcs12 -export -in ldap.crt -inkey ldap.key -out ldap.p12 -name Server-Cert
# openssl pkcs12 -export -in ldap.crt -inkey ldap.key -out ldap.p12 -name Server-Cert
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pk12util -i ldap.p12 -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ -k /etc/dirsrv/slapd-IDM-EXAMPLE-COM/pwdfile.txt
# pk12util -i ldap.p12 -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ -k /etc/dirsrv/slapd-IDM-EXAMPLE-COM/pwdfile.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -L -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/
# certutil -L -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart httpd.service
# systemctl restart httpd.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart dirsrv@IDM-EXAMPLE-COM.service
# systemctl restart dirsrv@IDM-EXAMPLE-COM.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-server-certinstall -w --pin=password /var/lib/ipa/private/httpd.key /var/lib/ipa/certs/httpd.crt
# ipa-server-certinstall -w --pin=password /var/lib/ipa/private/httpd.key /var/lib/ipa/certs/httpd.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-server-certinstall -d --pin=password /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ldap.key /path/to/ldap.crt
# ipa-server-certinstall -d --pin=password /etc/dirsrv/slapd-IDM-EXAMPLE-COM/ldap.key /path/to/ldap.crt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart httpd.service
# systemctl restart httpd.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart dirsrv@IDM-EXAMPLE-COM.service
# systemctl restart dirsrv@IDM-EXAMPLE-COM.service
第76章
76.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-crlgen-manage status
[root@server ~]# ipa-crlgen-manage status CRL generation: enabled Last CRL update: 2019-10-31 12:00:00 Last CRL Number: 6 The ipa-crlgen-manage command was successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-crlgen-manage disable
[root@server ~]# ipa-crlgen-manage disable Stopping pki-tomcatd Editing /var/lib/pki/pki-tomcat/conf/ca/CS.cfg Starting pki-tomcatd Editing /etc/httpd/conf.d/ipa-pki-proxy.conf Restarting httpd CRL generation disabled on the local host. Please make sure to configure CRL generation on another master with ipa-crlgen-manage enable. The ipa-crlgen-manage command was successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-crlgen-manage status
[root@server ~]# ipa-crlgen-manage status
76.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-crlgen-manage enable
[root@replica1 ~]# ipa-crlgen-manage enable Stopping pki-tomcatd Editing /var/lib/pki/pki-tomcat/conf/ca/CS.cfg Starting pki-tomcatd Editing /etc/httpd/conf.d/ipa-pki-proxy.conf Restarting httpd Forcing CRL update CRL generation enabled on the local host. Please make sure to have only a single CRL generation master. The ipa-crlgen-manage command was successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-crlgen-manage status
[root@replica1 ~]# ipa-crlgen-manage status CRL generation: enabled Last CRL update: 2019-10-31 12:10:00 Last CRL Number: 7 The ipa-crlgen-manage command was successful
76.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl stop pki-tomcatd@pki-tomcat.service
# systemctl stop pki-tomcatd@pki-tomcat.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ca.crl.MasterCRL.autoUpdateInterval=60
ca.crl.MasterCRL.autoUpdateInterval=60
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl start pki-tomcatd@pki-tomcat.service
# systemctl start pki-tomcatd@pki-tomcat.service
第77章
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
[user@server ~]$ kinit admin Password for admin@IDM.EXAMPLE.COM:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa config-show | grep 'CA renewal'
[user@server ~]$ ipa config-show | grep 'CA renewal' IPA CA renewal master: server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-crlgen-manage status
[user@server ~]$ ipa-crlgen-manage status CRL generation: enabled Last CRL update: 2019-10-31 12:00:00 Last CRL Number: 6 The ipa-crlgen-manage command was successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-crlgen-manage status
[user@replica ~]$ ipa-crlgen-manage status CRL generation: disabled The ipa-crlgen-manage command was successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa server-role-find --role 'CA server'
[user@server ~]$ ipa server-role-find --role 'CA server' ---------------------- 2 server roles matched ---------------------- Server name: server.idm.example.com Role name: CA server Role status: enabled Server name: replica.idm.example.com Role name: CA server Role status: enabled ---------------------------- Number of entries returned 2 ----------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa config-mod --ca-renewal-master-server replica.idm.example.com
[user@server ~]$ ipa config-mod --ca-renewal-master-server replica.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki-server ca-config-set ca.certStatusUpdateInterval 0
[root@server ~]# pki-server ca-config-set ca.certStatusUpdateInterval 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipactl restart
[root@server ~]# ipactl restart
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pki-server ca-config-unset ca.certStatusUpdateInterval
[root@replica ~]# pki-server ca-config-unset ca.certStatusUpdateInterval
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipactl restart
[root@replica ~]# ipactl restart
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-crlgen-manage disable
[user@server ~]$ ipa-crlgen-manage disable Stopping pki-tomcatd Editing /var/lib/pki/pki-tomcat/conf/ca/CS.cfg Starting pki-tomcatd Editing /etc/httpd/conf.d/ipa-pki-proxy.conf Restarting httpd CRL generation disabled on the local host. Please make sure to configure CRL generation on another master with ipa-crlgen-manage enable. The ipa-crlgen-manage command was successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-crlgen-manage enable
[user@replica ~]$ ipa-crlgen-manage enable Stopping pki-tomcatd Editing /var/lib/pki/pki-tomcat/conf/ca/CS.cfg Starting pki-tomcatd Editing /etc/httpd/conf.d/ipa-pki-proxy.conf Restarting httpd Forcing CRL update CRL generation enabled on the local host. Please make sure to have only a single CRL generation master. The ipa-crlgen-manage command was successful
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipactl stop
[root@server ~]# ipactl stop
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa server-del server.idm.example.com
[user@replica ~]$ ipa server-del server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-server-install --uninstall
[root@server ~]# ipa-server-install --uninstall ... Are you sure you want to continue with the uninstall procedure? [no]: yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa config-show | grep 'CA renewal'
[user@replica ~]$ ipa config-show | grep 'CA renewal' IPA CA renewal master: replica.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-crlgen-manage status
[user@replica ~]$ ipa-crlgen-manage status CRL generation: enabled Last CRL update: 2019-10-31 12:10:00 Last CRL Number: 7 The ipa-crlgen-manage command was successful
第78章
78.1.
78.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-getcert request -K HTTP/my_company.idm.example.com -k /etc/pki/tls/private/httpd.key -f /etc/pki/tls/certs/httpd.pem -g 2048 -D my_company.idm.example.com -C "systemctl restart httpd"
# ipa-getcert request -K HTTP/my_company.idm.example.com -k /etc/pki/tls/private/httpd.key -f /etc/pki/tls/certs/httpd.pem -g 2048 -D my_company.idm.example.com -C "systemctl restart httpd" New signing request "20190604065735" added.
注記
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-getcert list -f /etc/pki/tls/certs/httpd.pem
# ipa-getcert list -f /etc/pki/tls/certs/httpd.pem Number of certificates and requests being tracked: 3. Request ID '20190604065735': status: MONITORING stuck: no key pair storage: type=FILE,location='/etc/pki/tls/private/httpd.key' certificate: type=FILE,location='/etc/pki/tls/certs/httpd.crt' CA: IPA [...]
78.3.
図78.1

[D]
図78.2

[D]
図78.3

[D]
図78.4

[D]
図78.5

[D]
78.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow getcert list -i 20190408143846 -v
# getcert list -i 20190408143846 -v Number of certificates and requests being tracked: 16. Request ID '20190408143846': status: MONITORING stuck: no key pair storage: type=NSSDB,location='/etc/dirsrv/slapd-IDM-EXAMPLE-COM',nickname='Server-Cert',token='NSS Certificate DB',pinfile='/etc/dirsrv/slapd-IDM-EXAMPLE-COM/pwdfile.txt' certificate: type=NSSDB,location='/etc/dirsrv/slapd-IDM-EXAMPLE-COM',nickname='Server-Cert',token='NSS Certificate DB' CA: IPA issuer: CN=Certificate Authority,O=IDM.EXAMPLE.COM subject: CN=r8server.idm.example.com,O=IDM.EXAMPLE.COM expires: 2021-04-08 16:38:47 CEST dns: r8server.idm.example.com principal name: ldap/server.idm.example.com@IDM.EXAMPLE.COM key usage: digitalSignature,nonRepudiation,keyEncipherment,dataEncipherment eku: id-kp-serverAuth,id-kp-clientAuth pre-save command: post-save command: /usr/libexec/ipa/certmonger/restart_dirsrv IDM-EXAMPLE-COM track: true auto-renew: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow getcert list
# getcert list
78.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow getcert stop-tracking -i 20190408143846
# getcert stop-tracking -i 20190408143846
Copy to Clipboard Copied! Toggle word wrap Toggle overflow getcert start-tracking -c IPA -f /tmp/some_cert.crt -k /tmp/some_key.key
# getcert start-tracking -c IPA -f /tmp/some_cert.crt -k /tmp/some_key.key
78.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow getcert resubmit -i 20190408143846
# getcert resubmit -i 20190408143846
78.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow export NSSDB_PIN=$(sed -n 's/^internal=//p' /var/lib/pki/pki-tomcat/conf/password.conf)
# export NSSDB_PIN=$(sed -n 's/^internal=//p' /var/lib/pki/pki-tomcat/conf/password.conf)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow getcert start-tracking -d /etc/pki/pki-tomcat/alias -n "caSigningCert cert-pki-ca" -c 'dogtag-ipa-ca-renew-agent' -P $NSSDB_PIN -B /usr/libexec/ipa/certmonger/stop_pkicad -C '/usr/libexec/ipa/certmonger/renew_ca_cert "caSigningCert cert-pki-ca"' -T caCACert getcert start-tracking -d /etc/pki/pki-tomcat/alias -n "auditSigningCert cert-pki-ca" -c 'dogtag-ipa-ca-renew-agent' -P $NSSDB_PIN -B /usr/libexec/ipa/certmonger/stop_pkicad -C '/usr/libexec/ipa/certmonger/renew_ca_cert "auditSigningCert cert-pki-ca"' -T caSignedLogCert getcert start-tracking -d /etc/pki/pki-tomcat/alias -n "ocspSigningCert cert-pki-ca" -c 'dogtag-ipa-ca-renew-agent' -P $NSSDB_PIN -B /usr/libexec/ipa/certmonger/stop_pkicad -C '/usr/libexec/ipa/certmonger/renew_ca_cert "ocspSigningCert cert-pki-ca"' -T caOCSPCert getcert start-tracking -d /etc/pki/pki-tomcat/alias -n "subsystemCert cert-pki-ca" -c 'dogtag-ipa-ca-renew-agent' -P $NSSDB_PIN -B /usr/libexec/ipa/certmonger/stop_pkicad -C '/usr/libexec/ipa/certmonger/renew_ca_cert "subsystemCert cert-pki-ca"' -T caSubsystemCert getcert start-tracking -d /etc/pki/pki-tomcat/alias -n "Server-Cert cert-pki-ca" -c 'dogtag-ipa-ca-renew-agent' -P $NSSDB_PIN -B /usr/libexec/ipa/certmonger/stop_pkicad -C '/usr/libexec/ipa/certmonger/renew_ca_cert "Server-Cert cert-pki-ca"' -T caServerCert
# getcert start-tracking -d /etc/pki/pki-tomcat/alias -n "caSigningCert cert-pki-ca" -c 'dogtag-ipa-ca-renew-agent' -P $NSSDB_PIN -B /usr/libexec/ipa/certmonger/stop_pkicad -C '/usr/libexec/ipa/certmonger/renew_ca_cert "caSigningCert cert-pki-ca"' -T caCACert # getcert start-tracking -d /etc/pki/pki-tomcat/alias -n "auditSigningCert cert-pki-ca" -c 'dogtag-ipa-ca-renew-agent' -P $NSSDB_PIN -B /usr/libexec/ipa/certmonger/stop_pkicad -C '/usr/libexec/ipa/certmonger/renew_ca_cert "auditSigningCert cert-pki-ca"' -T caSignedLogCert # getcert start-tracking -d /etc/pki/pki-tomcat/alias -n "ocspSigningCert cert-pki-ca" -c 'dogtag-ipa-ca-renew-agent' -P $NSSDB_PIN -B /usr/libexec/ipa/certmonger/stop_pkicad -C '/usr/libexec/ipa/certmonger/renew_ca_cert "ocspSigningCert cert-pki-ca"' -T caOCSPCert # getcert start-tracking -d /etc/pki/pki-tomcat/alias -n "subsystemCert cert-pki-ca" -c 'dogtag-ipa-ca-renew-agent' -P $NSSDB_PIN -B /usr/libexec/ipa/certmonger/stop_pkicad -C '/usr/libexec/ipa/certmonger/renew_ca_cert "subsystemCert cert-pki-ca"' -T caSubsystemCert # getcert start-tracking -d /etc/pki/pki-tomcat/alias -n "Server-Cert cert-pki-ca" -c 'dogtag-ipa-ca-renew-agent' -P $NSSDB_PIN -B /usr/libexec/ipa/certmonger/stop_pkicad -C '/usr/libexec/ipa/certmonger/renew_ca_cert "Server-Cert cert-pki-ca"' -T caServerCert
Copy to Clipboard Copied! Toggle word wrap Toggle overflow getcert start-tracking -f /var/lib/ipa/certs/httpd.crt -k /var/lib/ipa/private/httpd.key -p /var/lib/ipa/passwds/idm.example.com-443-RSA -c IPA -C /usr/libexec/ipa/certmonger/restart_httpd -T caIPAserviceCert getcert start-tracking -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM -n "Server-Cert" -c IPA -p /etc/dirsrv/slapd-IDM-EXAMPLE-COM/pwdfile.txt -C '/usr/libexec/ipa/certmonger/restart_dirsrv "IDM-EXAMPLE-COM"' -T caIPAserviceCert getcert start-tracking -f /var/lib/ipa/ra-agent.pem -k /var/lib/ipa/ra-agent.key -c dogtag-ipa-ca-renew-agent -B /usr/libexec/ipa/certmonger/renew_ra_cert_pre -C /usr/libexec/ipa/certmonger/renew_ra_cert -T caSubsystemCert getcert start-tracking -f /var/kerberos/krb5kdc/kdc.crt -k /var/kerberos/krb5kdc/kdc.key -c dogtag-ipa-ca-renew-agent -B /usr/libexec/ipa/certmonger/renew_ra_cert_pre -C /usr/libexec/ipa/certmonger/renew_kdc_cert -T KDCs_PKINIT_Certs
# getcert start-tracking -f /var/lib/ipa/certs/httpd.crt -k /var/lib/ipa/private/httpd.key -p /var/lib/ipa/passwds/idm.example.com-443-RSA -c IPA -C /usr/libexec/ipa/certmonger/restart_httpd -T caIPAserviceCert # getcert start-tracking -d /etc/dirsrv/slapd-IDM-EXAMPLE-COM -n "Server-Cert" -c IPA -p /etc/dirsrv/slapd-IDM-EXAMPLE-COM/pwdfile.txt -C '/usr/libexec/ipa/certmonger/restart_dirsrv "IDM-EXAMPLE-COM"' -T caIPAserviceCert # getcert start-tracking -f /var/lib/ipa/ra-agent.pem -k /var/lib/ipa/ra-agent.key -c dogtag-ipa-ca-renew-agent -B /usr/libexec/ipa/certmonger/renew_ra_cert_pre -C /usr/libexec/ipa/certmonger/renew_ra_cert -T caSubsystemCert # getcert start-tracking -f /var/kerberos/krb5kdc/kdc.crt -k /var/kerberos/krb5kdc/kdc.key -c dogtag-ipa-ca-renew-agent -B /usr/libexec/ipa/certmonger/renew_ra_cert_pre -C /usr/libexec/ipa/certmonger/renew_kdc_cert -T KDCs_PKINIT_Certs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart certmonger
# systemctl restart certmonger
Copy to Clipboard Copied! Toggle word wrap Toggle overflow getcert list
# getcert list
78.8.
78.8.1.
78.8.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [root@client.idm.example.com ~]# getcert add-scep-ca -c SCEP_example -u SCEP_URL
[root@client.idm.example.com ~]# getcert add-scep-ca -c SCEP_example -u SCEP_URL
- 重要
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [root@client.idm.example.com ~]# getcert list-cas -c SCEP_example CA 'SCEP_example': is-default: no ca-type: EXTERNAL helper-location: /usr/libexec/certmonger/scep-submit -u http://SCEP_server_enrollment_interface_URL SCEP CA certificate thumbprint (MD5): A67C2D4B 771AC186 FCCA654A 5E55AAF7 SCEP CA certificate thumbprint (SHA1): FBFF096C 6455E8E9 BD55F4A5 5787C43F 1F512279
[root@client.idm.example.com ~]# getcert list-cas -c SCEP_example CA 'SCEP_example': is-default: no ca-type: EXTERNAL helper-location: /usr/libexec/certmonger/scep-submit -u http://SCEP_server_enrollment_interface_URL SCEP CA certificate thumbprint (MD5): A67C2D4B 771AC186 FCCA654A 5E55AAF7 SCEP CA certificate thumbprint (SHA1): FBFF096C 6455E8E9 BD55F4A5 5787C43F 1F512279
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [root@client.idm.example.com ~]# getcert request -I Example_Task -c SCEP_example -d /etc/pki/nssdb -n ExampleCert -N cn="client.idm.example.com" -L one-time_PIN -D client.idm.example.com
[root@client.idm.example.com ~]# getcert request -I Example_Task -c SCEP_example -d /etc/pki/nssdb -n ExampleCert -N cn="client.idm.example.com" -L one-time_PIN -D client.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [root@client.idm.example.com ~]# getcert request -I Example_Task -c SCEP_example -f /etc/pki/tls/certs/server.crt -k /etc/pki/tls/private/private.key -N cn="client.idm.example.com" -L one-time_PIN -D client.idm.example.com
[root@client.idm.example.com ~]# getcert request -I Example_Task -c SCEP_example -f /etc/pki/tls/certs/server.crt -k /etc/pki/tls/private/private.key -N cn="client.idm.example.com" -L one-time_PIN -D client.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [root@client.idm.example.com ~]# getcert list -I Example_Task Request ID 'Example_Task': status: MONITORING stuck: no key pair storage: type=NSSDB,location='/etc/pki/nssdb',nickname='ExampleCert',token='NSS Certificate DB' certificate: type=NSSDB,location='/etc/pki/nssdb',nickname='ExampleCert',token='NSS Certificate DB' signing request thumbprint (MD5): 503A8EDD DE2BE17E 5BAA3A57 D68C9C1B signing request thumbprint (SHA1): B411ECE4 D45B883A 75A6F14D 7E3037F1 D53625F4 CA: IPA issuer: CN=Certificate Authority,O=EXAMPLE.COM subject: CN=client.idm.example.com,O=EXAMPLE.COM expires: 2018-05-06 10:28:06 UTC key usage: digitalSignature,keyEncipherment eku: iso.org.dod.internet.security.mechanisms.8.2.2 certificate template/profile: IPSECIntermediateOffline pre-save command: post-save command: track: true auto-renew: true
[root@client.idm.example.com ~]# getcert list -I Example_Task Request ID 'Example_Task': status: MONITORING stuck: no key pair storage: type=NSSDB,location='/etc/pki/nssdb',nickname='ExampleCert',token='NSS Certificate DB' certificate: type=NSSDB,location='/etc/pki/nssdb',nickname='ExampleCert',token='NSS Certificate DB' signing request thumbprint (MD5): 503A8EDD DE2BE17E 5BAA3A57 D68C9C1B signing request thumbprint (SHA1): B411ECE4 D45B883A 75A6F14D 7E3037F1 D53625F4 CA: IPA issuer: CN=Certificate Authority,O=EXAMPLE.COM subject: CN=client.idm.example.com,O=EXAMPLE.COM expires: 2018-05-06 10:28:06 UTC key usage: digitalSignature,keyEncipherment eku: iso.org.dod.internet.security.mechanisms.8.2.2 certificate template/profile: IPSECIntermediateOffline pre-save command: post-save command: track: true auto-renew: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [root@client.idm.example.com ~]# getcert list -I Example_Task Request ID 'Example_Task': status: MONITORING stuck: no key pair storage: type=FILE,location='/etc/pki/tls/private/private.key' certificate: type=FILE,location='/etc/pki/tls/certs/server.crt' CA: IPA issuer: CN=Certificate Authority,O=EXAMPLE.COM subject: CN=client.idm.example.com,O=EXAMPLE.COM expires: 2018-05-06 10:28:06 UTC eku: id-kp-serverAuth,id-kp-clientAuth pre-save command: post-save command: track: true auto-renew: true
[root@client.idm.example.com ~]# getcert list -I Example_Task Request ID 'Example_Task': status: MONITORING stuck: no key pair storage: type=FILE,location='/etc/pki/tls/private/private.key' certificate: type=FILE,location='/etc/pki/tls/certs/server.crt' CA: IPA issuer: CN=Certificate Authority,O=EXAMPLE.COM subject: CN=client.idm.example.com,O=EXAMPLE.COM expires: 2018-05-06 10:28:06 UTC eku: id-kp-serverAuth,id-kp-clientAuth pre-save command: post-save command: track: true auto-renew: true
78.8.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [scep] challenge_password_otp = yes
[scep] challenge_password_otp = yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart certmonger
# systemctl restart certmonger
第79章
79.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Create certificates hosts: managed-node-01.example.com tasks: - name: Create a self-signed certificate ansible.builtin.include_role: name: redhat.rhel_system_roles.certificate vars: certificate_requests: - name: web-server ca: ipa dns: www.example.com principal: HTTP/www.example.com@EXAMPLE.COM run_before: systemctl stop httpd.service run_after: systemctl start httpd.service
--- - name: Create certificates hosts: managed-node-01.example.com tasks: - name: Create a self-signed certificate ansible.builtin.include_role: name: redhat.rhel_system_roles.certificate vars: certificate_requests: - name: web-server ca: ipa dns: www.example.com principal: HTTP/www.example.com@EXAMPLE.COM run_before: systemctl stop httpd.service run_after: systemctl start httpd.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible managed-node-01.example.com -m command -a 'getcert list'
# ansible managed-node-01.example.com -m command -a 'getcert list' ... Number of certificates and requests being tracked: 1. Request ID '20240918142211': status: MONITORING stuck: no key pair storage: type=FILE,location='/etc/pki/tls/private/web-server.key' certificate: type=FILE,location='/etc/pki/tls/certs/web-server.crt' CA: IPA issuer: CN=Certificate Authority,O=EXAMPLE.COM subject: CN=www.example.com issued: 2024-09-18 16:22:11 CEST expires: 2025-09-18 16:22:10 CEST dns: www.example.com key usage: digitalSignature,keyEncipherment eku: id-kp-serverAuth,id-kp-clientAuth pre-save command: systemctl stop httpd.service post-save command: systemctl start httpd.service track: yes auto-renew: yes
79.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Create certificates hosts: managed-node-01.example.com tasks: - name: Create a self-signed certificate ansible.builtin.include_role: name: redhat.rhel_system_roles.certificate vars: certificate_requests: - name: web-server ca: self-sign dns: test.example.com
--- - name: Create certificates hosts: managed-node-01.example.com tasks: - name: Create a self-signed certificate ansible.builtin.include_role: name: redhat.rhel_system_roles.certificate vars: certificate_requests: - name: web-server ca: self-sign dns: test.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible managed-node-01.example.com -m command -a 'getcert list'
# ansible managed-node-01.example.com -m command -a 'getcert list' ... Number of certificates and requests being tracked: 1. Request ID '20240918133610': status: MONITORING stuck: no key pair storage: type=FILE,location='/etc/pki/tls/private/web-server.key' certificate: type=FILE,location='/etc/pki/tls/certs/web-server.crt' CA: local issuer: CN=c32b16d7-5b1a4c5a-a953a711-c3ca58fb,CN=Local Signing Authority subject: CN=test.example.com issued: 2024-09-18 15:36:10 CEST expires: 2025-09-18 15:36:09 CEST dns: test.example.com key usage: digitalSignature,keyEncipherment eku: id-kp-serverAuth,id-kp-clientAuth pre-save command: post-save command: track: yes auto-renew: yes
第80章
80.1.
80.1.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-certupdate
[root@ipaserver ~]# ipa-certupdate
重要
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -d /etc/pki/pki-tomcat/alias/ -L
[root@ipaserver ~]# certutil -d /etc/pki/pki-tomcat/alias/ -L Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI caSigningCert cert-pki-ca CTu,Cu,Cu Server-Cert cert-pki-ca u,u,u auditSigningCert cert-pki-ca u,u,Pu caSigningCert cert-pki-ca ba83f324-5e50-4114-b109-acca05d6f1dc u,u,u ocspSigningCert cert-pki-ca u,u,u subsystemCert cert-pki-ca u,u,u
注記
80.1.2.
図80.1
[D]
80.1.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa ca-add webserver-ca --subject="CN=WEBSERVER,O=IDM.EXAMPLE.COM"
[root@ipaserver ~]# ipa ca-add webserver-ca --subject="CN=WEBSERVER,O=IDM.EXAMPLE.COM" ------------------- Created CA "webserver-ca" ------------------- Name: webserver-ca Authority ID: ba83f324-5e50-4114-b109-acca05d6f1dc Subject DN: CN=WEBSERVER,O=IDM.EXAMPLE.COM Issuer DN: CN=Certificate Authority,O=IDM.EXAMPLE.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa ca-add webclient-ca --subject="CN=WEBCLIENT,O=IDM.EXAMPLE.COM"
[root@ipaserver ~]# ipa ca-add webclient-ca --subject="CN=WEBCLIENT,O=IDM.EXAMPLE.COM" ------------------- Created CA "webclient-ca" ------------------- Name: webclient-ca Authority ID: 8a479f3a-0454-4a4d-8ade-fd3b5a54ab2e Subject DN: CN=WEBCLIENT,O=IDM.EXAMPLE.COM Issuer DN: CN=Certificate Authority,O=IDM.EXAMPLE.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-certupdate
[root@ipaserver ~]# ipa-certupdate
重要
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -d /etc/pki/pki-tomcat/alias/ -L
[root@ipaserver ~]# certutil -d /etc/pki/pki-tomcat/alias/ -L Certificate Nickname Trust Attributes SSL,S/MIME,JAR/XPI caSigningCert cert-pki-ca CTu,Cu,Cu Server-Cert cert-pki-ca u,u,u auditSigningCert cert-pki-ca u,u,Pu caSigningCert cert-pki-ca ba83f324-5e50-4114-b109-acca05d6f1dc u,u,u ocspSigningCert cert-pki-ca u,u,u subsystemCert cert-pki-ca u,u,u
注記
80.1.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa ca-find
[root@ipaserver ~]# ipa ca-find ------------- 3 CAs matched ------------- Name: ipa Description: IPA CA Authority ID: 5195deaf-3b61-4aab-b608-317aff38497c Subject DN: CN=Certificate Authority,O=IPA.TEST Issuer DN: CN=Certificate Authority,O=IPA.TEST Name: webclient-ca Authority ID: 605a472c-9c6e-425e-b959-f1955209b092 Subject DN: CN=WEBCLIENT,O=IDM.EXAMPLE.COM Issuer DN: CN=Certificate Authority,O=IPA.TEST Name: webserver-ca Authority ID: 02d537f9-c178-4433-98ea-53aa92126fc3 Subject DN: CN=WEBSERVER,O=IDM.EXAMPLE.COM Issuer DN: CN=Certificate Authority,O=IPA.TEST ---------------------------- Number of entries returned 3 ----------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa ca-disable webserver-ca -------------------------- Disabled CA "webserver-ca" --------------------------
ipa ca-disable webserver-ca -------------------------- Disabled CA "webserver-ca" --------------------------
80.1.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa ca-find
# ipa ca-find ------------- 3 CAs matched ------------- Name: ipa Description: IPA CA Authority ID: 5195deaf-3b61-4aab-b608-317aff38497c Subject DN: CN=Certificate Authority,O=IPA.TEST Issuer DN: CN=Certificate Authority,O=IPA.TEST Name: webclient-ca Authority ID: 605a472c-9c6e-425e-b959-f1955209b092 Subject DN: CN=WEBCLIENT,O=IDM.EXAMPLE.COM Issuer DN: CN=Certificate Authority,O=IPA.TEST Name: webserver-ca Authority ID: 02d537f9-c178-4433-98ea-53aa92126fc3 Subject DN: CN=WEBSERVER,O=IDM.EXAMPLE.COM Issuer DN: CN=Certificate Authority,O=IPA.TEST ---------------------------- Number of entries returned 3 ----------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa ca-disable webserver-ca
# ipa ca-disable webserver-ca -------------------------- Disabled CA "webserver-ca" --------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa ca-del webserver-ca
# ipa ca-del webserver-ca ------------------------- Deleted CA "webserver-ca" -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa ca-find
# ipa ca-find ------------- 2 CAs matched ------------- Name: ipa Description: IPA CA Authority ID: 5195deaf-3b61-4aab-b608-317aff38497c Subject DN: CN=Certificate Authority,O=IPA.TEST Issuer DN: CN=Certificate Authority,O=IPA.TEST Name: webclient-ca Authority ID: 605a472c-9c6e-425e-b959-f1955209b092 Subject DN: CN=WEBCLIENT,O=IDM.EXAMPLE.COM Issuer DN: CN=Certificate Authority,O=IPA.TEST ---------------------------- Number of entries returned 2 ----------------------------
80.2.
図80.2
[D]Copy to Clipboard Copied! Toggle word wrap Toggle overflow mv path/to/the/downloaded/certificate /etc/pki/tls/private/sub-ca.crt
# mv path/to/the/downloaded/certificate /etc/pki/tls/private/sub-ca.crt
80.3.
80.3.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa caacl-find
$ ipa caacl-find ----------------- 1 CA ACL matched ----------------- ACL name: hosts_services_caIPAserviceCert Enabled: TRUE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa caacl-show hosts_services_caIPAserviceCert
$ ipa caacl-show hosts_services_caIPAserviceCert ACL name: hosts_services_caIPAserviceCert Enabled: TRUE Host category: all Service category: all CAs: ipa Profiles: caIPAserviceCert Users: admin
80.3.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa caacl-add TLS_web_server_authentication
$ ipa caacl-add TLS_web_server_authentication -------------------------------------------- Added CA ACL "TLS_web_server_authentication" -------------------------------------------- ACL name: TLS_web_server_authentication Enabled: TRUE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa caacl-mod TLS_web_server_authentication --desc="CAACL for web servers authenticating to web clients using certificates issued by webserver-ca"
$ ipa caacl-mod TLS_web_server_authentication --desc="CAACL for web servers authenticating to web clients using certificates issued by webserver-ca" ----------------------------------------------- Modified CA ACL "TLS_web_server_authentication" ----------------------------------------------- ACL name: TLS_web_server_authentication Description: CAACL for web servers authenticating to web clients using certificates issued by webserver-ca Enabled: TRUE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa caacl-add-ca TLS_web_server_authentication --ca=webserver-ca
$ ipa caacl-add-ca TLS_web_server_authentication --ca=webserver-ca ACL name: TLS_web_server_authentication Description: CAACL for web servers authenticating to web clients using certificates issued by webserver-ca Enabled: TRUE CAs: webserver-ca ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa caacl-add-service TLS_web_server_authentication --service=HTTP/my_company.idm.example.com@IDM.EXAMPLE.COM
$ ipa caacl-add-service TLS_web_server_authentication --service=HTTP/my_company.idm.example.com@IDM.EXAMPLE.COM ACL name: TLS_web_server_authentication Description: CAACL for web servers authenticating to web clients using certificates issued by webserver-ca Enabled: TRUE CAs: webserver-ca Services: HTTP/my_company.idm.example.com@IDM.EXAMPLE.COM ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa caacl-add-profile TLS_web_server_authentication --certprofiles=caIPAserviceCert
$ ipa caacl-add-profile TLS_web_server_authentication --certprofiles=caIPAserviceCert ACL name: TLS_web_server_authentication Description: CAACL for web servers authenticating to web clients using certificates issued by webserver-ca Enabled: TRUE CAs: webserver-ca Profiles: caIPAserviceCert Services: HTTP/my_company.idm.example.com@IDM.EXAMPLE.COM ------------------------- Number of members added 1 -------------------------
80.3.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa caacl-add TLS_web_client_authentication
$ ipa caacl-add TLS_web_client_authentication -------------------------------------------- Added CA ACL "TLS_web_client_authentication" -------------------------------------------- ACL name: TLS_web_client_authentication Enabled: TRUE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa caacl-mod TLS_web_client_authentication --desc="CAACL for user web browsers authenticating to web servers using certificates issued by webclient-ca"
$ ipa caacl-mod TLS_web_client_authentication --desc="CAACL for user web browsers authenticating to web servers using certificates issued by webclient-ca" ----------------------------------------------- Modified CA ACL "TLS_web_client_authentication" ----------------------------------------------- ACL name: TLS_web_client_authentication Description: CAACL for user web browsers authenticating to web servers using certificates issued by webclient-ca Enabled: TRUE
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa caacl-add-ca TLS_web_client_authentication --ca=webclient-ca
$ ipa caacl-add-ca TLS_web_client_authentication --ca=webclient-ca ACL name: TLS_web_client_authentication Description: CAACL for user web browsers authenticating to web servers using certificates issued by webclient-ca Enabled: TRUE CAs: webclient-ca ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa caacl-add-profile TLS_web_client_authentication --certprofiles=IECUserRoles
$ ipa caacl-add-profile TLS_web_client_authentication --certprofiles=IECUserRoles ACL name: TLS_web_client_authentication Description: CAACL for user web browsers authenticating to web servers using certificates issued by webclient-ca Enabled: TRUE CAs: webclient-ca Profiles: IECUserRoles ------------------------- Number of members added 1 -------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa caacl-mod TLS_web_client_authentication --usercat=all
$ ipa caacl-mod TLS_web_client_authentication --usercat=all ----------------------------------------------- Modified CA ACL "TLS_web_client_authentication" ----------------------------------------------- ACL name: TLS_web_client_authentication Description: CAACL for user web browsers authenticating to web servers using certificates issued by webclient-ca Enabled: TRUE User category: all CAs: webclient-ca Profiles: IECUserRoles
80.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-getcert request -K HTTP/my_company.idm.example.com -k /etc/pki/tls/private/httpd.key -f /etc/pki/tls/certs/httpd.pem -g 2048 -D my_company.idm.example.com -X webserver-ca -C "systemctl restart httpd"
# ipa-getcert request -K HTTP/my_company.idm.example.com -k /etc/pki/tls/private/httpd.key -f /etc/pki/tls/certs/httpd.pem -g 2048 -D my_company.idm.example.com -X webserver-ca -C "systemctl restart httpd" New signing request "20190604065735" added.
注記
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-getcert list -f /etc/pki/tls/certs/httpd.pem
# ipa-getcert list -f /etc/pki/tls/certs/httpd.pem Number of certificates and requests being tracked: 3. Request ID '20190604065735': status: MONITORING stuck: no key pair storage: type=FILE,location='/etc/pki/tls/private/httpd.key' certificate: type=FILE,location='/etc/pki/tls/certs/httpd.crt' CA: IPA issuer: CN=WEBSERVER,O=IDM.EXAMPLE.COM [...]
80.5.
図80.3

[D]
図80.4

[D]
図80.5

[D]
図80.6

[D]
図80.7

[D]
80.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install httpd
# yum install httpd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow firewall-cmd --permanent --add-port=80/tcp firewall-cmd --reload
# firewall-cmd --permanent --add-port=80/tcp # firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl enable --now httpd
# systemctl enable --now httpd
- 注記
80.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install mod_ssl
# yum install mod_ssl
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ServerName my_company.idm.example.com
ServerName my_company.idm.example.com
重要Copy to Clipboard Copied! Toggle word wrap Toggle overflow ServerAlias www.my_company.idm.example.com server.my_company.idm.example.com
ServerAlias www.my_company.idm.example.com server.my_company.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSLCertificateKeyFile "/etc/pki/tls/private/httpd.key" SSLCertificateFile "/etc/pki/tls/certs/httpd.pem" SSLCACertificateFile "/etc/pki/tls/certs/ca.crt"
SSLCertificateKeyFile "/etc/pki/tls/private/httpd.key" SSLCertificateFile "/etc/pki/tls/certs/httpd.pem" SSLCACertificateFile "/etc/pki/tls/certs/ca.crt"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chown root:root /etc/pki/tls/private/httpd.key chmod 600 //etc/pki/tls/private/httpd.key
# chown root:root /etc/pki/tls/private/httpd.key # chmod 600 //etc/pki/tls/private/httpd.key
警告Copy to Clipboard Copied! Toggle word wrap Toggle overflow firewall-cmd --permanent --add-port=443/tcp firewall-cmd --reload
# firewall-cmd --permanent --add-port=443/tcp # firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart httpd
# systemctl restart httpd
注記
80.8.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSLProtocol -All TLSv1.3
SSLProtocol -All TLSv1.3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart httpd
# systemctl restart httpd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl s_client -connect example.com:443 -tls1_3
# openssl s_client -connect example.com:443 -tls1_3
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl s_client -connect example.com:443 -tls1_2
# openssl s_client -connect example.com:443 -tls1_2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 140111600609088:error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version:ssl/record/rec_layer_s3.c:1543:SSL alert number 70
140111600609088:error:1409442E:SSL routines:ssl3_read_bytes:tlsv1 alert protocol version:ssl/record/rec_layer_s3.c:1543:SSL alert number 70
80.9.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSLCipherSuite "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:!SHA1:!SHA256"
SSLCipherSuite "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH:!SHA1:!SHA256"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart httpd
# systemctl restart httpd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install nmap
# yum install nmap
Copy to Clipboard Copied! Toggle word wrap Toggle overflow nmap --script ssl-enum-ciphers -p 443 example.com
# nmap --script ssl-enum-ciphers -p 443 example.com ... PORT STATE SERVICE 443/tcp open https | ssl-enum-ciphers: | TLSv1.2: | ciphers: | TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (ecdh_x25519) - A | TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 (dh 2048) - A | TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (ecdh_x25519) - A ...
80.10.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <Directory "/var/www/html/Example/"> SSLVerifyClient require </Directory>
<Directory "/var/www/html/Example/"> SSLVerifyClient require </Directory>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart httpd
# systemctl restart httpd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl https://my_company.idm.example.com/Example/
$ curl https://my_company.idm.example.com/Example/ curl: (56) OpenSSL SSL_read: error:1409445C:SSL routines:ssl3_read_bytes:tlsv13 alert certificate required, errno 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow curl --cacert ca.crt --key client.key --cert client.crt https://my_company.idm.example.com/Example/
$ curl --cacert ca.crt --key client.key --cert client.crt https://my_company.idm.example.com/Example/
80.11.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow mkdir ~/certdb/ certutil -N -d ~/certdb/
# mkdir ~/certdb/ # certutil -N -d ~/certdb/ Enter a password which will be used to encrypt your keys. The password should be at least 8 characters long, and should contain at least one non-alphabetic character. Enter new password: Re-enter password:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -R -d ~/certdb/ -a -g 4096 -n idm_user -s "CN=idm_user,O=IDM.EXAMPLE.COM" > certificate_request.csr
# certutil -R -d ~/certdb/ -a -g 4096 -n idm_user -s "CN=idm_user,O=IDM.EXAMPLE.COM" > certificate_request.csr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Enter Password or Pin for "NSS Certificate DB": A random seed must be generated that will be used in the creation of your key. One of the easiest ways to create a random seed is to use the timing of keystrokes on a keyboard. To begin, type keys on the keyboard until this progress meter is full. DO NOT USE THE AUTOREPEAT FUNCTION ON YOUR KEYBOARD! Continue typing until the progress meter is full:
Enter Password or Pin for "NSS Certificate DB": A random seed must be generated that will be used in the creation of your key. One of the easiest ways to create a random seed is to use the timing of keystrokes on a keyboard. To begin, type keys on the keyboard until this progress meter is full. DO NOT USE THE AUTOREPEAT FUNCTION ON YOUR KEYBOARD! Continue typing until the progress meter is full:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa cert-request certificate_request.csr --principal=idm_user@IDM.EXAMPLE.COM --profile-id=IECUserRoles --ca=webclient-ca --certificate-out=~/idm_user.pem
# ipa cert-request certificate_request.csr --principal=idm_user@IDM.EXAMPLE.COM --profile-id=IECUserRoles --ca=webclient-ca --certificate-out=~/idm_user.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -A -d ~/certdb/ -n idm_user -t "P,," -i ~/idm_user.pem
# certutil -A -d ~/certdb/ -n idm_user -t "P,," -i ~/idm_user.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow certutil -K -d ~/certdb/
# certutil -K -d ~/certdb/ < 0> rsa 5ad14d41463b87a095b1896cf0068ccc467df395 NSS Certificate DB:idm_user
Copy to Clipboard Copied! Toggle word wrap Toggle overflow pk12util -d ~/certdb -o ~/idm_user.p12 -n idm_user
# pk12util -d ~/certdb -o ~/idm_user.p12 -n idm_user Enter Password or Pin for "NSS Certificate DB": Enter password for PKCS12 file: Re-enter password: pk12util: PKCS12 EXPORT SUCCESSFUL
Copy to Clipboard Copied! Toggle word wrap Toggle overflow scp ~/idm_user.p12 idm_user@client.idm.example.com:/home/idm_user/
# scp ~/idm_user.p12 idm_user@client.idm.example.com:/home/idm_user/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chmod o-rwx /home/idm_user/
# chmod o-rwx /home/idm_user/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow rm ~/certdb/ rm ~/idm_user.p12
# rm ~/certdb/ # rm ~/idm_user.p12
80.12.
第82章
82.1.
82.2.
- 注記
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa vault-show my_vault
$ ipa vault-show my_vault Vault name: my_vault Type: standard Owner users: user Vault user: user
82.3.
82.5.
|
|
|
|
|
|
|
|
|
82.6.
|
|
|
|
|
ipa vault-show user_vault
|
|
ipa vault-show shared_vault
|
82.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-kra-install
# ipa-kra-install
第83章
83.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit idm_user
$ kinit idm_user
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa vault-add my_vault --type standard
$ ipa vault-add my_vault --type standard ---------------------- Added vault "my_vault" ---------------------- Vault name: my_vault Type: standard Owner users: idm_user Vault user: idm_user
重要Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa vault-archive my_vault --in secret.txt
$ ipa vault-archive my_vault --in secret.txt ----------------------------------- Archived data into vault "my_vault" -----------------------------------
83.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh idm_user@idm_client.idm.example.com
$ ssh idm_user@idm_client.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit user
$ kinit user
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa vault-retrieve my_vault --out secret_exported.txt
$ ipa vault-retrieve my_vault --out secret_exported.txt -------------------------------------- Retrieved data from vault "my_vault" --------------------------------------
83.3.
第84章
84.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/vault
$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
Copy to Clipboard Copied! Toggle word wrap Toggle overflow touch inventory.file
$ touch inventory.file
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp ensure-standard-vault-is-present.yml ensure-standard-vault-is-present-copy.yml
$ cp ensure-standard-vault-is-present.yml ensure-standard-vault-is-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Tests hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - ipavault: ipaadmin_principal: idm_user ipaadmin_password: idm_user_password user: idm_user name: my_vault vault_type: standard
--- - name: Tests hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - ipavault: ipaadmin_principal: idm_user ipaadmin_password: idm_user_password user: idm_user name: my_vault vault_type: standard
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-standard-vault-is-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-standard-vault-is-present-copy.yml
84.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/vault
$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp data-archive-in-symmetric-vault.yml data-archive-in-standard-vault-copy.yml
$ cp data-archive-in-symmetric-vault.yml data-archive-in-standard-vault-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Tests hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - ipavault: ipaadmin_principal: idm_user ipaadmin_password: idm_user_password user: idm_user name: my_vault in: /usr/share/doc/ansible-freeipa/playbooks/vault/password.txt action: member
--- - name: Tests hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - ipavault: ipaadmin_principal: idm_user ipaadmin_password: idm_user_password user: idm_user name: my_vault in: /usr/share/doc/ansible-freeipa/playbooks/vault/password.txt action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file data-archive-in-standard-vault-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file data-archive-in-standard-vault-copy.yml
84.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/vault
$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipahost] host01.idm.example.com
[ipahost] host01.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp retrive-data-symmetric-vault.yml retrieve-data-standard-vault.yml-copy.yml
$ cp retrive-data-symmetric-vault.yml retrieve-data-standard-vault.yml-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Tests hosts: ipahost gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - ipavault: ipaadmin_principal: idm_user ipaadmin_password: idm_user_password user: idm_user name: my_vault out: /tmp/password_exported.txt state: retrieved
--- - name: Tests hosts: ipahost gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - ipavault: ipaadmin_principal: idm_user ipaadmin_password: idm_user_password user: idm_user name: my_vault out: /tmp/password_exported.txt state: retrieved
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file retrieve-data-standard-vault.yml-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file retrieve-data-standard-vault.yml-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh user01@host01.idm.example.com
$ ssh user01@host01.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow vim /tmp/password_exported.txt
$ vim /tmp/password_exported.txt
第85章
85.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
$ kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl genrsa -out service-private.pem 2048
$ openssl genrsa -out service-private.pem 2048 Generating RSA private key, 2048 bit long modulus .+++ ...........................................+++ e is 65537 (0x10001)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl rsa -in service-private.pem -out service-public.pem -pubout
$ openssl rsa -in service-private.pem -out service-public.pem -pubout writing RSA key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa vault-add secret_vault --service HTTP/webserver.idm.example.com --type asymmetric --public-key-file service-public.pem
$ ipa vault-add secret_vault --service HTTP/webserver.idm.example.com --type asymmetric --public-key-file service-public.pem ---------------------------- Added vault "secret_vault" ---------------------------- Vault name: secret_vault Type: asymmetric Public key: LS0tLS1C...S0tLS0tCg== Owner users: admin Vault service: HTTP/webserver.idm.example.com@IDM.EXAMPLE.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa vault-archive secret_vault --service HTTP/webserver.idm.example.com --in private-key-to-an-externally-signed-certificate.pem
$ ipa vault-archive secret_vault --service HTTP/webserver.idm.example.com --in private-key-to-an-externally-signed-certificate.pem ----------------------------------- Archived data into vault "secret_vault" -----------------------------------
85.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
$ kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit HTTP/webserver.idm.example.com -k -t /etc/httpd/conf/ipa.keytab
# kinit HTTP/webserver.idm.example.com -k -t /etc/httpd/conf/ipa.keytab
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa vault-retrieve secret_vault --service HTTP/webserver.idm.example.com --private-key-file service-private.pem --out secret.txt
$ ipa vault-retrieve secret_vault --service HTTP/webserver.idm.example.com --private-key-file service-private.pem --out secret.txt ------------------------------------ Retrieved data from vault "secret_vault" ------------------------------------
85.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa vault-archive secret_vault --service HTTP/webserver.idm.example.com --in new-private-key-to-an-externally-signed-certificate.pem
$ ipa vault-archive secret_vault --service HTTP/webserver.idm.example.com --in new-private-key-to-an-externally-signed-certificate.pem ----------------------------------- Archived data into vault "secret_vault" -----------------------------------
85.4.
第86章
86.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/vault
$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl genrsa -out service-private.pem 2048
$ openssl genrsa -out service-private.pem 2048 Generating RSA private key, 2048 bit long modulus .+++ ...........................................+++ e is 65537 (0x10001)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl rsa -in service-private.pem -out service-public.pem -pubout
$ openssl rsa -in service-private.pem -out service-public.pem -pubout writing RSA key
Copy to Clipboard Copied! Toggle word wrap Toggle overflow touch inventory.file
$ touch inventory.file
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp ensure-asymmetric-vault-is-present.yml ensure-asymmetric-service-vault-is-present-copy.yml
$ cp ensure-asymmetric-vault-is-present.yml ensure-asymmetric-service-vault-is-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Tests hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Copy public key to ipaserver. copy: src: /path/to/service-public.pem dest: /usr/share/doc/ansible-freeipa/playbooks/vault/service-public.pem mode: 0600 - name: Add data to vault, from a LOCAL file. ipavault: ipaadmin_password: "{{ ipaadmin_password }}" name: secret_vault vault_type: asymmetric service: HTTP/webserver1.idm.example.com public_key_file: /usr/share/doc/ansible-freeipa/playbooks/vault/service-public.pem
--- - name: Tests hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Copy public key to ipaserver. copy: src: /path/to/service-public.pem dest: /usr/share/doc/ansible-freeipa/playbooks/vault/service-public.pem mode: 0600 - name: Add data to vault, from a LOCAL file. ipavault: ipaadmin_password: "{{ ipaadmin_password }}" name: secret_vault vault_type: asymmetric service: HTTP/webserver1.idm.example.com public_key_file: /usr/share/doc/ansible-freeipa/playbooks/vault/service-public.pem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-asymmetric-service-vault-is-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-asymmetric-service-vault-is-present-copy.yml
86.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/vault
$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
Copy to Clipboard Copied! Toggle word wrap Toggle overflow touch inventory.file
$ touch inventory.file
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp data-archive-in-asymmetric-vault.yml add-services-to-an-asymmetric-vault.yml
$ cp data-archive-in-asymmetric-vault.yml add-services-to-an-asymmetric-vault.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Tests hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - ipavault: ipaadmin_password: "{{ ipaadmin_password }}" name: secret_vault service: HTTP/webserver1.idm.example.com services: - HTTP/webserver2.idm.example.com - HTTP/webserver3.idm.example.com action: member
--- - name: Tests hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - ipavault: ipaadmin_password: "{{ ipaadmin_password }}" name: secret_vault service: HTTP/webserver1.idm.example.com services: - HTTP/webserver2.idm.example.com - HTTP/webserver3.idm.example.com action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file add-services-to-an-asymmetric-vault.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file add-services-to-an-asymmetric-vault.yml
86.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/vault
$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
Copy to Clipboard Copied! Toggle word wrap Toggle overflow touch inventory.file
$ touch inventory.file
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp data-archive-in-asymmetric-vault.yml data-archive-in-asymmetric-vault-copy.yml
$ cp data-archive-in-asymmetric-vault.yml data-archive-in-asymmetric-vault-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Tests hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - ipavault: ipaadmin_password: "{{ ipaadmin_password }}" name: secret_vault service: HTTP/webserver1.idm.example.com in: "{{ lookup('file', 'private-key-to-an-externally-signed-certificate.pem') | b64encode }}" action: member
--- - name: Tests hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - ipavault: ipaadmin_password: "{{ ipaadmin_password }}" name: secret_vault service: HTTP/webserver1.idm.example.com in: "{{ lookup('file', 'private-key-to-an-externally-signed-certificate.pem') | b64encode }}" action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file data-archive-in-asymmetric-vault-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file data-archive-in-asymmetric-vault-copy.yml
86.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/vault
$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
Copy to Clipboard Copied! Toggle word wrap Toggle overflow touch inventory.file
$ touch inventory.file
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com [webservers] webserver1.idm.example.com webserver2.idm.example.com webserver3.idm.example.com
[ipaserver] server.idm.example.com [webservers] webserver1.idm.example.com webserver2.idm.example.com webserver3.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp retrieve-data-asymmetric-vault.yml retrieve-data-asymmetric-vault-copy.yml
$ cp retrieve-data-asymmetric-vault.yml retrieve-data-asymmetric-vault-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Retrieve data from vault hosts: ipaserver become: no gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Retrieve data from the service vault ipavault: ipaadmin_password: "{{ ipaadmin_password }}" name: secret_vault service: HTTP/webserver1.idm.example.com vault_type: asymmetric private_key: "{{ lookup('file', 'service-private.pem') | b64encode }}" out: private-key-to-an-externally-signed-certificate.pem state: retrieved
--- - name: Retrieve data from vault hosts: ipaserver become: no gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Retrieve data from the service vault ipavault: ipaadmin_password: "{{ ipaadmin_password }}" name: secret_vault service: HTTP/webserver1.idm.example.com vault_type: asymmetric private_key: "{{ lookup('file', 'service-private.pem') | b64encode }}" out: private-key-to-an-externally-signed-certificate.pem state: retrieved
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Retrieve data from vault hosts: ipaserver become: no gather_facts: false tasks: [...] - name: Retrieve data file fetch: src: private-key-to-an-externally-signed-certificate.pem dest: ./ flat: true mode: 0600
--- - name: Retrieve data from vault hosts: ipaserver become: no gather_facts: false tasks: [...] - name: Retrieve data file fetch: src: private-key-to-an-externally-signed-certificate.pem dest: ./ flat: true mode: 0600
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Send data file to webservers become: no gather_facts: no hosts: webservers tasks: - name: Send data to webservers copy: src: private-key-to-an-externally-signed-certificate.pem dest: /etc/pki/tls/private/httpd.key mode: 0444
--- - name: Send data file to webservers become: no gather_facts: no hosts: webservers tasks: - name: Send data to webservers copy: src: private-key-to-an-externally-signed-certificate.pem dest: /etc/pki/tls/private/httpd.key mode: 0444
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file retrieve-data-asymmetric-vault-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file retrieve-data-asymmetric-vault-copy.yml
86.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/vault
$ cd /usr/share/doc/ansible-freeipa/playbooks/vault
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com [webservers] webserver1.idm.example.com webserver2.idm.example.com
[ipaserver] server.idm.example.com [webservers] webserver1.idm.example.com webserver2.idm.example.com
重要Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp data-archive-in-asymmetric-vault.yml data-archive-in-asymmetric-vault-copy.yml
$ cp data-archive-in-asymmetric-vault.yml data-archive-in-asymmetric-vault-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Tests hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - ipavault: ipaadmin_password: "{{ ipaadmin_password }}" name: secret_vault service: HTTP/webserver.idm.example.com in: "{{ lookup('file', 'new-private-key-to-an-externally-signed-certificate.pem') | b64encode }}" action: member
--- - name: Tests hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - ipavault: ipaadmin_password: "{{ ipaadmin_password }}" name: secret_vault service: HTTP/webserver.idm.example.com in: "{{ lookup('file', 'new-private-key-to-an-externally-signed-certificate.pem') | b64encode }}" action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file data-archive-in-asymmetric-vault-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file data-archive-in-asymmetric-vault-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Retrieve data from vault hosts: ipaserver become: no gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Retrieve data from the service vault ipavault: ipaadmin_password: "{{ ipaadmin_password }}" name: secret_vault service: HTTP/webserver1.idm.example.com vault_type: asymmetric private_key: "{{ lookup('file', 'service-private.pem') | b64encode }}" out: new-private-key-to-an-externally-signed-certificate.pem state: retrieved
--- - name: Retrieve data from vault hosts: ipaserver become: no gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Retrieve data from the service vault ipavault: ipaadmin_password: "{{ ipaadmin_password }}" name: secret_vault service: HTTP/webserver1.idm.example.com vault_type: asymmetric private_key: "{{ lookup('file', 'service-private.pem') | b64encode }}" out: new-private-key-to-an-externally-signed-certificate.pem state: retrieved
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Retrieve data from vault hosts: ipaserver become: true gather_facts: false tasks: [...] - name: Retrieve data file fetch: src: new-private-key-to-an-externally-signed-certificate.pem dest: ./ flat: true mode: 0600
--- - name: Retrieve data from vault hosts: ipaserver become: true gather_facts: false tasks: [...] - name: Retrieve data file fetch: src: new-private-key-to-an-externally-signed-certificate.pem dest: ./ flat: true mode: 0600
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Send data file to webservers become: true gather_facts: no hosts: webservers tasks: - name: Send data to webservers copy: src: new-private-key-to-an-externally-signed-certificate.pem dest: /etc/pki/tls/private/httpd.key mode: 0444
--- - name: Send data file to webservers become: true gather_facts: no hosts: webservers tasks: - name: Send data to webservers copy: src: new-private-key-to-an-externally-signed-certificate.pem dest: /etc/pki/tls/private/httpd.key mode: 0444
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file retrieve-data-asymmetric-vault-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file retrieve-data-asymmetric-vault-copy.yml
86.6.
第87章
87.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow touch inventory.file
$ touch inventory.file
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage IPA service. hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure service is present - ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/client.idm.example.com
--- - name: Playbook to manage IPA service. hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure service is present - ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/client.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-copy.yml
87.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to add multiple services in a single task hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Add HTTP and ftp services ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" services: - name: HTTP/client01.idm.example.com@IDM.EXAMPLE.COM - name: ftp/client02.idm.example.com@IDM.EXAMPLE.COM
--- - name: Playbook to add multiple services in a single task hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Add HTTP and ftp services ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" services: - name: HTTP/client01.idm.example.com@IDM.EXAMPLE.COM - name: ftp/client02.idm.example.com@IDM.EXAMPLE.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory add-http-and-ftp-services.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory add-http-and-ftp-services.yml
87.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow touch inventory.file
$ touch inventory.file
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-without-host-check.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-without-host-check-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-without-host-check.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-without-host-check-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage IPA service. hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure service is present - ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/www2.example.com skip_host_check: true
--- - name: Playbook to manage IPA service. hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure service is present - ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/www2.example.com skip_host_check: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-without-host-check-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-without-host-check-copy.yml
87.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow touch inventory.file
$ touch inventory.file
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-with-host-force.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-with-host-force-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-with-host-force.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-with-host-force-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage IPA service. hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure service is present - ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/ihavenodns.info force: true
--- - name: Playbook to manage IPA service. hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure service is present - ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/ihavenodns.info force: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-with-host-force-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/service/service-is-present-with-host-force-copy.yml
87.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow touch inventory.file
$ touch inventory.file
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/service/service-member-certificate-present.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-member-certificate-present-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/service/service-member-certificate-present.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-member-certificate-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl x509 -outform der -in cert1.pem -out cert1.der
$ openssl x509 -outform der -in cert1.pem -out cert1.der
Copy to Clipboard Copied! Toggle word wrap Toggle overflow base64 cert1.der -w0
$ base64 cert1.der -w0 MIIC/zCCAeegAwIBAgIUV74O+4kXeg21o4vxfRRtyJm...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Service certificate present. hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure service certificate is present - ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/client.idm.example.com certificate: | - MIICBjCCAW8CFHnm32VcXaUDGfEGdDL/... [...] action: member state: present
--- - name: Service certificate present. hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure service certificate is present - ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/client.idm.example.com certificate: | - MIICBjCCAW8CFHnm32VcXaUDGfEGdDL/... [...] action: member state: present
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/service/service-member-certificate-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/service/service-member-certificate-present-copy.yml
87.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow touch inventory.file
$ touch inventory.file
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_create_keytab-present.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_create_keytab-present-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_create_keytab-present.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_create_keytab-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Service member allow_create_keytab present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Service HTTP/client.idm.example.com members allow_create_keytab present for user01 ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/client.idm.example.com allow_create_keytab_user: - user01 action: member
--- - name: Service member allow_create_keytab present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Service HTTP/client.idm.example.com members allow_create_keytab present for user01 ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/client.idm.example.com allow_create_keytab_user: - user01 action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_create_keytab-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_create_keytab-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh user01@server.idm.example.com
$ ssh user01@server.idm.example.com Password:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-getkeytab -s server.idm.example.com -p HTTP/client.idm.example.com -k /etc/httpd/conf/krb5.keytab
$ ipa-getkeytab -s server.idm.example.com -p HTTP/client.idm.example.com -k /etc/httpd/conf/krb5.keytab
87.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow touch inventory.file
$ touch inventory.file
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_retrieve_keytab-present.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_retrieve_keytab-present-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_retrieve_keytab-present.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_retrieve_keytab-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Service member allow_retrieve_keytab present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Service HTTP/client.idm.example.com members allow_retrieve_keytab present for user01 ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/client.idm.example.com allow_retrieve_keytab_user: - user01 action: member
--- - name: Service member allow_retrieve_keytab present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Service HTTP/client.idm.example.com members allow_retrieve_keytab present for user01 ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/client.idm.example.com allow_retrieve_keytab_user: - user01 action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_retrieve_keytab-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/service/service-member-allow_retrieve_keytab-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh user01@server.idm.example.com
$ ssh user01@server.idm.example.com Password:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-getkeytab -r -s server.idm.example.com -p HTTP/client.idm.example.com -k /etc/httpd/conf/krb5.keytab
$ ipa-getkeytab -r -s server.idm.example.com -p HTTP/client.idm.example.com -k /etc/httpd/conf/krb5.keytab
87.8.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow touch inventory.file
$ touch inventory.file
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/service/service-member-principal-present.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-member-principal-present-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/service/service-member-principal-present.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-member-principal-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Service member principal present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Service HTTP/client.idm.example.com member principals host/mycompany.idm.exmaple.com present ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/client.idm.example.com principal: - host/mycompany.idm.example.com action: member
--- - name: Service member principal present hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Service HTTP/client.idm.example.com member principals host/mycompany.idm.exmaple.com present ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/client.idm.example.com principal: - host/mycompany.idm.example.com action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/service/service-member-principal-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/service/service-member-principal-present-copy.yml
87.9.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow touch inventory.file
$ touch inventory.file
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/service/service-is-absent.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-is-absent-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/service/service-is-absent.yml /usr/share/doc/ansible-freeipa/playbooks/service/service-is-absent-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage IPA service. hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure service is absent - ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/client.idm.example.com state: absent
--- - name: Playbook to manage IPA service. hosts: ipaserver gather_facts: false vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: # Ensure service is absent - ipaservice: ipaadmin_password: "{{ ipaadmin_password }}" name: HTTP/client.idm.example.com state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/service/service-is-absent-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file /usr/share/doc/ansible-freeipa/playbooks/service/service-is-absent-copy.yml
87.10.
第88章
88.1.
88.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum module enable idm:DL1 yum distro-sync
# yum module enable idm:DL1 # yum distro-sync
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum module install idm:DL1/adtrust
# yum module install idm:DL1/adtrust
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin ipa idoverrideuser-add 'default trust view' ad_user@ad.example.com
# kinit admin # ipa idoverrideuser-add 'default trust view' ad_user@ad.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-add-member admins --idoverrideusers=ad_user@ad.example.com
# ipa group-add-member admins --idoverrideusers=ad_user@ad.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa role-add-member 'User Administrator' --idoverrideusers=ad_user@ad.example.com
# ipa role-add-member 'User Administrator' --idoverrideusers=ad_user@ad.example.com
88.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to ensure presence of users in a group hosts: ipaserver - name: Ensure the ad_user@ad.example.com user ID override is a member of the admins group: ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: admins idoverrideuser: - ad_user@ad.example.com
--- - name: Playbook to ensure presence of users in a group hosts: ipaserver - name: Ensure the ad_user@ad.example.com user ID override is a member of the admins group: ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: admins idoverrideuser: - ad_user@ad.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory add-useridoverride-to-group.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory add-useridoverride-to-group.yml
88.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kdestroy -A
# kdestroy -A
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit ad_user@AD.EXAMPLE.COM
# kinit ad_user@AD.EXAMPLE.COM Password for ad_user@AD.EXAMPLE.COM:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa group-add some-new-group
# ipa group-add some-new-group ---------------------------- Added group "some-new-group" ---------------------------- Group name: some-new-group GID: 1997000011
88.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Enable AD administrator to act as a FreeIPA admin hosts: ipaserver become: false gather_facts: false tasks: - name: Ensure idoverride for administrator@addomain.com in 'default trust view' ipaidoverrideuser: ipaadmin_password: "{{ ipaadmin_password }}" idview: "Default Trust View" anchor: administrator@addomain.com
--- - name: Enable AD administrator to act as a FreeIPA admin hosts: ipaserver become: false gather_facts: false tasks: - name: Ensure idoverride for administrator@addomain.com in 'default trust view' ipaidoverrideuser: ipaadmin_password: "{{ ipaadmin_password }}" idview: "Default Trust View" anchor: administrator@addomain.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - name: Add the AD administrator as a member of admins ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: admins idoverrideuser: - administrator@addomain.com
- name: Add the AD administrator as a member of admins ipagroup: ipaadmin_password: "{{ ipaadmin_password }}" name: admins idoverrideuser: - administrator@addomain.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory enable-ad-admin-to-administer-idm.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory enable-ad-admin-to-administer-idm.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh administrator@addomain.com@client.idm.example.com
$ ssh administrator@addomain.com@client.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist
$ klist Ticket cache: KCM:325600500:99540 Default principal: Administrator@ADDOMAIN.COM Valid starting Expires Service principal 02/04/2024 11:54:16 02/04/2024 21:54:16 krbtgt/ADDOMAIN.COM@ADDOMAIN.COM renew until 02/05/2024 11:54:16
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-add testuser --first=test --last=user
$ ipa user-add testuser --first=test --last=user ------------------------ Added user "tuser" ------------------------ User login: tuser First name: test Last name: user Full name: test user [...]
第89章
89.1.
89.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa config-mod --domain-resolution-order='ad.example.com:subdomain1.ad.example.com:idm.example.com'
[user@server ~]$ ipa config-mod --domain-resolution-order='ad.example.com:subdomain1.ad.example.com:idm.example.com' Maximum username length: 32 Home directory base: /home ... Domain Resolution Order: ad.example.com:subdomain1.ad.example.com:idm.example.com ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow id <ad_username>
[root@client ~]# id <ad_username> uid=1916901102(ad_username) gid=1916900513(domain users) groups=1916900513(domain users)
89.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idview-add ADsubdomain1_first --desc "ID view for resolving AD subdomain1 first on client1.idm.example.com" --domain-resolution-order subdomain1.ad.example.com:ad.example.com:idm.example.com
[user@server ~]$ ipa idview-add ADsubdomain1_first --desc "ID view for resolving AD subdomain1 first on client1.idm.example.com" --domain-resolution-order subdomain1.ad.example.com:ad.example.com:idm.example.com --------------------------------- Added ID View "ADsubdomain1_first" --------------------------------- ID View Name: ADsubdomain1_first Description: ID view for resolving AD subdomain1 first on client1.idm.example.com Domain Resolution Order: subdomain1.ad.example.com:ad.example.com:idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idview-apply ADsubdomain1_first --hosts client1.idm.example.com
[user@server ~]$ ipa idview-apply ADsubdomain1_first --hosts client1.idm.example.com ----------------------------------- Applied ID View "ADsubdomain1_first" ----------------------------------- hosts: client1.idm.example.com --------------------------------------------- Number of hosts the ID View was applied to: 1 ---------------------------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idview-show ADsubdomain1_first --show-hosts
[user@server ~]$ ipa idview-show ADsubdomain1_first --show-hosts ID View Name: ADsubdomain1_first Description: ID view for resolving AD subdomain1 first on client1.idm.example.com Hosts the view applies to: client1.idm.example.com Domain resolution order: subdomain1.ad.example.com:ad.example.com:idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow id <user_from_subdomain1>
[root@client1 ~]# id <user_from_subdomain1> uid=1916901106(user_from_subdomain1) gid=1916900513(domain users) groups=1916900513(domain users)
89.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to add idview and apply it to an IdM client hosts: ipaserver vars_files: - /home/<user_name>/MyPlaybooks/secret.yml become: false gather_facts: false tasks: - name: Add idview and apply it to testhost.idm.example.com ipaidview: ipaadmin_password: "{{ ipaadmin_password }}" name: test_idview host: testhost.idm.example.com domain_resolution_order: "ad.example.com:ipa.example.com"
--- - name: Playbook to add idview and apply it to an IdM client hosts: ipaserver vars_files: - /home/<user_name>/MyPlaybooks/secret.yml become: false gather_facts: false tasks: - name: Add idview and apply it to testhost.idm.example.com ipaidview: ipaadmin_password: "{{ ipaadmin_password }}" name: test_idview host: testhost.idm.example.com domain_resolution_order: "ad.example.com:ipa.example.com"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory add-id-view-with-domain-resolution-order.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory add-id-view-with-domain-resolution-order.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow id aduser05
[root@testhost ~]# id aduser05 uid=1916901102(aduser05) gid=1916900513(domain users) groups=1916900513(domain users)
89.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow domain_resolution_order = subdomain1.ad.example.com, ad.example.com, idm.example.com
domain_resolution_order = subdomain1.ad.example.com, ad.example.com, idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart sssd
[root@client2 ~]# systemctl restart sssd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow id <user_from_subdomain1>
[root@client2 ~]# id <user_from_subdomain1> uid=1916901106(user_from_subdomain1) gid=1916900513(domain users) groups=1916900513(domain users)
89.6.
第90章
90.1.
90.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa trust-fetch-domains
[root@ipaserver ~]# ipa trust-fetch-domains Realm-Name: ad.example.com ------------------------------- No new trust domains were found ------------------------------- ---------------------------- Number of entries returned 0 ----------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa trust-show
[root@ipaserver ~]# ipa trust-show Realm-Name: ad.example.com Realm-Name: ad.example.com Domain NetBIOS name: AD Domain Security Identifier: S-1-5-21-796215754-1239681026-23416912 Trust direction: One-way trust Trust type: Active Directory domain UPN suffixes: example.com
90.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [global] log level = 10
[global] log level = 10
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [global] debug = True
[global] debug = True
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart httpd
[root@server ~]# systemctl restart httpd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa trust-fetch-domains <ad.example.com>
[root@server ~]# ipa trust-fetch-domains <ad.example.com>
第91章
91.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
$ kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa host-add-principal demo.example.com --principal=demo
$ ipa host-add-principal demo.example.com --principal=demo
91.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [libdefaults] ... dns_canonicalize_hostname = true
[libdefaults] ... dns_canonicalize_hostname = true
91.3.
第92章
92.1.
Generated by NetworkManager
# Generated by NetworkManager
search idm.example.com
nameserver 127.0.0.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow auto-generated by IPA installer
# auto-generated by IPA installer [main] dns=default [global-dns] searches=$DOMAIN [global-dns-domain-*] servers=127.0.0.1
92.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp forwarders-absent.yml ensure-presence-of-a-global-forwarder.yml
$ cp forwarders-absent.yml ensure-presence-of-a-global-forwarder.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to ensure the presence of a global forwarder in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure the presence of a DNS global forwarder to 7.7.9.9 and 2001:db8::1:0 on port 53 ipadnsconfig: forwarders: - ip_address: 7.7.9.9 - ip_address: 2001:db8::1:0 port: 53 state: present
--- - name: Playbook to ensure the presence of a global forwarder in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure the presence of a DNS global forwarder to 7.7.9.9 and 2001:db8::1:0 on port 53 ipadnsconfig: forwarders: - ip_address: 7.7.9.9 - ip_address: 2001:db8::1:0 port: 53 state: present
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-of-a-global-forwarder.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-of-a-global-forwarder.yml
92.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp forwarders-absent.yml ensure-absence-of-a-global-forwarder.yml
$ cp forwarders-absent.yml ensure-absence-of-a-global-forwarder.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to ensure the absence of a global forwarder in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure the absence of a DNS global forwarder to 8.8.6.6 and 2001:4860:4860::8800 on port 53 ipadnsconfig: forwarders: - ip_address: 8.8.6.6 - ip_address: 2001:4860:4860::8800 port: 53 action: member state: absent
--- - name: Playbook to ensure the absence of a global forwarder in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure the absence of a DNS global forwarder to 8.8.6.6 and 2001:4860:4860::8800 on port 53 ipadnsconfig: forwarders: - ip_address: 8.8.6.6 - ip_address: 2001:4860:4860::8800 port: 53 action: member state: absent
重要Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-absence-of-a-global-forwarder.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-absence-of-a-global-forwarder.yml
92.4.
|
[...] tasks: - name: Ensure the presence of DNS global forwarder 8.8.6.7 ipadnsconfig: forwarders: - ip_address: 8.8.6.7 state: present
|
|
|
[...] tasks: - name: Ensure the presence of DNS global forwarder 8.8.6.7 ipadnsconfig: forwarders: - ip_address: 8.8.6.7 action: member state: present
|
|
|
[...] tasks: - name: Ensure the absence of DNS global forwarder 8.8.6.7 ipadnsconfig: forwarders: - ip_address: 8.8.6.7 state: absent
|
|
|
[...] tasks: - name: Ensure the absence of DNS global forwarder 8.8.6.7 ipadnsconfig: forwarders: - ip_address: 8.8.6.7 action: member state: absent
|
|
92.5.
例92.1
92.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp set-configuration.yml set-forward-policy-to-first.yml
$ cp set-configuration.yml set-forward-policy-to-first.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to set global forwarding policy to first hosts: ipaserver become: true tasks: - name: Set global forwarding policy to first. ipadnsconfig: ipaadmin_password: "{{ ipaadmin_password }}" forward_policy: first
--- - name: Playbook to set global forwarding policy to first hosts: ipaserver become: true tasks: - name: Set global forwarding policy to first. ipadnsconfig: ipaadmin_password: "{{ ipaadmin_password }}" forward_policy: first
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file set-forward-policy-to-first.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file set-forward-policy-to-first.yml
92.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp disable-global-forwarders.yml disable-global-forwarders-copy.yml
$ cp disable-global-forwarders.yml disable-global-forwarders-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to disable global DNS forwarders hosts: ipaserver become: true tasks: - name: Disable global forwarders. ipadnsconfig: ipaadmin_password: "{{ ipaadmin_password }}" forward_policy: none
--- - name: Playbook to disable global DNS forwarders hosts: ipaserver become: true tasks: - name: Disable global forwarders. ipadnsconfig: ipaadmin_password: "{{ ipaadmin_password }}" forward_policy: none
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file disable-global-forwarders-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file disable-global-forwarders-copy.yml
92.8.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp disallow-reverse-sync.yml disallow-reverse-sync-copy.yml
$ cp disallow-reverse-sync.yml disallow-reverse-sync-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to disallow reverse record synchronization hosts: ipaserver become: true tasks: - name: Disallow reverse record synchronization. ipadnsconfig: ipaadmin_password: "{{ ipaadmin_password }}" allow_sync_ptr: no
--- - name: Playbook to disallow reverse record synchronization hosts: ipaserver become: true tasks: - name: Disallow reverse record synchronization. ipadnsconfig: ipaadmin_password: "{{ ipaadmin_password }}" allow_sync_ptr: no
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file disallow-reverse-sync-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file disallow-reverse-sync-copy.yml
第93章
93.1.
例93.1
93.2.
93.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa dnszone-add newzone.idm.example.com
$ ipa dnszone-add newzone.idm.example.com
93.4.
図93.3
[D]
93.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa dnszone-del idm.example.com
$ ipa dnszone-del idm.example.com
93.6.
93.7.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
93.8.
93.9.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa dnszone-mod --retry 1800
$ ipa dnszone-mod --retry 1800
注記
93.10.
93.11.
図93.7
[D]
93.12.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa dnszone-mod --allow-transfer=192.0.2.1;198.51.100.1;203.0.113.1 idm.example.com
$ ipa dnszone-mod --allow-transfer=192.0.2.1;198.51.100.1;203.0.113.1 idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh 192.0.2.1
$ ssh 192.0.2.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dig @ipa-server zone_name AXFR
# dig @ipa-server zone_name AXFR
93.13.
第94章
94.1.
例94.1
94.2.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
94.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/dnszone
$ cd /usr/share/doc/ansible-freeipa/playbooks/dnszone
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp dnszone-present.yml dnszone-present-copy.yml
$ cp dnszone-present.yml dnszone-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Ensure dnszone present hosts: ipaserver become: true tasks: - name: Ensure zone is present. ipadnszone: ipaadmin_password: "{{ ipaadmin_password }}" zone_name: zone.idm.example.com state: present
--- - name: Ensure dnszone present hosts: ipaserver become: true tasks: - name: Ensure zone is present. ipadnszone: ipaadmin_password: "{{ ipaadmin_password }}" zone_name: zone.idm.example.com state: present
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file dnszone-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file dnszone-present-copy.yml
94.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/dnszone
$ cd /usr/share/doc/ansible-freeipa/playbooks/dnszone
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp dnszone-all-params.yml dnszone-all-params-copy.yml
$ cp dnszone-all-params.yml dnszone-all-params-copy.yml
- 警告
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Ensure dnszone present hosts: ipaserver become: true tasks: - name: Ensure zone is present. ipadnszone: ipaadmin_password: "{{ ipaadmin_password }}" zone_name: zone.idm.example.com allow_sync_ptr: true dynamic_update: true dnssec: true allow_transfer: - 1.1.1.1 - 2.2.2.2 allow_query: - 1.1.1.1 - 2.2.2.2 forwarders: - ip_address: 8.8.8.8 - ip_address: 8.8.4.4 port: 52 serial: 1234 refresh: 3600 retry: 900 expire: 1209600 minimum: 3600 ttl: 60 default_ttl: 90 name_server: server.idm.example.com. admin_email: admin.admin@idm.example.com nsec3param_rec: "1 7 100 0123456789abcdef" skip_overlap_check: true skip_nameserver_check: true state: present
--- - name: Ensure dnszone present hosts: ipaserver become: true tasks: - name: Ensure zone is present. ipadnszone: ipaadmin_password: "{{ ipaadmin_password }}" zone_name: zone.idm.example.com allow_sync_ptr: true dynamic_update: true dnssec: true allow_transfer: - 1.1.1.1 - 2.2.2.2 allow_query: - 1.1.1.1 - 2.2.2.2 forwarders: - ip_address: 8.8.8.8 - ip_address: 8.8.4.4 port: 52 serial: 1234 refresh: 3600 retry: 900 expire: 1209600 minimum: 3600 ttl: 60 default_ttl: 90 name_server: server.idm.example.com. admin_email: admin.admin@idm.example.com nsec3param_rec: "1 7 100 0123456789abcdef" skip_overlap_check: true skip_nameserver_check: true state: present
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file dnszone-all-params-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file dnszone-all-params-copy.yml
94.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/dnszone
$ cd /usr/share/doc/ansible-freeipa/playbooks/dnszone
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp dnszone-reverse-from-ip.yml dnszone-reverse-from-ip-copy.yml
$ cp dnszone-reverse-from-ip.yml dnszone-reverse-from-ip-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Ensure dnszone present hosts: ipaserver become: true tasks: - name: Ensure zone for reverse DNS lookup is present. ipadnszone: ipaadmin_password: "{{ ipaadmin_password }}" name_from_ip: 192.168.1.2/24 state: present register: result - name: Display inferred zone name. debug: msg: "Zone name: {{ result.dnszone.name }}"
--- - name: Ensure dnszone present hosts: ipaserver become: true tasks: - name: Ensure zone for reverse DNS lookup is present. ipadnszone: ipaadmin_password: "{{ ipaadmin_password }}" name_from_ip: 192.168.1.2/24 state: present register: result - name: Display inferred zone name. debug: msg: "Zone name: {{ result.dnszone.name }}"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file dnszone-reverse-from-ip-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file dnszone-reverse-from-ip-copy.yml
第95章
95.1.
例95.1
dig -t SRV +short _kerberos._tcp.idm.example.com
$ dig -t SRV +short _kerberos._tcp.idm.example.com
0 100 88 idmserver-01.idm.example.com.
0 100 88 idmserver-02.idm.example.com.
例95.2
dig -t SRV +short _kerberos._tcp.idm.example.com
$ dig -t SRV +short _kerberos._tcp.idm.example.com
_kerberos._tcp.germany._locations.idm.example.com.
0 100 88 idmserver-01.idm.example.com.
50 100 88 idmserver-02.idm.example.com.
95.2.
95.3.
95.4.
95.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa location-add germany
$ ipa location-add germany ---------------------------- Added IPA location "germany" ---------------------------- Location name: germany
95.6.
図95.1
[D]Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart named-pkcs11
[root@idmserver-01 ~]# systemctl restart named-pkcs11
95.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa location-find
[root@server ~]# ipa location-find ----------------------- 2 IPA locations matched ----------------------- Location name: australia Location name: germany ----------------------------- Number of entries returned: 2 -----------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa server-mod idmserver-01.idm.example.com --location=germany
# ipa server-mod idmserver-01.idm.example.com --location=germany ipa: WARNING: Service named-pkcs11.service requires restart on IPA server idmserver-01.idm.example.com to apply configuration changes. -------------------------------------------------- Modified IPA server "idmserver-01.idm.example.com" -------------------------------------------------- Servername: idmserver-01.idm.example.com Min domain level: 0 Max domain level: 1 Location: germany Enabled server roles: DNS server, NTP server
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart named-pkcs11
# systemctl restart named-pkcs11
95.8.
例95.3
nameserver 10.10.0.1 nameserver 10.10.0.2
nameserver 10.10.0.1
nameserver 10.10.0.2
nameserver 10.50.0.1 nameserver 10.50.0.3
nameserver 10.50.0.1
nameserver 10.50.0.3
nameserver 10.30.0.1
nameserver 10.30.0.1
nameserver 10.30.0.1
nameserver 10.30.0.1
95.9.
第96章
96.1.
例96.1
dig -t SRV +short _kerberos._tcp.idm.example.com
$ dig -t SRV +short _kerberos._tcp.idm.example.com
0 100 88 idmserver-01.idm.example.com.
0 100 88 idmserver-02.idm.example.com.
例96.2
dig -t SRV +short _kerberos._tcp.idm.example.com
$ dig -t SRV +short _kerberos._tcp.idm.example.com
_kerberos._tcp.germany._locations.idm.example.com.
0 100 88 idmserver-01.idm.example.com.
50 100 88 idmserver-02.idm.example.com.
96.2.
96.3.
96.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/location/location-present.yml location-present-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/location/location-present.yml location-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: location present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that the "germany" location is present ipalocation: ipaadmin_password: "{{ ipaadmin_password }}" name: germany
--- - name: location present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that the "germany" location is present ipalocation: ipaadmin_password: "{{ ipaadmin_password }}" name: germany
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory location-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory location-present-copy.yml
96.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/location/location-absent.yml location-absent-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/location/location-absent.yml location-absent-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: location absent example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that the "germany" location is absent ipalocation: ipaadmin_password: "{{ ipaadmin_password }}" name: germany state: absent
--- - name: location absent example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure that the "germany" location is absent ipalocation: ipaadmin_password: "{{ ipaadmin_password }}" name: germany state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory location-absent-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory location-absent-copy.yml
96.6.
第97章
97.1.
97.2.
例97.1
97.3.
97.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa dnsconfig-mod --forwarder=10.10.0.1
[user@server ~]$ ipa dnsconfig-mod --forwarder=10.10.0.1 Server will check DNS forwarder(s). This may take some time, please wait ... Global forwarders: 10.10.0.1 IPA DNS servers: server.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa dnsconfig-show
[user@server ~]$ ipa dnsconfig-show Global forwarders: 10.10.0.1 IPA DNS servers: server.example.com
97.5.
97.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa dnsforwardzone-add forward.example.com. --forwarder=10.10.0.14 --forwarder=10.10.1.15 --forward-policy=first
[user@server ~]$ ipa dnsforwardzone-add forward.example.com. --forwarder=10.10.0.14 --forwarder=10.10.1.15 --forward-policy=first Zone name: forward.example.com. Zone forwarders: 10.10.0.14, 10.10.1.15 Forward policy: first
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa dnsforwardzone-show forward.example.com.
[user@server ~]$ ipa dnsforwardzone-show forward.example.com. Zone name: forward.example.com. Zone forwarders: 10.10.0.14, 10.10.1.15 Forward policy: first
97.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp set-configuration.yml establish-global-forwarder.yml
$ cp set-configuration.yml establish-global-forwarder.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to establish a global forwarder in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Create a DNS global forwarder to 8.8.6.6 and 2001:4860:4860::8800 ipadnsconfig: forwarders: - ip_address: 8.8.6.6 - ip_address: 2001:4860:4860::8800 port: 53 forward_policy: first allow_sync_ptr: true
--- - name: Playbook to establish a global forwarder in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Create a DNS global forwarder to 8.8.6.6 and 2001:4860:4860::8800 ipadnsconfig: forwarders: - ip_address: 8.8.6.6 - ip_address: 2001:4860:4860::8800 port: 53 forward_policy: first allow_sync_ptr: true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file establish-global-forwarder.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file establish-global-forwarder.yml
97.8.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp forwarders-absent.yml ensure-presence-of-a-global-forwarder.yml
$ cp forwarders-absent.yml ensure-presence-of-a-global-forwarder.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to ensure the presence of a global forwarder in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure the presence of a DNS global forwarder to 7.7.9.9 and 2001:db8::1:0 on port 53 ipadnsconfig: forwarders: - ip_address: 7.7.9.9 - ip_address: 2001:db8::1:0 port: 53 state: present
--- - name: Playbook to ensure the presence of a global forwarder in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure the presence of a DNS global forwarder to 7.7.9.9 and 2001:db8::1:0 on port 53 ipadnsconfig: forwarders: - ip_address: 7.7.9.9 - ip_address: 2001:db8::1:0 port: 53 state: present
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-of-a-global-forwarder.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-of-a-global-forwarder.yml
97.9.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp forwarders-absent.yml ensure-absence-of-a-global-forwarder.yml
$ cp forwarders-absent.yml ensure-absence-of-a-global-forwarder.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to ensure the absence of a global forwarder in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure the absence of a DNS global forwarder to 8.8.6.6 and 2001:4860:4860::8800 on port 53 ipadnsconfig: forwarders: - ip_address: 8.8.6.6 - ip_address: 2001:4860:4860::8800 port: 53 action: member state: absent
--- - name: Playbook to ensure the absence of a global forwarder in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure the absence of a DNS global forwarder to 8.8.6.6 and 2001:4860:4860::8800 on port 53 ipadnsconfig: forwarders: - ip_address: 8.8.6.6 - ip_address: 2001:4860:4860::8800 port: 53 action: member state: absent
重要Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-absence-of-a-global-forwarder.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-absence-of-a-global-forwarder.yml
97.10.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat disable-global-forwarders.yml --- - name: Playbook to disable global DNS forwarders hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Disable global forwarders. ipadnsconfig: forward_policy: none
$ cat disable-global-forwarders.yml --- - name: Playbook to disable global DNS forwarders hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Disable global forwarders. ipadnsconfig: forward_policy: none
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file disable-global-forwarders.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file disable-global-forwarders.yml
97.11.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp forwarders-absent.yml ensure-presence-forwardzone.yml
$ cp forwarders-absent.yml ensure-presence-forwardzone.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 8.8.8.8
- 8.8.8.8
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to ensure the presence of a dnsforwardzone in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure the presence of a dnsforwardzone for example.com to 8.8.8.8 ipadnsforwardzone: ipaadmin_password: "{{ ipaadmin_password }}" name: example.com forwarders: - 8.8.8.8 forwardpolicy: first skip_overlap_check: true state: present
--- - name: Playbook to ensure the presence of a dnsforwardzone in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure the presence of a dnsforwardzone for example.com to 8.8.8.8 ipadnsforwardzone: ipaadmin_password: "{{ ipaadmin_password }}" name: example.com forwarders: - 8.8.8.8 forwardpolicy: first skip_overlap_check: true state: present
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-forwardzone.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-forwardzone.yml
97.12.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp forwarders-absent.yml ensure-presence-multiple-forwarders.yml
$ cp forwarders-absent.yml ensure-presence-multiple-forwarders.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 8.8.8.8 - 4.4.4.4
- 8.8.8.8 - 4.4.4.4
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: name: Playbook to ensure the presence of multiple forwarders in a dnsforwardzone in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure presence of 8.8.8.8 and 4.4.4.4 forwarders in dnsforwardzone for example.com ipadnsforwardzone: ipaadmin_password: "{{ ipaadmin_password }}" name: example.com forwarders: - 8.8.8.8 - 4.4.4.4 state: present
--- - name: name: Playbook to ensure the presence of multiple forwarders in a dnsforwardzone in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure presence of 8.8.8.8 and 4.4.4.4 forwarders in dnsforwardzone for example.com ipadnsforwardzone: ipaadmin_password: "{{ ipaadmin_password }}" name: example.com forwarders: - 8.8.8.8 - 4.4.4.4 state: present
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-multiple-forwarders.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-multiple-forwarders.yml
97.13.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp forwarders-absent.yml ensure-disabled-forwardzone.yml
$ cp forwarders-absent.yml ensure-disabled-forwardzone.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to ensure a dnsforwardzone is disabled in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure a dnsforwardzone for example.com is disabled ipadnsforwardzone: ipaadmin_password: "{{ ipaadmin_password }}" name: example.com state: disabled
--- - name: Playbook to ensure a dnsforwardzone is disabled in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure a dnsforwardzone for example.com is disabled ipadnsforwardzone: ipaadmin_password: "{{ ipaadmin_password }}" name: example.com state: disabled
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-disabled-forwardzone.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-disabled-forwardzone.yml
97.14.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsconfig
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp forwarders-absent.yml ensure-absence-forwardzone.yml
$ cp forwarders-absent.yml ensure-absence-forwardzone.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to ensure the absence of a dnsforwardzone in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure the absence of a dnsforwardzone for example.com ipadnsforwardzone: ipaadmin_password: "{{ ipaadmin_password }}" name: example.com state: absent
--- - name: Playbook to ensure the absence of a dnsforwardzone in IdM DNS hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure the absence of a dnsforwardzone for example.com ipadnsforwardzone: ipaadmin_password: "{{ ipaadmin_password }}" name: example.com state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-absence-forwardzone.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-absence-forwardzone.yml
第98章
98.1.
- 注記注記
98.2.
98.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa dnsrecord-add zone_name record_name --record_type_option=data
$ ipa dnsrecord-add zone_name record_name --record_type_option=data
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa dnsrecord-add idm.example.com host1 --a-rec=192.168.122.123
$ ipa dnsrecord-add idm.example.com host1 --a-rec=192.168.122.123
98.4.
|
|
|
|
|
|
|
| ||
|
|
|
|
|
|
|
|
|
|
|
|
| ||
|
|
|
|
|
| ||
|
|
|
|
|
|
|
|
|
|
|
98.5.
98.6.
図98.5
[D]
98.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa dnsrecord-del example.com www --a-rec 192.0.2.1
$ ipa dnsrecord-del example.com www --a-rec 192.0.2.1
98.8.
第99章
99.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa dns-update-system-records --dry-run
$ ipa dns-update-system-records --dry-run IPA DNS records: _kerberos-master._tcp.example.com. 86400 IN SRV 0 100 88 ipa.example.com. _kerberos-master._udp.example.com. 86400 IN SRV 0 100 88 ipa.example.com. [... output truncated ...]
99.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa dns-update-system-records --dry-run --out dns_records_file.nsupdate
$ ipa dns-update-system-records --dry-run --out dns_records_file.nsupdate IPA DNS records: _kerberos-master._tcp.example.com. 86400 IN SRV 0 100 88 ipa.example.com. _kerberos-master._udp.example.com. 86400 IN SRV 0 100 88 ipa.example.com. [... output truncated ...]
例99.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cat dns_records_file.nsupdate zone example.com. server 192.0.2.1 ; IPA DNS records update delete _kerberos-master._tcp.example.com. SRV update add _kerberos-master._tcp.example.com. 86400 IN SRV 0 100 88 ipa.example.com. [... output truncated ...]
$ cat dns_records_file.nsupdate zone example.com. server 192.0.2.1 ; IPA DNS records update delete _kerberos-master._tcp.example.com. SRV update add _kerberos-master._tcp.example.com. 86400 IN SRV 0 100 88 ipa.example.com. [... output truncated ...]
99.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow nsupdate -k tsig_key.file dns_records_file.nsupdate
$ nsupdate -k tsig_key.file dns_records_file.nsupdate
Copy to Clipboard Copied! Toggle word wrap Toggle overflow nsupdate -y algorithm:keyname:secret dns_records_file.nsupdate
$ nsupdate -y algorithm:keyname:secret dns_records_file.nsupdate
99.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit principal_allowed_to_update_records@REALM
$ kinit principal_allowed_to_update_records@REALM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow nsupdate -g dns_records_file.nsupdate
$ nsupdate -g dns_records_file.nsupdate
99.5.
第100章
100.1.
- 注記注記
100.2.
|
|
|
|
|
|
|
| ||
|
|
|
|
|
|
|
|
|
|
|
|
| ||
|
|
|
|
|
| ||
|
|
|
|
|
|
|
|
|
|
|
100.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/dnsrecord
$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsrecord
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp ensure-A-and-AAAA-records-are-present.yml ensure-A-and-AAAA-records-are-present-copy.yml
$ cp ensure-A-and-AAAA-records-are-present.yml ensure-A-and-AAAA-records-are-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Ensure A and AAAA records are present hosts: ipaserver become: true gather_facts: false tasks: # Ensure A and AAAA records are present - name: Ensure that 'host1' has A and AAAA records. ipadnsrecord: ipaadmin_password: "{{ ipaadmin_password }}" zone_name: idm.example.com records: - name: host1 a_ip_address: 192.168.122.123 - name: host1 aaaa_ip_address: ::1
--- - name: Ensure A and AAAA records are present hosts: ipaserver become: true gather_facts: false tasks: # Ensure A and AAAA records are present - name: Ensure that 'host1' has A and AAAA records. ipadnsrecord: ipaadmin_password: "{{ ipaadmin_password }}" zone_name: idm.example.com records: - name: host1 a_ip_address: 192.168.122.123 - name: host1 aaaa_ip_address: ::1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-A-and-AAAA-records-are-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-A-and-AAAA-records-are-present-copy.yml
100.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/dnsrecord
$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsrecord
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp ensure-dnsrecord-with-reverse-is-present.yml ensure-dnsrecord-with-reverse-is-present-copy.yml
$ cp ensure-dnsrecord-with-reverse-is-present.yml ensure-dnsrecord-with-reverse-is-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Ensure DNS Record is present. hosts: ipaserver become: true gather_facts: false tasks: # Ensure that dns record is present - ipadnsrecord: ipaadmin_password: "{{ ipaadmin_password }}" name: host1 zone_name: idm.example.com ip_address: 192.168.122.45 create_reverse: true state: present
--- - name: Ensure DNS Record is present. hosts: ipaserver become: true gather_facts: false tasks: # Ensure that dns record is present - ipadnsrecord: ipaadmin_password: "{{ ipaadmin_password }}" name: host1 zone_name: idm.example.com ip_address: 192.168.122.45 create_reverse: true state: present
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-dnsrecord-with-reverse-is-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-dnsrecord-with-reverse-is-present-copy.yml
100.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/dnsrecord
$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsrecord
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp ensure-presence-multiple-records.yml ensure-presence-multiple-records-copy.yml
$ cp ensure-presence-multiple-records.yml ensure-presence-multiple-records-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Test multiple DNS Records are present. hosts: ipaserver become: true gather_facts: false tasks: # Ensure that multiple dns records are present - ipadnsrecord: ipaadmin_password: "{{ ipaadmin_password }}" records: - name: host1 zone_name: idm.example.com a_rec: 192.168.122.112 a_rec: 192.168.122.122 - name: host1 zone_name: idm.example.com aaaa_rec: ::1
--- - name: Test multiple DNS Records are present. hosts: ipaserver become: true gather_facts: false tasks: # Ensure that multiple dns records are present - ipadnsrecord: ipaadmin_password: "{{ ipaadmin_password }}" records: - name: host1 zone_name: idm.example.com a_rec: 192.168.122.112 a_rec: 192.168.122.122 - name: host1 zone_name: idm.example.com aaaa_rec: ::1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-multiple-records-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-presence-multiple-records-copy.yml
100.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/dnsrecord
$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsrecord
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp ensure-CNAME-record-is-present.yml ensure-CNAME-record-is-present-copy.yml
$ cp ensure-CNAME-record-is-present.yml ensure-CNAME-record-is-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Ensure that 'www.idm.example.com' and 'ftp.idm.example.com' CNAME records point to 'host03.idm.example.com'. hosts: ipaserver become: true gather_facts: false tasks: - ipadnsrecord: ipaadmin_password: "{{ ipaadmin_password }}" zone_name: idm.example.com records: - name: www cname_hostname: host03 - name: ftp cname_hostname: host03
--- - name: Ensure that 'www.idm.example.com' and 'ftp.idm.example.com' CNAME records point to 'host03.idm.example.com'. hosts: ipaserver become: true gather_facts: false tasks: - ipadnsrecord: ipaadmin_password: "{{ ipaadmin_password }}" zone_name: idm.example.com records: - name: www cname_hostname: host03 - name: ftp cname_hostname: host03
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-CNAME-record-is-present.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-CNAME-record-is-present.yml
100.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd /usr/share/doc/ansible-freeipa/playbooks/dnsrecord
$ cd /usr/share/doc/ansible-freeipa/playbooks/dnsrecord
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [ipaserver] server.idm.example.com
[ipaserver] server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp ensure-SRV-record-is-present.yml ensure-SRV-record-is-present-copy.yml
$ cp ensure-SRV-record-is-present.yml ensure-SRV-record-is-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Test multiple DNS Records are present. hosts: ipaserver become: true gather_facts: false tasks: # Ensure a SRV record is present - ipadnsrecord: ipaadmin_password: "{{ ipaadmin_password }}" name: _kerberos._udp.idm.example.com srv_rec: ’10 50 88 idm.example.com’ zone_name: idm.example.com state: present
--- - name: Test multiple DNS Records are present. hosts: ipaserver become: true gather_facts: false tasks: # Ensure a SRV record is present - ipadnsrecord: ipaadmin_password: "{{ ipaadmin_password }}" name: _kerberos._udp.idm.example.com srv_rec: ’10 50 88 idm.example.com’ zone_name: idm.example.com state: present
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-SRV-record-is-present.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory.file ensure-SRV-record-is-present.yml
第101章
101.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/server/server-present.yml server-present-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/server/server-present.yml server-present-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Server present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server server123.idm.example.com is present ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com
--- - name: Server present example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server server123.idm.example.com is present ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory server-present-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory server-present-copy.yml
101.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/server/server-absent.yml server-absent-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/server/server-absent.yml server-absent-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Server absent example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server server123.idm.example.com is absent ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com state: absent
--- - name: Server absent example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server server123.idm.example.com is absent ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory server-absent-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory server-absent-copy.yml
101.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/server/server-absent-ignore-last-of-role.yml server-absent-ignore-last-of-role-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/server/server-absent-ignore-last-of-role.yml server-absent-ignore-last-of-role-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Server absent with last of role skip example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server “server123.idm.example.com” is absent with last of role skip ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com ignore_last_of_role: true state: absent
--- - name: Server absent with last of role skip example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server “server123.idm.example.com” is absent with last of role skip ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com ignore_last_of_role: true state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory server-absent-ignore-last-of-role-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory server-absent-ignore-last-of-role-copy.yml
101.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/server/server-absent-ignore_topology_disconnect.yml server-absent-ignore_topology_disconnect-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/server/server-absent-ignore_topology_disconnect.yml server-absent-ignore_topology_disconnect-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Server absent with ignoring topology disconnects example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server “server123.idm.example.com” with ignoring topology disconnects ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com ignore_topology_disconnect: true state: absent
--- - name: Server absent with ignoring topology disconnects example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server “server123.idm.example.com” with ignoring topology disconnects ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com ignore_topology_disconnect: true state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory server-absent-ignore_topology_disconnect-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory server-absent-ignore_topology_disconnect-copy.yml
101.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/server/server-not-hidden.yml server-not-hidden-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/server/server-not-hidden.yml server-not-hidden-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Server not hidden example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server server123.idm.example.com is not hidden ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com hidden: no
--- - name: Server not hidden example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server server123.idm.example.com is not hidden ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com hidden: no
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory server-not-hidden-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory server-not-hidden-copy.yml
101.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/server/server-location.yml server-location-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/server/server-location.yml server-location-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Server enabled example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server server123.idm.example.com with location “germany” is present ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com location: germany
--- - name: Server enabled example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server server123.idm.example.com with location “germany” is present ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com location: germany
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory server-location-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory server-location-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh root@server123.idm.example.com
ssh root@server123.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [root@server123.idm.example.com ~]# systemctl restart named-pkcs11
[root@server123.idm.example.com ~]# systemctl restart named-pkcs11
101.8.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cp /usr/share/doc/ansible-freeipa/playbooks/server/server-no-location.yml server-no-location-copy.yml
$ cp /usr/share/doc/ansible-freeipa/playbooks/server/server-no-location.yml server-no-location-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Server no location example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server server123.idm.example.com is present with no location ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com location: “”
--- - name: Server no location example hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure server server123.idm.example.com is present with no location ipaserver: ipaadmin_password: "{{ ipaadmin_password }}" name: server123.idm.example.com location: “”
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory server-no-location-copy.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory server-no-location-copy.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh root@server123.idm.example.com
ssh root@server123.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [root@server123.idm.example.com ~]# systemctl restart named-pkcs11
[root@server123.idm.example.com ~]# systemctl restart named-pkcs11
第102章
102.1.
102.2.
102.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl enable ipa-healthcheck.timer
# systemctl enable ipa-healthcheck.timer Created symlink /etc/systemd/system/multi-user.target.wants/ipa-healthcheck.timer -> /usr/lib/systemd/system/ipa-healthcheck.timer.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl start ipa-healthcheck.timer
# systemctl start ipa-healthcheck.timer
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl enable crond systemctl start crond
# systemctl enable crond # systemctl start crond
systemctl start ipa-healthcheck
# systemctl start ipa-healthcheck
102.4.
102.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-healthcheck
# ipa-healthcheck
第103章
103.1.
ipa-healthcheck --list-sources
# ipa-healthcheck --list-sources
103.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-healthcheck --source=ipahealthcheck.meta.services --failures-only
# ipa-healthcheck --source=ipahealthcheck.meta.services --failures-only
[ ]
[ ]
{ "source": "ipahealthcheck.meta.services", "check": "httpd", "result": "ERROR", "kw": { "status": false, "msg": "httpd: not running" } }
{
"source": "ipahealthcheck.meta.services",
"check": "httpd",
"result": "ERROR",
"kw": {
"status": false,
"msg": "httpd: not running"
}
}
第104章
104.1.
ipa-healthcheck --list-sources
# ipa-healthcheck --list-sources
104.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-healthcheck --source=ipahealthcheck.ipa.trust --failures-only
# ipa-healthcheck --source=ipahealthcheck.ipa.trust --failures-only
ipa-healthcheck --source=ipahealthcheck.ipa.trust --failures-only
# ipa-healthcheck --source=ipahealthcheck.ipa.trust --failures-only
[]
第105章
105.1.
ipa-healthcheck --list-sources
# ipa-healthcheck --list-sources
- 注記
- 注記
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openssl verify -verbose -show_chain -CAfile /etc/ipa/ca.crt [cert file]
openssl verify -verbose -show_chain -CAfile /etc/ipa/ca.crt [cert file]
105.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-healthcheck --source=ipahealthcheck.ipa.certs --failures-only
# ipa-healthcheck --source=ipahealthcheck.ipa.certs --failures-only
[]
[]
{ "source": "ipahealthcheck.ipa.certs", "check": "IPACertfileExpirationCheck", "result": "ERROR", "kw": { "key": 1234, "dbdir": "/path/to/nssdb", "error": [error], "msg": "Unable to open NSS database '/path/to/nssdb': [error]" } }
{
"source": "ipahealthcheck.ipa.certs",
"check": "IPACertfileExpirationCheck",
"result": "ERROR",
"kw": {
"key": 1234,
"dbdir": "/path/to/nssdb",
"error": [error],
"msg": "Unable to open NSS database '/path/to/nssdb': [error]"
}
}
第106章
106.1.
ipa-healthcheck --list-sources
# ipa-healthcheck --list-sources
106.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-healthcheck --source=ipahealthcheck.dogtag.ca
# ipa-healthcheck --source=ipahealthcheck.dogtag.ca
{ "source: ipahealthcheck.dogtag.ca", "check: DogtagCertsConfigCheck", "result: SUCCESS", "uuid: 9b366200-9ec8-4bd9-bb5e-9a280c803a9c", "when: 20191008135826Z", "duration: 0.252280", "kw:" { "key": "Server-Cert cert-pki-ca", "configfile": "/var/lib/pki/pki-tomcat/conf/ca/CS.cfg" } }
{
"source: ipahealthcheck.dogtag.ca",
"check: DogtagCertsConfigCheck",
"result: SUCCESS",
"uuid: 9b366200-9ec8-4bd9-bb5e-9a280c803a9c",
"when: 20191008135826Z",
"duration: 0.252280",
"kw:" {
"key": "Server-Cert cert-pki-ca",
"configfile": "/var/lib/pki/pki-tomcat/conf/ca/CS.cfg"
}
}
{ "source: ipahealthcheck.dogtag.ca", "check: DogtagCertsConfigCheck", "result: CRITICAL", "uuid: 59d66200-1447-4b3b-be01-89810c803a98", "when: 20191008135912Z", "duration: 0.002022", "kw:" { "exception": "NSDB /etc/pki/pki-tomcat/alias not initialized", } }
{
"source: ipahealthcheck.dogtag.ca",
"check: DogtagCertsConfigCheck",
"result: CRITICAL",
"uuid: 59d66200-1447-4b3b-be01-89810c803a98",
"when: 20191008135912Z",
"duration: 0.002022",
"kw:" {
"exception": "NSDB /etc/pki/pki-tomcat/alias not initialized",
}
}
第107章
107.1.
|
|
|
|
|
|
|
|
|
|
|
|
ipa-healthcheck --list-sources
# ipa-healthcheck --list-sources
107.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-healthcheck --source=ipahealthcheck.system.filesystemspace --failures-only
# ipa-healthcheck --source=ipahealthcheck.system.filesystemspace --failures-only
[]
[]
{ "source": "ipahealthcheck.system.filesystemspace", "check": "FileSystemSpaceCheck", "result": "ERROR", "kw": { "msg": "/var/lib/dirsrv: free space under threshold: 0 MiB < 1024 MiB", "store": "/var/lib/dirsrv", "free_space": 0, "threshold": 1024 } }
{
"source": "ipahealthcheck.system.filesystemspace",
"check": "FileSystemSpaceCheck",
"result": "ERROR",
"kw": {
"msg": "/var/lib/dirsrv: free space under threshold: 0 MiB < 1024 MiB",
"store": "/var/lib/dirsrv",
"free_space": 0,
"threshold": 1024
}
}
第108章
108.1.
ipa-healthcheck --list-sources
# ipa-healthcheck --list-sources
108.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-healthcheck --source=ipahealthcheck.ipa.files --failures-only
# ipa-healthcheck --source=ipahealthcheck.ipa.files --failures-only
ipa-healthcheck --source=ipahealthcheck.ipa.files --failures-only
# ipa-healthcheck --source=ipahealthcheck.ipa.files --failures-only
[]
{ "source": "ipahealthcheck.ipa.files", "check": "IPAFileNSSDBCheck", "result": "WARNING", "kw": { "key": "_etc_dirsrv_slapd-EXAMPLE-TEST_pkcs11.txt_mode", "path": "/etc/dirsrv/slapd-EXAMPLE-TEST/pkcs11.txt", "type": "mode", "expected": "0640", "got": "0666", "msg": "Permissions of /etc/dirsrv/slapd-EXAMPLE-TEST/pkcs11.txt are 0666 and should be 0640" } }
{
"source": "ipahealthcheck.ipa.files",
"check": "IPAFileNSSDBCheck",
"result": "WARNING",
"kw": {
"key": "_etc_dirsrv_slapd-EXAMPLE-TEST_pkcs11.txt_mode",
"path": "/etc/dirsrv/slapd-EXAMPLE-TEST/pkcs11.txt",
"type": "mode",
"expected": "0640",
"got": "0666",
"msg": "Permissions of /etc/dirsrv/slapd-EXAMPLE-TEST/pkcs11.txt are 0666 and should be 0640"
}
}
第109章
109.1.
ipa-healthcheck --list-sources
# ipa-healthcheck --list-sources
- 注記
109.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-healthcheck --source=ipahealthcheck.ds.replication --source=ipahealthcheck.ipa.topology
# ipa-healthcheck --source=ipahealthcheck.ds.replication --source=ipahealthcheck.ipa.topology
Copy to Clipboard Copied! Toggle word wrap Toggle overflow { "source": "ipahealthcheck.ipa.topology", "check": "IPATopologyDomainCheck", "result": "SUCCESS", "kw": { "suffix": "domain" } }
{ "source": "ipahealthcheck.ipa.topology", "check": "IPATopologyDomainCheck", "result": "SUCCESS", "kw": { "suffix": "domain" } }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow { "source": "ipahealthcheck.ipa.topology", "check": "IPATopologyDomainCheck", "result": "ERROR", "uuid": d6ce3332-92da-423d-9818-e79f49ed321f "when": 20191007115449Z "duration": 0.005943 "kw": { "msg": "topologysuffix-verify domain failed, server2 is not connected (server2_139664377356472 in MainThread)" } }
{ "source": "ipahealthcheck.ipa.topology", "check": "IPATopologyDomainCheck", "result": "ERROR", "uuid": d6ce3332-92da-423d-9818-e79f49ed321f "when": 20191007115449Z "duration": 0.005943 "kw": { "msg": "topologysuffix-verify domain failed, server2 is not connected (server2_139664377356472 in MainThread)" } }
109.3.
第110章
110.1.
ipa-healthcheck --list-sources
# ipa-healthcheck --list-sources
110.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-healthcheck --source ipahealthcheck.ipa.idns
# ipa-healthcheck --source ipahealthcheck.ipa.idns
Copy to Clipboard Copied! Toggle word wrap Toggle overflow { "source": "ipahealthcheck.ipa.idns", "check": "IPADNSSystemRecordsCheck", "result": "SUCCESS", "uuid": "eb7a3b68-f6b2-4631-af01-798cac0eb018", "when": "20200415143339Z", "duration": "0.210471", "kw": { "key": "_ldap._tcp.idm.example.com.:server1.idm.example.com." } }
{ "source": "ipahealthcheck.ipa.idns", "check": "IPADNSSystemRecordsCheck", "result": "SUCCESS", "uuid": "eb7a3b68-f6b2-4631-af01-798cac0eb018", "when": "20200415143339Z", "duration": "0.210471", "kw": { "key": "_ldap._tcp.idm.example.com.:server1.idm.example.com." } }
Copy to Clipboard Copied! Toggle word wrap Toggle overflow { "source": "ipahealthcheck.ipa.idns", "check": "IPADNSSystemRecordsCheck", "result": "WARNING", "uuid": "972b7782-1616-48e0-bd5c-49a80c257895", "when": "20200409100614Z", "duration": "0.203049", "kw": { "msg": "Got {count} ipa-ca A records, expected {expected}", "count": 2, "expected": 1 } }
{ "source": "ipahealthcheck.ipa.idns", "check": "IPADNSSystemRecordsCheck", "result": "WARNING", "uuid": "972b7782-1616-48e0-bd5c-49a80c257895", "when": "20200409100614Z", "duration": "0.203049", "kw": { "msg": "Got {count} ipa-ca A records, expected {expected}", "count": 2, "expected": 1 } }
第112章
112.1.
112.2.
112.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ldapmodify -x -D "cn=Directory Manager" -W -h server.example.com -p 389
$ ldapmodify -x -D "cn=Directory Manager" -W -h server.example.com -p 389 Enter LDAP Password: dn: cn=config changetype: modify replace: nsslapd-allow-anonymous-access nsslapd-allow-anonymous-access: rootdse modifying entry "cn=config"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart dirsrv.target
# systemctl restart dirsrv.target
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ldapsearch -x -D "cn=Directory Manager" -b cn=config -W -h server.example.com -p 389 nsslapd-allow-anonymous-access | grep nsslapd-allow-anonymous-access requesting: nsslapd-allow-anonymous-access
$ ldapsearch -x -D "cn=Directory Manager" -b cn=config -W -h server.example.com -p 389 nsslapd-allow-anonymous-access | grep nsslapd-allow-anonymous-access Enter LDAP Password: # requesting: nsslapd-allow-anonymous-access nsslapd-allow-anonymous-access: rootdse
第113章
113.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install ipa-server-trust-ad samba-client
[root@ipaserver ~]# yum install ipa-server-trust-ad samba-client
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
[root@ipaserver ~]# kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-adtrust-install
[root@ipaserver ~]# ipa-adtrust-install
Copy to Clipboard Copied! Toggle word wrap Toggle overflow WARNING: The smb.conf already exists. Running ipa-adtrust-install will break your existing Samba configuration. Do you wish to continue? [no]: yes
WARNING: The smb.conf already exists. Running ipa-adtrust-install will break your existing Samba configuration. Do you wish to continue? [no]: yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Do you want to enable support for trusted domains in Schema Compatibility plugin? This will allow clients older than SSSD 1.9 and non-Linux clients to work with trusted users. Enable trusted domains support in slapi-nis? [no]: yes
Do you want to enable support for trusted domains in Schema Compatibility plugin? This will allow clients older than SSSD 1.9 and non-Linux clients to work with trusted users. Enable trusted domains support in slapi-nis? [no]: yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Trust is configured but no NetBIOS domain name found, setting it now. Enter the NetBIOS name for the IPA domain. Only up to 15 uppercase ASCII letters, digits and dashes are allowed. Example: EXAMPLE. NetBIOS domain name [IDM]:
Trust is configured but no NetBIOS domain name found, setting it now. Enter the NetBIOS name for the IPA domain. Only up to 15 uppercase ASCII letters, digits and dashes are allowed. Example: EXAMPLE. NetBIOS domain name [IDM]:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Do you want to run the ipa-sidgen task? [no]: yes
Do you want to run the ipa-sidgen task? [no]: yes
Copy to Clipboard Copied! Toggle word wrap Toggle overflow net conf setparm global 'rpc server dynamic port range' 55000-65000 firewall-cmd --add-port=55000-65000/tcp firewall-cmd --runtime-to-permanent
[root@ipaserver ~]# net conf setparm global 'rpc server dynamic port range' 55000-65000 [root@ipaserver ~]# firewall-cmd --add-port=55000-65000/tcp [root@ipaserver ~]# firewall-cmd --runtime-to-permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipactl restart
[root@ipaserver ~]# ipactl restart
Copy to Clipboard Copied! Toggle word wrap Toggle overflow smbclient -L ipaserver.idm.example.com -U user_name --use-kerberos=required
[root@ipaserver ~]# smbclient -L ipaserver.idm.example.com -U user_name --use-kerberos=required lp_load_ex: changing to config backend registry Sharename Type Comment --------- ---- ------- IPC$ IPC IPC Service (Samba 4.15.2) ...
113.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install ipa-client-samba
[root@idm_client]# yum install ipa-client-samba
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-client-samba
[root@idm_client]# ipa-client-samba Searching for IPA server... IPA server: DNS discovery Chosen IPA master: idm_server.idm.example.com SMB principal to be created: cifs/idm_client.idm.example.com@IDM.EXAMPLE.COM NetBIOS name to be used: IDM_CLIENT Discovered domains to use: Domain name: idm.example.com NetBIOS name: IDM SID: S-1-5-21-525930803-952335037-206501584 ID range: 212000000 - 212199999 Domain name: ad.example.com NetBIOS name: AD SID: None ID range: 1918400000 - 1918599999 Continue to configure the system with these values? [no]: yes Samba domain member is configured. Please check configuration at /etc/samba/smb.conf and start smb and winbind services
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [homes] read only = no
[homes] read only = no
Copy to Clipboard Copied! Toggle word wrap Toggle overflow firewall-cmd --permanent --add-service=samba-client firewall-cmd --reload
[root@idm_client]# firewall-cmd --permanent --add-service=samba-client [root@idm_client]# firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl enable --now smb winbind
[root@idm_client]# systemctl enable --now smb winbind
Copy to Clipboard Copied! Toggle word wrap Toggle overflow smbclient -L idm_client.idm.example.com -U user_name --use-kerberos=required
$ smbclient -L idm_client.idm.example.com -U user_name --use-kerberos=required lp_load_ex: changing to config backend registry Sharename Type Comment --------- ---- ------- example Disk IPC$ IPC IPC Service (Samba 4.15.2) ...
113.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit -k
[root@idm_client]# kinit -k
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idrange-find --name="AD.EXAMPLE.COM_id_range" --raw
[root@idm_client]# ipa idrange-find --name="AD.EXAMPLE.COM_id_range" --raw --------------- 1 range matched --------------- cn: AD.EXAMPLE.COM_id_range ipabaseid: 1918400000 ipaidrangesize: 200000 ipabaserid: 0 ipanttrusteddomainsid: S-1-5-21-968346183-862388825-1738313271 iparangetype: ipa-ad-trust ---------------------------- Number of entries returned 1 ----------------------------
Copy to Clipboard Copied! Toggle word wrap Toggle overflow maximum_range = ipabaseid + ipaidrangesize - 1
maximum_range = ipabaseid + ipaidrangesize - 1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow idmap config AD : range = 1918400000 - 1918599999 idmap config AD : backend = sss
idmap config AD : range = 1918400000 - 1918599999 idmap config AD : backend = sss
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart smb winbind
[root@idm_client]# systemctl restart smb winbind
Copy to Clipboard Copied! Toggle word wrap Toggle overflow smbclient -L idm_client.idm.example.com -U user_name --use-kerberos=required
$ smbclient -L idm_client.idm.example.com -U user_name --use-kerberos=required lp_load_ex: changing to config backend registry Sharename Type Comment --------- ---- ------- example Disk IPC$ IPC IPC Service (Samba 4.15.2) ...
113.4.
第114章
114.1.
114.2.
114.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
[root@server ~]# kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idp-add my-keycloak-idp \ --provider keycloak --organization main \ --base-url keycloak.idm.example.com:8443/auth \ --client-id id13778
[root@server ~]# ipa idp-add my-keycloak-idp \ --provider keycloak --organization main \ --base-url keycloak.idm.example.com:8443/auth \ --client-id id13778 ------------------------------------------------ Added Identity Provider reference "my-keycloak-idp" ------------------------------------------------ Identity Provider reference name: my-keycloak-idp Authorization URI: https://keycloak.idm.example.com:8443/auth/realms/main/protocol/openid-connect/auth Device authorization URI: https://keycloak.idm.example.com:8443/auth/realms/main/protocol/openid-connect/auth/device Token URI: https://keycloak.idm.example.com:8443/auth/realms/main/protocol/openid-connect/token User info URI: https://keycloak.idm.example.com:8443/auth/realms/main/protocol/openid-connect/userinfo Client identifier: ipa_oidc_client Scope: openid email External IdP user identifier attribute: email
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idp-show my-keycloak-idp
[root@server ~]# ipa idp-show my-keycloak-idp
114.4.
|
|
ipa idp-add my-azure-idp \ --provider microsoft \ --organization main \ --client-id <azure_client_id>
|
|
|
ipa idp-add my-google-idp \ --provider google \ --client-id <google_client_id>
|
|
|
ipa idp-add my-github-idp \ --provider github \ --client-id <github_client_id>
|
|
|
ipa idp-add my-keycloak-idp \ --provider keycloak \ --organization main \ --base-url keycloak.idm.example.com:8443/auth \ --client-id <keycloak_client_id>
注記
|
|
|
ipa idp-add my-okta-idp \ --provider okta
|
114.5.
- 注記
114.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
[root@server ~]# kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idp-find keycloak
[root@server ~]# ipa idp-find keycloak
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idp-show my-keycloak-idp
[root@server ~]# ipa idp-show my-keycloak-idp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idp-mod my-keycloak-idp --secret
[root@server ~]# ipa idp-mod my-keycloak-idp --secret
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idp-del my-keycloak-idp
[root@server ~]# ipa idp-del my-keycloak-idp
114.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-mod idm-user-with-external-idp \ --idp my-keycloak-idp \ --idp-user-id idm-user-with-external-idp@idm.example.com \ --user-auth-type=idp
[root@server ~]# ipa user-mod idm-user-with-external-idp \ --idp my-keycloak-idp \ --idp-user-id idm-user-with-external-idp@idm.example.com \ --user-auth-type=idp --------------------------------- Modified user "idm-user-with-external-idp" --------------------------------- User login: idm-user-with-external-idp First name: Test Last name: User1 Home directory: /home/idm-user-with-external-idp Login shell: /bin/sh Principal name: idm-user-with-external-idp@idm.example.com Principal alias: idm-user-with-external-idp@idm.example.com Email address: idm-user-with-external-idp@idm.example.com UID: 35000003 GID: 35000003 User authentication types: idp External IdP configuration: keycloak External IdP user identifier: idm-user-with-external-idp@idm.example.com Account disabled: False Password: False Member of groups: ipausers Kerberos keys available: False
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-show idm-user-with-external-idp
[root@server ~]# ipa user-show idm-user-with-external-idp User login: idm-user-with-external-idp First name: Test Last name: User1 Home directory: /home/idm-user-with-external-idp Login shell: /bin/sh Principal name: idm-user-with-external-idp@idm.example.com Principal alias: idm-user-with-external-idp@idm.example.com Email address: idm-user-with-external-idp@idm.example.com ID: 35000003 GID: 35000003 User authentication types: idp External IdP configuration: keycloak External IdP user identifier: idm-user-with-external-idp@idm.example.com Account disabled: False Password: False Member of groups: ipausers Kerberos keys available: False
114.8.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit -n -c ./fast.ccache
$ kinit -n -c ./fast.ccache
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist -c fast.ccache
$ klist -c fast.ccache Ticket cache: FILE:fast.ccache Default principal: WELLKNOWN/ANONYMOUS@WELLKNOWN:ANONYMOUS Valid starting Expires Service principal 03/03/2024 13:36:37 03/04/2024 13:14:28 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit -T ./fast.ccache idm-user-with-external-idp
[root@client ~]# kinit -T ./fast.ccache idm-user-with-external-idp Authenticate at https://oauth2.idp.com:8443/auth/realms/master/device?user_code=YHMQ-XKTL and press ENTER.:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist -C
[root@client ~]# klist -C Ticket cache: KCM:0:58420 Default principal: idm-user-with-external-idp@IDM.EXAMPLE.COM Valid starting Expires Service principal 05/09/22 07:48:23 05/10/22 07:03:07 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM config: fast_avail(krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM) = yes 08/17/2022 20:22:45 08/18/2022 20:22:43 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM config: pa_type(krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM) = 152
114.9.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh idm-user-with-external-idp@client.idm.example.com
[user@client ~]$ ssh idm-user-with-external-idp@client.idm.example.com (idm-user-with-external-idp@client.idm.example.com) Authenticate at https://oauth2.idp.com:8443/auth/realms/main/device?user_code=XYFL-ROYR and press ENTER.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist -C
[idm-user-with-external-idp@client ~]$ klist -C Ticket cache: KCM:0:58420 Default principal: idm-user-with-external-idp@IDM.EXAMPLE.COM Valid starting Expires Service principal 05/09/22 07:48:23 05/10/22 07:03:07 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM config: fast_avail(krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM) = yes 08/17/2022 20:22:45 08/18/2022 20:22:43 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM config: pa_type(krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM) = 152
114.10.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idp-add MySSO --provider keycloak \ --org main --base-url keycloak.domain.com:8443/auth \ --client-id <your-client-id>
[root@client ~]# ipa idp-add MySSO --provider keycloak \ --org main --base-url keycloak.domain.com:8443/auth \ --client-id <your-client-id>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idp-add MyOkta --provider okta --base-url dev-12345.okta.com --client-id <your-client-id>
[root@client ~]# ipa idp-add MyOkta --provider okta --base-url dev-12345.okta.com --client-id <your-client-id>
第115章
115.1.
115.2.
115.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Configure external IdP hosts: ipaserver become: false gather_facts: false tasks: - name: Ensure a reference to github external provider is available ipaidp: ipaadmin_password: "{{ ipaadmin_password }}" name: github_idp provider: github client_ID: 2efe1acffe9e8ab869f4 secret: 656a5228abc5f9545c85fa626aecbf69312d398c idp_user_id: my_github_account_name
--- - name: Configure external IdP hosts: ipaserver become: false gather_facts: false tasks: - name: Ensure a reference to github external provider is available ipaidp: ipaadmin_password: "{{ ipaadmin_password }}" name: github_idp provider: github client_ID: 2efe1acffe9e8ab869f4 secret: 656a5228abc5f9545c85fa626aecbf69312d398c idp_user_id: my_github_account_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory configure-external-idp-reference.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory configure-external-idp-reference.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa idp-show github_idp
[idmuser@idmclient ~]$ ipa idp-show github_idp
115.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Ensure an IdM user uses an external IdP to authenticate to IdM hosts: ipaserver become: false gather_facts: false tasks: - name: Retrieve Github user ID ansible.builtin.uri: url: “https://api.github.com/users/my_github_account_name” method: GET headers: Accept: “application/vnd.github.v3+json” register: user_data - name: Ensure IdM user exists with an external IdP authentication ipauser: ipaadmin_password: "{{ ipaadmin_password }}" name: idm-user-with-external-idp first: Example last: User userauthtype: idp idp: github_idp idp_user_id: my_github_account_name
--- - name: Ensure an IdM user uses an external IdP to authenticate to IdM hosts: ipaserver become: false gather_facts: false tasks: - name: Retrieve Github user ID ansible.builtin.uri: url: “https://api.github.com/users/my_github_account_name” method: GET headers: Accept: “application/vnd.github.v3+json” register: user_data - name: Ensure IdM user exists with an external IdP authentication ipauser: ipaadmin_password: "{{ ipaadmin_password }}" name: idm-user-with-external-idp first: Example last: User userauthtype: idp idp: github_idp idp_user_id: my_github_account_name
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory enable-user-to-authenticate-via-external-idp.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory enable-user-to-authenticate-via-external-idp.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa user-show idm-user-with-external-idp
$ ipa user-show idm-user-with-external-idp User login: idm-user-with-external-idp First name: Example Last name: User Home directory: /home/idm-user-with-external-idp Login shell: /bin/sh Principal name: idm-user-with-external-idp@idm.example.com Principal alias: idm-user-with-external-idp@idm.example.com Email address: idm-user-with-external-idp@idm.example.com ID: 35000003 GID: 35000003 User authentication types: idp External IdP configuration: github External IdP user identifier: idm-user-with-external-idp@idm.example.com Account disabled: False Password: False Member of groups: ipausers Kerberos keys available: False
115.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit -n -c ./fast.ccache
$ kinit -n -c ./fast.ccache
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist -c fast.ccache
$ klist -c fast.ccache Ticket cache: FILE:fast.ccache Default principal: WELLKNOWN/ANONYMOUS@WELLKNOWN:ANONYMOUS Valid starting Expires Service principal 03/03/2024 13:36:37 03/04/2024 13:14:28 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit -T ./fast.ccache idm-user-with-external-idp
[root@client ~]# kinit -T ./fast.ccache idm-user-with-external-idp Authenticate at https://oauth2.idp.com:8443/auth/realms/master/device?user_code=YHMQ-XKTL and press ENTER.:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist -C
[root@client ~]# klist -C Ticket cache: KCM:0:58420 Default principal: idm-user-with-external-idp@IDM.EXAMPLE.COM Valid starting Expires Service principal 05/09/22 07:48:23 05/10/22 07:03:07 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM config: fast_avail(krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM) = yes 08/17/2022 20:22:45 08/18/2022 20:22:43 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM config: pa_type(krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM) = 152
115.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ssh idm-user-with-external-idp@client.idm.example.com
[user@client ~]$ ssh idm-user-with-external-idp@client.idm.example.com (idm-user-with-external-idp@client.idm.example.com) Authenticate at https://oauth2.idp.com:8443/auth/realms/main/device?user_code=XYFL-ROYR and press ENTER.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist -C
[idm-user-with-external-idp@client ~]$ klist -C Ticket cache: KCM:0:58420 Default principal: idm-user-with-external-idp@IDM.EXAMPLE.COM Valid starting Expires Service principal 05/09/22 07:48:23 05/10/22 07:03:07 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM config: fast_avail(krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM) = yes 08/17/2022 20:22:45 08/18/2022 20:22:43 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM config: pa_type(krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM) = 152
115.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage IPA idp hosts: ipaserver become: false tasks: - name: Ensure keycloak idp my-keycloak-idp is present using provider ipaidp: ipaadmin_password: "{{ ipaadmin_password }}" name: my-keycloak-idp provider: keycloak organization: main base_url: keycloak.domain.com:8443/auth client_id: my-keycloak-client-id
--- - name: Playbook to manage IPA idp hosts: ipaserver become: false tasks: - name: Ensure keycloak idp my-keycloak-idp is present using provider ipaidp: ipaadmin_password: "{{ ipaadmin_password }}" name: my-keycloak-idp provider: keycloak organization: main base_url: keycloak.domain.com:8443/auth client_id: my-keycloak-client-id
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage IPA idp hosts: ipaserver become: false tasks: - name: Ensure okta idp my-okta-idp is present using provider ipaidp: ipaadmin_password: "{{ ipaadmin_password }}" name: my-okta-idp provider: okta base_url: dev-12345.okta.com client_id: my-okta-client-id
--- - name: Playbook to manage IPA idp hosts: ipaserver become: false tasks: - name: Ensure okta idp my-okta-idp is present using provider ipaidp: ipaadmin_password: "{{ ipaadmin_password }}" name: my-okta-idp provider: okta base_url: dev-12345.okta.com client_id: my-okta-client-id
第116章
第117章
117.1.
117.2.
117.3.
(host.example.com,,nisdomain.example.com) (-,user,nisdomain.example.com)
(host.example.com,,nisdomain.example.com)
(-,user,nisdomain.example.com)
117.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage IPA netgroup. hosts: ipaserver become: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure netgroup members are present ipanetgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: TestNetgroup1
--- - name: Playbook to manage IPA netgroup. hosts: ipaserver become: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure netgroup members are present ipanetgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: TestNetgroup1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/netgroup-present.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/netgroup-present.yml
117.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage IPA netgroup. hosts: ipaserver become: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure netgroup members are present ipanetgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: TestNetgroup1 user: user1,user2 group: group1 host: idmclient1 netgroup: admins action: member
--- - name: Playbook to manage IPA netgroup. hosts: ipaserver become: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure netgroup members are present ipanetgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: TestNetgroup1 user: user1,user2 group: group1 host: idmclient1 netgroup: admins action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/IdM-members-present-in-a-netgroup.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/IdM-members-present-in-a-netgroup.yml
117.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage IPA netgroup. hosts: ipaserver become: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure netgroup user, "user1", is absent ipanetgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: TestNetgroup1 user: "user1" action: member state: absent
--- - name: Playbook to manage IPA netgroup. hosts: ipaserver become: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure netgroup user, "user1", is absent ipanetgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: TestNetgroup1 user: "user1" action: member state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/IdM-member-absent-from-a-netgroup.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/IdM-member-absent-from-a-netgroup.yml
117.7.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to manage IPA netgroup. hosts: ipaserver become: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure netgroup my_netgroup1 is absent ipanetgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: my_netgroup1 state: absent
--- - name: Playbook to manage IPA netgroup. hosts: ipaserver become: no vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure netgroup my_netgroup1 is absent ipanetgroup: ipaadmin_password: "{{ ipaadmin_password }}" name: my_netgroup1 state: absent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/netgroup-absent.yml
$ ansible-playbook --vault-password-file=password_file -v -i path_to_inventory_directory/inventory.file path_to_playbooks_directory_/netgroup-absent.yml
第118章
118.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-nis-manage enable ipa-compat-manage enable
[root@ipaserver ~]# ipa-nis-manage enable [root@ipaserver ~]# ipa-compat-manage enable
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ldapmodify -x -D 'cn=directory manager' -W
[root@ipaserver ~]# ldapmodify -x -D 'cn=directory manager' -W dn: cn=NIS Server,cn=plugins,cn=config changetype: modify add: nsslapd-pluginarg0 nsslapd-pluginarg0: 514
警告Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl enable rpcbind.service systemctl start rpcbind.service
[root@ipaserver ~]# systemctl enable rpcbind.service [root@ipaserver ~]# systemctl start rpcbind.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart dirsrv.target
[root@ipaserver ~]# systemctl restart dirsrv.target
118.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install yp-tools -y
[root@nis-server ~]# yum install yp-tools -y
Copy to Clipboard Copied! Toggle word wrap Toggle overflow $1 is the NIS domain, $2 is the primary NIS server
#!/bin/sh # $1 is the NIS domain, $2 is the primary NIS server ypcat -d $1 -h $2 passwd > /dev/shm/nis-map.passwd 2>&1 IFS=$'\n' for line in $(cat /dev/shm/nis-map.passwd) ; do IFS=' ' username=$(echo $line | cut -f1 -d:) # Not collecting encrypted password because we need cleartext password # to create kerberos key uid=$(echo $line | cut -f3 -d:) gid=$(echo $line | cut -f4 -d:) gecos=$(echo $line | cut -f5 -d:) homedir=$(echo $line | cut -f6 -d:) shell=$(echo $line | cut -f7 -d:) # Now create this entry echo passw0rd1 | ipa user-add $username --first=NIS --last=USER \ --password --gidnumber=$gid --uid=$uid --gecos="$gecos" --homedir=$homedir \ --shell=$shell ipa user-show $username done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
[root@nis-server ~]# kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sh /root/nis-users.sh nisdomain nis-server.example.com
[root@nis-server ~]# sh /root/nis-users.sh nisdomain nis-server.example.com
重要
118.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install yp-tools -y
[root@nis-server ~]# yum install yp-tools -y
Copy to Clipboard Copied! Toggle word wrap Toggle overflow $1 is the NIS domain, $2 is the primary NIS server
#!/bin/sh # $1 is the NIS domain, $2 is the primary NIS server ypcat -d $1 -h $2 group > /dev/shm/nis-map.group 2>&1 IFS=$'\n' for line in $(cat /dev/shm/nis-map.group); do IFS=' ' groupname=$(echo $line | cut -f1 -d:) # Not collecting encrypted password because we need cleartext password # to create kerberos key gid=$(echo $line | cut -f3 -d:) members=$(echo $line | cut -f4 -d:) # Now create this entry ipa group-add $groupname --desc=NIS_GROUP_$groupname --gid=$gid if [ -n "$members" ]; then useropts=$(eval echo --users={$members}) ipa group-add-member $groupname $useropts fi ipa group-show $groupname done
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
[root@nis-server ~]# kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sh /root/nis-groups.sh nisdomain nis-server.example.com
[root@nis-server ~]# sh /root/nis-groups.sh nisdomain nis-server.example.com
118.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install yp-tools -y
[root@nis-server ~]# yum install yp-tools -y
Copy to Clipboard Copied! Toggle word wrap Toggle overflow $1 is the NIS domain, $2 is the primary NIS server
#!/bin/sh # $1 is the NIS domain, $2 is the primary NIS server ypcat -d $1 -h $2 hosts | egrep -v "localhost|127.0.0.1" > /dev/shm/nis-map.hosts 2>&1 IFS=$'\n' for line in $(cat /dev/shm/nis-map.hosts); do IFS=' ' ipaddress=$(echo $line | awk '{print $1}') hostname=$(echo $line | awk '{print $2}') primary=$(ipa env xmlrpc_uri | tr -d '[:space:]' | cut -f3 -d: | cut -f3 -d/) domain=$(ipa env domain | tr -d '[:space:]' | cut -f2 -d:) if [ $(echo $hostname | grep "\." |wc -l) -eq 0 ] ; then hostname=$(echo $hostname.$domain) fi zone=$(echo $hostname | cut -f2- -d.) if [ $(ipa dnszone-show $zone 2>/dev/null | wc -l) -eq 0 ] ; then ipa dnszone-add --name-server=$primary --admin-email=root.$primary fi ptrzone=$(echo $ipaddress | awk -F. '{print $3 "." $2 "." $1 ".in-addr.arpa."}') if [ $(ipa dnszone-show $ptrzone 2>/dev/null | wc -l) -eq 0 ] ; then ipa dnszone-add $ptrzone --name-server=$primary --admin-email=root.$primary fi # Now create this entry ipa host-add $hostname --ip-address=$ipaddress ipa host-show $hostname done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
[root@nis-server ~]# kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sh /root/nis-hosts.sh nisdomain nis-server.example.com
[root@nis-server ~]# sh /root/nis-hosts.sh nisdomain nis-server.example.com
注記
118.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install yp-tools -y
[root@nis-server ~]# yum install yp-tools -y
Copy to Clipboard Copied! Toggle word wrap Toggle overflow $1 is the NIS domain, $2 is the primary NIS server
#!/bin/sh # $1 is the NIS domain, $2 is the primary NIS server ypcat -k -d $1 -h $2 netgroup > /dev/shm/nis-map.netgroup 2>&1 IFS=$'\n' for line in $(cat /dev/shm/nis-map.netgroup); do IFS=' ' netgroupname=$(echo $line | awk '{print $1}') triples=$(echo $line | sed "s/^$netgroupname //") echo "ipa netgroup-add $netgroupname --desc=NIS_NG_$netgroupname" if [ $(echo $line | grep "(," | wc -l) -gt 0 ]; then echo "ipa netgroup-mod $netgroupname --hostcat=all" fi if [ $(echo $line | grep ",," | wc -l) -gt 0 ]; then echo "ipa netgroup-mod $netgroupname --usercat=all" fi for triple in $triples; do triple=$(echo $triple | sed -e 's/-//g' -e 's/(//' -e 's/)//') if [ $(echo $triple | grep ",.*," | wc -l) -gt 0 ]; then hostname=$(echo $triple | cut -f1 -d,) username=$(echo $triple | cut -f2 -d,) domain=$(echo $triple | cut -f3 -d,) hosts=""; users=""; doms=""; [ -n "$hostname" ] && hosts="--hosts=$hostname" [ -n "$username" ] && users="--users=$username" [ -n "$domain" ] && doms="--nisdomain=$domain" echo "ipa netgroup-add-member $netgroup $hosts $users $doms" else netgroup=$triple echo "ipa netgroup-add $netgroup --desc=<NIS_NG>_$netgroup" fi done done
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
[root@nis-server ~]# kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sh /root/nis-netgroups.sh nisdomain nis-server.example.com
[root@nis-server ~]# sh /root/nis-netgroups.sh nisdomain nis-server.example.com
118.6.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow yum install yp-tools -y
[root@nis-server ~]# yum install yp-tools -y
Copy to Clipboard Copied! Toggle word wrap Toggle overflow $1 is for the automount entry in ipa $2 is the NIS domain, $3 is the primary NIS server, $4 is the map name $5 is the LDAP server
#!/bin/sh # $1 is for the automount entry in ipa ipa automountlocation-add $1 # $2 is the NIS domain, $3 is the primary NIS server, $4 is the map name ypcat -k -d $2 -h $3 $4 > /dev/shm/nis-map.$4 2>&1 ipa automountmap-add $1 $4 basedn=$(ipa env basedn | tr -d '[:space:]' | cut -f2 -d:) cat > /tmp/amap.ldif <<EOF dn: nis-domain=$2+nis-map=$4,cn=NIS Server,cn=plugins,cn=config objectClass: extensibleObject nis-domain: $2 nis-map: $4 nis-base: automountmapname=$4,cn=$1,cn=automount,$basedn nis-filter: (objectclass=\*) nis-key-format: %{automountKey} nis-value-format: %{automountInformation} EOF # $5 is the LDAP server ldapadd -x -h $5 -D "cn=Directory Manager" -W -f /tmp/amap.ldif IFS=$'\n' for line in $(cat /dev/shm/nis-map.$4); do IFS=" " key=$(echo "$line" | awk '{print $1}') info=$(echo "$line" | sed -e "s^$key[ \t]*") ipa automountkey-add nis $4 --key="$key" --info="$info" done
注記Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
[root@nis-server ~]# kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sh /root/nis-automounts.sh location nisdomain
[root@nis-server ~]# sh /root/nis-automounts.sh location nisdomain nis-server.example.com map_name
第119章
- 注記
119.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dn: automountmapname=auto.master,cn=default,cn=automount,dc=idm,dc=example,dc=com objectClass: automountMap objectClass: top automountMapName: auto.master
dn: automountmapname=auto.master,cn=default,cn=automount,dc=idm,dc=example,dc=com objectClass: automountMap objectClass: top automountMapName: auto.master
119.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit admin
# kinit admin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa service-add nfs/nfs_server.idm.example.com
# ipa service-add nfs/nfs_server.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-getkeytab -s idm_server.idm.example.com -p nfs/nfs_server.idm.example.com -k /etc/krb5.keytab
# ipa-getkeytab -s idm_server.idm.example.com -p nfs/nfs_server.idm.example.com -k /etc/krb5.keytab
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist -k /etc/krb5.keytab
# klist -k /etc/krb5.keytab Keytab name: FILE:/etc/krb5.keytab KVNO Principal ---- -------------------------------------------------------------------------- 1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM 1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM 1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM 1 nfs/nfs_server.idm.example.com@IDM.EXAMPLE.COM 7 host/nfs_server.idm.example.com@IDM.EXAMPLE.COM 7 host/nfs_server.idm.example.com@IDM.EXAMPLE.COM 7 host/nfs_server.idm.example.com@IDM.EXAMPLE.COM 7 host/nfs_server.idm.example.com@IDM.EXAMPLE.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-client-automount
# ipa-client-automount Searching for IPA server... IPA server: DNS discovery Location: default Continue to configure the system with these values? [no]: yes Configured /etc/idmapd.conf Restarting sssd, waiting for it to become available. Started autofs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /nfs/projects/ 192.0.2.0/24(rw,sec=krb5i)
/nfs/projects/ 192.0.2.0/24(rw,sec=krb5i)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /nfs/projects/ 192.0.2.0/24(rw,sec=krb5:krb5i:krb5p)
/nfs/projects/ 192.0.2.0/24(rw,sec=krb5:krb5i:krb5p)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow exportfs -r
# exportfs -r
119.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa automountlocation-add raleigh
$ ipa automountlocation-add raleigh ---------------------------------- Added automount location "raleigh" ---------------------------------- Location: raleigh
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa automountmap-add raleigh auto.devel
$ ipa automountmap-add raleigh auto.devel -------------------------------- Added automount map "auto.devel" -------------------------------- Map: auto.devel
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa automountkey-add raleigh auto.devel --key='*' --info='-sec=krb5p,vers=4 nfs-server.idm.example.com:/exports/&'
$ ipa automountkey-add raleigh auto.devel --key='*' --info='-sec=krb5p,vers=4 nfs-server.idm.example.com:/exports/&' ----------------------- Added automount key "*" ----------------------- Key: * Mount information: -sec=krb5p,vers=4 nfs-server.idm.example.com:/exports/&
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa automountkey-add raleigh auto.master --key=/devel --info=auto.devel
$ ipa automountkey-add raleigh auto.master --key=/devel --info=auto.devel ---------------------------- Added automount key "/devel" ---------------------------- Key: /devel Mount information: auto.devel
119.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa-client-automount --location raleigh -U
# ipa-client-automount --location raleigh -U
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl stop autofs ; sss_cache -E ; systemctl start autofs
# systemctl stop autofs ; sss_cache -E ; systemctl start autofs
第121章
121.1.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
121.2.
|
|
|
注記
|
|
|
|
|
121.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ldapmodify -D "cn=Directory Manager" -W << EOF
$ ldapmodify -D "cn=Directory Manager" -W << EOF
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dn: cn=config changetype: modify replace: nsslapd-auditlog-logging-enabled nsslapd-auditlog-logging-enabled: on - replace:nsslapd-auditlog nsslapd-auditlog: /var/log/dirsrv/slapd-REALM_NAME/audit - replace:nsslapd-auditlog-mode nsslapd-auditlog-mode: 600 - replace:nsslapd-auditlog-maxlogsize nsslapd-auditlog-maxlogsize: 100 - replace:nsslapd-auditlog-logrotationtime nsslapd-auditlog-logrotationtime: 1 - replace:nsslapd-auditlog-logrotationtimeunit nsslapd-auditlog-logrotationtimeunit: day
dn: cn=config changetype: modify replace: nsslapd-auditlog-logging-enabled nsslapd-auditlog-logging-enabled: on - replace:nsslapd-auditlog nsslapd-auditlog: /var/log/dirsrv/slapd-REALM_NAME/audit - replace:nsslapd-auditlog-mode nsslapd-auditlog-mode: 600 - replace:nsslapd-auditlog-maxlogsize nsslapd-auditlog-maxlogsize: 100 - replace:nsslapd-auditlog-logrotationtime nsslapd-auditlog-logrotationtime: 1 - replace:nsslapd-auditlog-logrotationtimeunit nsslapd-auditlog-logrotationtimeunit: day
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 389-Directory/1.4.3.231 B2021.322.1803 server.idm.example.com:636 (/etc/dirsrv/slapd-IDM-EXAMPLE-COM) time: 20220607102705 dn: cn=config result: 0 changetype: modify replace: nsslapd-auditlog-logging-enabled nsslapd-auditlog-logging-enabled: on [...]
389-Directory/1.4.3.231 B2021.322.1803 server.idm.example.com:636 (/etc/dirsrv/slapd-IDM-EXAMPLE-COM) time: 20220607102705 dn: cn=config result: 0 changetype: modify replace: nsslapd-auditlog-logging-enabled nsslapd-auditlog-logging-enabled: on [...]
modifiersName: ipaanchoruuid=:sid:s-1-5-21-19610888-1443184010-1631745340-279100,cn=default trust view,cn=views,cn=accounts,dc=idma,dc=idm,dc=example,dc=com
$ modifiersName: ipaanchoruuid=:sid:s-1-5-21-19610888-1443184010-1631745340-279100,cn=default trust view,cn=views,cn=accounts,dc=idma,dc=idm,dc=example,dc=com
>>> import pysss_nss_idmap >>> pysss_nss_idmap.getnamebysid('S-1-5-21-1273159419-3736181166-4190138427-500')) {'S-1-5-21-1273159419-3736181166-4190138427-500': {'name': 'administrator@ad.vm', 'type': 3}}
>>> import pysss_nss_idmap
>>> pysss_nss_idmap.getnamebysid('S-1-5-21-1273159419-3736181166-4190138427-500'))
{'S-1-5-21-1273159419-3736181166-4190138427-500': {'name': 'administrator@ad.vm', 'type': 3}}
121.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ldapmodify -x -D "cn=directory manager" -w <password>
$ ldapmodify -x -D "cn=directory manager" -w <password>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow dn: cn=config changetype: modify add: nsslapd-errorlog-level nsslapd-errorlog-level: 8192
dn: cn=config changetype: modify add: nsslapd-errorlog-level nsslapd-errorlog-level: 8192
121.5.
|
|
|
|
|
121.6.
|
|
|
|
|
|
|
|
|
|
|
|
121.7.
|
|
|
|
|
121.8.
|
|
121.9.
|
|
121.10.
第122章
122.1.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow host -t SRV _kerberos._udp.idm.example.com
$ host -t SRV _kerberos._udp.idm.example.com _kerberos._udp.idm.example.com has SRV record 0 100 88 dc.idm.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow kinit idmuser@IDM.EXAMPLE.COM
$ kinit idmuser@IDM.EXAMPLE.COM Password for idmuser@IDM.EXAMPLE.COM:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow https://<dns_name>:9090
https://<dns_name>:9090
122.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow id
$ id euid=548800004(example_user) gid=548800004(example_user) groups=548800004(example_user) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
第123章
123.1.
123.2.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist
$ klist Ticket cache: FILE:/run/user/1894000001/cockpit-session-3692.ccache Default principal: user@IDM.EXAMPLE.COM Valid starting Expires Service principal 07/30/21 09:19:06 07/31/21 09:19:06 HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM 07/30/21 09:19:06 07/31/21 09:19:06 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM for client HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa servicedelegationtarget-add cockpit-target
$ ipa servicedelegationtarget-add cockpit-target
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa servicedelegationtarget-add-member cockpit-target \ --principals=host/remote.idm.example.com@IDM.EXAMPLE.COM
$ ipa servicedelegationtarget-add-member cockpit-target \ --principals=host/remote.idm.example.com@IDM.EXAMPLE.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa servicedelegationrule-add cockpit-delegation
$ ipa servicedelegationrule-add cockpit-delegation
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa servicedelegationrule-add-member cockpit-delegation \ --principals=HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM
$ ipa servicedelegationrule-add-member cockpit-delegation \ --principals=HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa servicedelegationrule-add-target cockpit-delegation \ --servicedelegationtargets=cockpit-target
$ ipa servicedelegationrule-add-target cockpit-delegation \ --servicedelegationtargets=cockpit-target
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl try-restart sshd.service
$ systemctl try-restart sshd.service
123.3.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist
$ klist Ticket cache: FILE:/run/user/1894000001/cockpit-session-3692.ccache Default principal: user@IDM.EXAMPLE.COM Valid starting Expires Service principal 07/30/21 09:19:06 07/31/21 09:19:06 HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM 07/30/21 09:19:06 07/31/21 09:19:06 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM for client HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to create a constrained delegation target hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure servicedelegationtarget web-console-delegation-target is present ipaservicedelegationtarget: ipaadmin_password: "{{ ipaadmin_password }}" name: web-console-delegation-target
--- - name: Playbook to create a constrained delegation target hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure servicedelegationtarget web-console-delegation-target is present ipaservicedelegationtarget: ipaadmin_password: "{{ ipaadmin_password }}" name: web-console-delegation-target
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - name: Ensure servicedelegationtarget web-console-delegation-target member principal host/remote.idm.example.com@IDM.EXAMPLE.COM is present ipaservicedelegationtarget: ipaadmin_password: "{{ ipaadmin_password }}" name: web-console-delegation-target principal: host/remote.idm.example.com@IDM.EXAMPLE.COM action: member
- name: Ensure servicedelegationtarget web-console-delegation-target member principal host/remote.idm.example.com@IDM.EXAMPLE.COM is present ipaservicedelegationtarget: ipaadmin_password: "{{ ipaadmin_password }}" name: web-console-delegation-target principal: host/remote.idm.example.com@IDM.EXAMPLE.COM action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - name: Ensure servicedelegationrule delegation-rule is present ipaservicedelegationrule: ipaadmin_password: "{{ ipaadmin_password }}" name: web-console-delegation-rule
- name: Ensure servicedelegationrule delegation-rule is present ipaservicedelegationrule: ipaadmin_password: "{{ ipaadmin_password }}" name: web-console-delegation-rule
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - name: Ensure the Kerberos principal of the web console client service is added to the servicedelegationrule web-console-delegation-rule ipaservicedelegationrule: ipaadmin_password: "{{ ipaadmin_password }}" name: web-console-delegation-rule principal: HTTP/myhost.idm.example.com action: member
- name: Ensure the Kerberos principal of the web console client service is added to the servicedelegationrule web-console-delegation-rule ipaservicedelegationrule: ipaadmin_password: "{{ ipaadmin_password }}" name: web-console-delegation-rule principal: HTTP/myhost.idm.example.com action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - name: Ensure a constrained delegation rule is associated with a specific delegation target ipaservicedelegationrule: ipaadmin_password: "{{ ipaadmin_password }}" name: web-console-delegation-rule target: web-console-delegation-target action: member
- name: Ensure a constrained delegation rule is associated with a specific delegation target ipaservicedelegationrule: ipaadmin_password: "{{ ipaadmin_password }}" name: web-console-delegation-rule target: web-console-delegation-target action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory web-console-smart-card-ssh.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory web-console-smart-card-ssh.yml
123.4.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist
$ klist Ticket cache: FILE:/run/user/1894000001/cockpit-session-3692.ccache Default principal: user@IDM.EXAMPLE.COM Valid starting Expires Service principal 07/30/21 09:19:06 07/31/21 09:19:06 HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM 07/30/21 09:19:06 07/31/21 09:19:06 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM for client HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa servicedelegationtarget-add cockpit-target
$ ipa servicedelegationtarget-add cockpit-target
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa servicedelegationtarget-add-member cockpit-target \ --principals=host/myhost.idm.example.com@IDM.EXAMPLE.COM
$ ipa servicedelegationtarget-add-member cockpit-target \ --principals=host/myhost.idm.example.com@IDM.EXAMPLE.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa servicedelegationrule-add cockpit-delegation
$ ipa servicedelegationrule-add cockpit-delegation
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa servicedelegationrule-add-member cockpit-delegation \ --principals=HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM
$ ipa servicedelegationrule-add-member cockpit-delegation \ --principals=HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ipa servicedelegationrule-add-target cockpit-delegation \ --servicedelegationtargets=cockpit-target
$ ipa servicedelegationrule-add-target cockpit-delegation \ --servicedelegationtargets=cockpit-target
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [domain/idm.example.com] pam_gssapi_services = sudo, sudo-i
[domain/idm.example.com] pam_gssapi_services = sudo, sudo-i
Copy to Clipboard Copied! Toggle word wrap Toggle overflow auth sufficient pam_sss_gss.so
auth sufficient pam_sss_gss.so
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart sssd
$ systemctl restart sssd
123.5.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow klist
$ klist Ticket cache: FILE:/run/user/1894000001/cockpit-session-3692.ccache Default principal: user@IDM.EXAMPLE.COM Valid starting Expires Service principal 07/30/21 09:19:06 07/31/21 09:19:06 HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM 07/30/21 09:19:06 07/31/21 09:19:06 krbtgt/IDM.EXAMPLE.COM@IDM.EXAMPLE.COM for client HTTP/myhost.idm.example.com@IDM.EXAMPLE.COM
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cd ~/MyPlaybooks/
$ cd ~/MyPlaybooks/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow --- - name: Playbook to create a constrained delegation target hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure servicedelegationtarget named sudo-web-console-delegation-target is present ipaservicedelegationtarget: ipaadmin_password: "{{ ipaadmin_password }}" name: sudo-web-console-delegation-target
--- - name: Playbook to create a constrained delegation target hosts: ipaserver vars_files: - /home/user_name/MyPlaybooks/secret.yml tasks: - name: Ensure servicedelegationtarget named sudo-web-console-delegation-target is present ipaservicedelegationtarget: ipaadmin_password: "{{ ipaadmin_password }}" name: sudo-web-console-delegation-target
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - name: Ensure that a member principal named host/myhost.idm.example.com@IDM.EXAMPLE.COM is present in a service delegation target named sudo-web-console-delegation-target ipaservicedelegationtarget: ipaadmin_password: "{{ ipaadmin_password }}" name: sudo-web-console-delegation-target principal: host/myhost.idm.example.com@IDM.EXAMPLE.COM action: member
- name: Ensure that a member principal named host/myhost.idm.example.com@IDM.EXAMPLE.COM is present in a service delegation target named sudo-web-console-delegation-target ipaservicedelegationtarget: ipaadmin_password: "{{ ipaadmin_password }}" name: sudo-web-console-delegation-target principal: host/myhost.idm.example.com@IDM.EXAMPLE.COM action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - name: Ensure servicedelegationrule named sudo-web-console-delegation-rule is present ipaservicedelegationrule: ipaadmin_password: "{{ ipaadmin_password }}" name: sudo-web-console-delegation-rule
- name: Ensure servicedelegationrule named sudo-web-console-delegation-rule is present ipaservicedelegationrule: ipaadmin_password: "{{ ipaadmin_password }}" name: sudo-web-console-delegation-rule
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - name: Ensure the Kerberos principal of the web console service is added to the service delegation rule named sudo-web-console-delegation-rule ipaservicedelegationrule: ipaadmin_password: "{{ ipaadmin_password }}" name: sudo-web-console-delegation-rule principal: HTTP/myhost.idm.example.com action: member
- name: Ensure the Kerberos principal of the web console service is added to the service delegation rule named sudo-web-console-delegation-rule ipaservicedelegationrule: ipaadmin_password: "{{ ipaadmin_password }}" name: sudo-web-console-delegation-rule principal: HTTP/myhost.idm.example.com action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - name: Ensure a constrained delegation rule is associated with a specific delegation target ipaservicedelegationrule: ipaadmin_password: "{{ ipaadmin_password }}" name: sudo-web-console-delegation-rule target: sudo-web-console-delegation-target action: member
- name: Ensure a constrained delegation rule is associated with a specific delegation target ipaservicedelegationrule: ipaadmin_password: "{{ ipaadmin_password }}" name: sudo-web-console-delegation-rule target: sudo-web-console-delegation-target action: member
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-playbook --vault-password-file=password_file -v -i inventory web-console-smart-card-sudo.yml
$ ansible-playbook --vault-password-file=password_file -v -i inventory web-console-smart-card-sudo.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [domain/idm.example.com] pam_gssapi_services = sudo, sudo-i
[domain/idm.example.com] pam_gssapi_services = sudo, sudo-i
Copy to Clipboard Copied! Toggle word wrap Toggle overflow auth sufficient pam_sss_gss.so
auth sufficient pam_sss_gss.so
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart sssd
$ systemctl restart sssd