Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

A.2. SSSD および sudo Debugging Logs を使用した sudo のトラブルシューティング

A.2.1. SSSD および sudo デバッグロギング

デバッグロギング機能により、SSSD および sudo に関する追加情報を記録できます。

sudo デバッグログファイル

sudo デバッグを有効にするには、以下の手順に従います。
  1. 以下の行を /etc/sudo.conf に追加します。
    Debug sudo /var/log/sudo_debug.log all@debug
    Debug sudoers.so /var/log/sudo_debug.log all@debug
  2. デバッグするユーザーとして sudo コマンドを実行します。
/var/log/sudo_debug.log ファイルが自動的に作成され、以下のような質問に答える詳細な情報を提供します。
  • sudo コマンドの実行時にユーザーと環境についてどのような情報がありますか。
    sudo[22259] settings: debug_flags=all@debug
    sudo[22259] settings: run_shell=true
    sudo[22259] settings: progname=sudo
    sudo[22259] settings: network_addrs=192.0.2.1/255.255.255.0 fe80::250:56ff:feb9:7d6/ffff:ffff:ffff:ffff::
    sudo[22259] user_info: user=user_name
    sudo[22259] user_info: pid=22259
    sudo[22259] user_info: ppid=22172
    sudo[22259] user_info: pgid=22259
    sudo[22259] user_info: tcpgid=22259
    sudo[22259] user_info: sid=22172
    sudo[22259] user_info: uid=10000
    sudo[22259] user_info: euid=0
    sudo[22259] user_info: gid=554801393
    sudo[22259] user_info: egid=554801393
    sudo[22259] user_info: groups=498,6004,6005,7001,106501,554800513,554801107,554801108,554801393,554801503,554802131,554802244,554807670
    sudo[22259] user_info: cwd=/
    sudo[22259] user_info: tty=/dev/pts/1
    sudo[22259] user_info: host=client
    sudo[22259] user_info: lines=31
    sudo[22259] user_info: cols=237
  • sudo ルールの取得に使用されるデータソース。
    sudo[22259] <- sudo_parseln @ ./fileops.c:178 := sudoers: files sss
  • SSSD プラグインは以下の行で始まります。
    sudo[22259] <- sudo_sss_open @ ./sssd.c:305 := 0
  • SSSD が返すルールの数
    sudo[22259] Received 3 rule(s)
  • ルールが一致しているかどうか。
    sudo[22259] sssd/ldap sudoHost 'ALL' ... MATCH!
    sudo[22259] <- user_in_group @ ./pwutil.c:1010 := false

SSSD デバッグログファイル

SSSD デバッグを有効にするには、以下を実行します。
  1. /etc/sssd/sssd.conf ファイルの [sudo] および [domain/domain_name] セクションに debug_level オプションを追加します。
    [domain/domain_name]
    debug_level = 0x3ff0
    ...
    [sudo]
    debug_level = 0x3ff0
  2. SSSD を再起動します。
    # systemctl restart sssd
  3. sudo コマンドを実行して、デバッグ情報をログファイルに書き込みます。
以下のログファイルが作成されます。
ドメインログファイル: /var/log/sssd/sssd_domain_name.log
このログファイルは、以下のような質問に回答するのに役立ちます。
  • SSSD が返すルールの数
    [sdap_sudo_refresh_load_done] (0x0400): Received 4-rules rules
  • SSSD はサーバーからどの sudo ルールをダウンロードしましたか。
    [sssd[be[LDAP.PB]]] [sysdb_save_sudorule] (0x0400): Adding sudo rule demo-name
  • マッチングルールはキャッシュに保存されますか。
    [sdap_sudo_refresh_load_done] (0x0400): Sudoers is successfully stored in cache
  • サーバーからルールをダウンロードするために使用されたのはどのフィルターですか。
    [sdap_get_generic_ext_step] (0x0400): calling ldap_search_ext with [(&(objectClass=sudoRole)(|(!(sudoHost=*))(sudoHost=ALL)(sudoHost=client.example.com)(sudoHost=client)(sudoHost=192.0.2.1)(sudoHost=192.0.2.0/24)(sudoHost=2620:52:0:224e:21a:4aff:fe23:1394)(sudoHost=2620:52:0:224e::/64)(sudoHost=fe80::21a:4aff:fe23:1394)(sudoHost=fe80::/64)(sudoHost=+*)(|(sudoHost=*\\*)(sudoHost=*?*)(sudoHost=*\2A*)(sudoHost=*[*]*))))][dc=example,dc=com]
    このフィルターを使用して、IdM データベースのルールを検索します。
    # ldapsearch -x -D "cn=Directory Manager" -W -H ldap://server.example.com -b dc=example,dc=com '(&(objectClass=sudoRole)...)'
sudo レスポンダーログファイル: /var/log/sssd/sssd_sudo.log
このログファイルは、以下のような質問に回答するのに役立ちます。
  • SSSD が返すルールの数
    [sssd[sudo]] [sudosrv_get_sudorules_from_cache] (0x0400): Returning 4-rules rules for [user@idm.example.com]
  • SSSD のキャッシュの検索に適用されたフィルター。
    [sudosrv_get_sudorules_query_cache] (0x0200): Searching sysdb with [(&(objectClass=sudoRule)(|(sudoUser=ALL)(sudoUser=user)(sudoUser=#10001)(sudoUser=%group-1)(sudoUser=%user)(sudoUser=+*)))]
  • SSSD キャッシュから返されるルールを検索するにはどうすればいいですか。以下のフィルターを使用してルールを検索します。
    # ldbsearch -H /var/lib/sss/db/cache_domain_name.ldb -b cn=sysdb '(&(objectClass=sudoRule)...)'
    注記
    ldbsearch ユーティリティーは、ldb-tools パッケージに含まれています。