Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sessions monitor should watch only changes in sessions #445

Merged
merged 1 commit into from
Apr 24, 2024

Conversation

jrybar-rh
Copy link
Member

@jrybar-rh jrybar-rh commented Apr 22, 2024

Summary

Currently, the polkitbackendsessionmonitor watches all notifications from sd-login-monitor. This causes waking polkit even four+ times on every login/logout and starting a train of action re-verification several times for each instantiated PolkitAuthority (e.g. applets on gnome-shell panel that utilize PolkitPermission).
This is not necessary, because polkit only needs to watch for sessions that change status from active to online and vice-versa (to maintain security for actions that have is_active defined). This still doesn't resolve the problem completely, but at least halves the impact on system resources.

Detailed description and/or reproducer

On a gnome-shell-fitted system, set dbus-monitor to listen on PolicyKit1.Authority interface and watch the flood on login/logout (e.g. via ssh):
"# dbus-monitor --system "interface=org.freedesktop.PolicyKit1.Authority"

On each signal from logind (uids, seats, sessions,...), polkitbackend sends "Changed" over dbus. The signal is caught by every PolkitAuthority instance and triggers authorization re-check by sending "CheckAuthorization" back to polkitbackend.

Currently, the polkitbackendsessionmonitor watches all notifications from
sd-login-monitor. This causes waking polkit even four+ times on every
login/logout and starting a train of action re-verification several
times for each instantiated PolkitAuthority (e.g. applets on gnome-shell
panel that utilize PolkitPermission).
This is not necessary, because polkit only needs to watch for sessions
that change status from active to online and vice-versa (to maintain
security for actions that have is_active defined).
This still doesn't resolve the problem completely, but at least halves
the impact on system resources.
@jrybar-rh jrybar-rh merged commit fe7ee72 into polkit-org:main Apr 24, 2024
12 of 13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants