Skip to content

Commit b1d4ff7

Browse files
committed
core: link user session keyring to session keyring
Commit 74dd6b5 (core: run each system service with a fresh session keyring) broke adding keys to default keyrings. Added keys could not be accessed with error message: keyctl_read_alloc: Permission denied Commit 437a851 (core: link user keyring to session keyring (systemd#6275)) fixed this for the user keyring. Link the user session keyring as well.
1 parent 1a680ae commit b1d4ff7

1 file changed

Lines changed: 7 additions & 2 deletions

File tree

src/core/execute.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2100,12 +2100,17 @@ static int setup_keyring(Unit *u, const ExecParameters *p, uid_t uid, gid_t gid)
21002100
}
21012101

21022102
/* Having our own session keyring is nice, but results in keys added
2103-
* to the user keyring being inaccessible with permission denied.
2104-
* So link the user keyring to our session keyring. */
2103+
* to the user and user session keyring being inaccessible with
2104+
* permission denied.
2105+
* So link the keyrings to our session keyring. */
21052106
if (keyctl(KEYCTL_LINK,
21062107
KEY_SPEC_USER_KEYRING,
21072108
keyring, 0, 0) < 0)
21082109
return log_debug_errno(errno, "Failed to link user keyring to session keyring.");
2110+
if (keyctl(KEYCTL_LINK,
2111+
KEY_SPEC_USER_SESSION_KEYRING,
2112+
keyring, 0, 0) < 0)
2113+
return log_debug_errno(errno, "Failed to link user session keyring to session keyring.");
21092114

21102115
/* Populate they keyring with the invocation ID by default. */
21112116
if (!sd_id128_is_null(u->invocation_id)) {

0 commit comments

Comments
 (0)