login: Add XDG_SESSION_EXTRA_DEVICE_ACCESS variable for additional access

A session created with XDG_SESSION_EXTRA_DEVICE_ACCESS will be granted
additional powers.
Exactly which powers are granted is going to be defined by udevd.
This commit is contained in:
Alessandro Astone
2026-02-06 16:20:18 +01:00
parent 5f815d6fa1
commit 87840e144b
12 changed files with 101 additions and 42 deletions
+5
View File
@@ -1085,3 +1085,8 @@ global:
sd_event_get_exit_on_idle;
sd_varlink_is_connected;
} LIBSYSTEMD_258;
LIBSYSTEMD_260 {
global:
sd_session_has_extra_device_access;
} LIBSYSTEMD_259;
+19
View File
@@ -677,6 +677,25 @@ _public_ int sd_session_is_remote(const char *session) {
return parse_boolean(s);
}
_public_ int sd_session_has_extra_device_access(const char *session) {
_cleanup_free_ char *p = NULL, *s = NULL;
int r;
r = file_of_session(session, &p);
if (r < 0)
return r;
r = parse_env_file(/* f= */ NULL, p, "EXTRA_DEVICE_ACCESS", &s);
if (r == -ENOENT)
return -ENXIO;
if (r < 0)
return r;
if (isempty(s))
return -ENODATA;
return parse_boolean(s);
}
_public_ int sd_session_get_state(const char *session, char **ret_state) {
_cleanup_free_ char *p = NULL, *s = NULL;
int r;