Linux
管理系統服務或單元需要身份驗證。
每當嘗試以普通使用者身份停止/啟動守護程序時,我都會遇到一個奇怪的問題,它要求使用另一個普通使用者的憑據進行身份驗證 - 例如:
[bob@server ~]$ systemctl stop some-daemon.service ==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units === Authentication is required to manage system services or units. Authenticating as: alice Password:
為什麼在bob登錄時要求alice進行身份驗證,我該如何解決這個問題?
您的系統正在使用
polkit
授權管理器並且消息來自文件/usr/share/polkit-1/actions/org.freedesktop.systemd1.policy
。polkit
可以在/etc/polkit-1
and/usr/share/polkit-1
目錄中配置,更具體地說是在rules.d
andactions
子目錄中。有關更多資訊,請參閱Polkit 手冊頁。簡而言之,正在進行的呼叫正在接收以管理員身份進行身份驗證的響應(手冊頁中的 auth_admin, auth_admin_keep )。
在 CentOS 7 中,該
/etc/polkit-1/rules.d/50-default.rules
文件指定了一個addAdminRule定義,該定義返回 wheel 組中的使用者以進行身份驗證。輪組中的所有使用者都將顯示為使用者,以便在需要身份驗證時進行選擇。如果 Alice 是 wheel 組中的唯一使用者,這將根據規則自動顯示 Alice。假設 Alice 不在 wheel 組中,這表明規則文件路徑中會有一些 addAdminRule 的其他定義,允許 Alice 以管理員身份出現,以在請求返回 AUTH_ADMIN/AUTH_ADMIN_KEEP 響應時進行身份驗證。