Translated message

A translation of this page exists in English.

Warning message

This translation is outdated. For the most up-to-date information, please refer to the English version.

PolicyKit が起動せず、polkit.service: main process exited, code=exited, status=1/FAILURE エラーが発生する

Solution Verified - Updated -

Environment

  • Red Hat Enterprise Linux 7

Issue

  • dbus でコマンドが失敗するか (10 分後に) タイムアウトになり、以下のような polkit / PolicyKit エラーが発生します。

    dbus-daemon: dbus[996]:[system] Activating via systemd: service name='org.freedesktop.PolicyKit1' unit='polkit.service'
    dbus[996]:[system] Activating via systemd: service name='org.freedesktop.PolicyKit1' unit='polkit.service'
    systemd:Starting Authorization Manager...
    systemd: polkit.service: main process exited, code=exited, status=1/FAILURE
    systemd:Failed to start Authorization Manager.
    systemd:Unit polkit.service entered failed state.
    dbus-daemon: dbus[996]:[system] Failed to activate service 'org.freedesktop.PolicyKit1': timed out
    dbus[996]:[system] Failed to activate service 'org.freedesktop.PolicyKit1': timed out
    

Resolution

  1. polkitd システムユーザーとグループが存在することを確認します。
    確認のために、以下の 2 つの複合コマンドを root の端末にコピーアンドペーストし、ユーザーおよびグループを条件付きで作成します。

    getent group polkitd >/dev/null && echo -e "\e[1;32mpolkitd group already exists\e[0m" || { groupadd -r polkitd && echo -e "\e[1;33mAdded missing polkitd group\e[0m" || echo -e "\e[1;31mAdding polkitd group FAILED\e[0m"; }
    getent passwd polkitd >/dev/null && echo -e "\e[1;32mpolkitd user already exists\e[0m" || { useradd -r -g polkitd -d / -s /sbin/nologin -c "User for polkitd" polkitd && echo -e "\e[1;33mAdded missing polkitd user\e[0m" || echo -e "\e[1;31mAdding polkitd user FAILED\e[0m"; }
    
  2. polkit パッケージと polkit-pkla-compat パッケージが提供するすべてのファイルのユーザーおよびグループの所有者と、アクセス権を再設定します。
    確認のために、以下の複合コマンドを root の端末にコピーアンドペーストし、ユーザーおよびグループのアクセス権と所有者を条件付きで作成します。

    rpm -Va polkit\* && echo -e "\e[1;32mpolkit* rpm verification passed\e[0m" || { echo -e "\e[1;33mResetting polkit* rpm user/group ownership & perms\e[0m"; rpm --setugids polkit polkit-pkla-compat; rpm --setperms polkit polkit-pkla-compat; }
    
  3. 失敗したユニットの一覧を取得します。
    ここでは、通常、わずかな数しか確認できません (一般的なものはたとえば rngdrhnsd)

    systemctl --failed
    
  4. dbus.service を再起動します。

    systemctl restart dbus
    
  5. 失敗したユニットの一覧を再確認し、表示されている新しいエントリーを再起動します。
    おそらく、firewalld.servicetuned.service がそのエントリーになります。
    失敗したと表示されたすべてを再起動しても問題はありません。

    systemctl --failed
    systemctl restart firewalld tuned
    
  6. 問題が続く場合はサポートケースを作成します。

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Comments