Bug#1035061: gnome-keyring: prevents chrome/chromium from running on a new account's first run
Arnaud Rebillout
arnaudr at kali.org
Wed Nov 29 18:04:49 GMT 2023
I can confirm that the bug also impact Kali Linux (which is a rolling
distro based on Debian testing).
I tested the XFCE desktop (x11), and GNOME desktop (both x11 and
wayland). A reboot is enough to fix the issue.
Here's how it looks like on the bus for the first boot:
$ gdbus introspect --session -d org.freedesktop.secrets \
-o /org/freedesktop/secrets/collection --recurse | grep node
node /org/freedesktop/secrets/collection {
node /org/freedesktop/secrets/collection/session {
And now on the second boot:
$ gdbus introspect --session -d org.freedesktop.secrets \
-o /org/freedesktop/secrets/collection --recurse | grep node
node /org/freedesktop/secrets/collection {
node /org/freedesktop/secrets/collection/session {
node /org/freedesktop/secrets/collection/login {
It confirms what was said above: collection/login is not published on
the bus during first boot.
I enabled G_MESSAGES_DEBUG=all for the gnome-keyring-daemon, and we can
see the difference.
Here's first boot:
Nov 29 03:35:52 kali gnome-keyring-d[758]: Using cross-namespace
EXTERNAL authentication (this will deadlock if server is GDBus < 2.73.3)
Nov 29 03:35:52 kali gnome-keyring-d[758]: couldn't set environment
variable in session:
GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name
org.gnome.SessionManager was not provided by any .service files
Nov 29 03:35:52 kali gnome-keyring-d[758]: keyring alias directory:
/home/kali/.local/share/keyrings
Nov 29 03:35:52 kali gnome-keyring-d[758]: closing prompt
Nov 29 03:35:52 kali gnome-keyring-d[758]: matching: (1) [ { CKA_CLASS =
0xC74E4DB3 } ]
Nov 29 03:35:52 kali gnome-keyring-d[758]: matching: (2) [ { CKA_CLASS =
CKO_SECRET_KEY }, { CKA_0xC74E4E1B = (7) NOT-PRINTED } ]
Nov 29 03:35:52 kali gnome-keyring-d[758]: initialization complete
Nov 29 03:35:52 kali gnome-keyring-d[758]: matching: (3) [ { CKA_CLASS =
0xC74E4DB3 }, { CKA_TOKEN = (1) "\x01" }, { CKA_ID = (5) "login" } ]
Nov 29 03:35:52 kali gnome-keyring-d[758]: gkm_store_get_attribute:
CKR_ATTRIBUTE_TYPE_INVALID: CKA_ID not in schema
Nov 29 03:35:52 kali gnome-keyring-d[758]:
gkm_object_real_get_attribute: CKR_ATTRIBUTE_TYPE_INVALID: no CKA_ID
attribute
Nov 29 03:35:52 kali gnome-keyring-d[758]: created object: (4) [ {
CKA_CLASS = 0xC74E4DA9 }, { CKA_VALUE = (4) NOT-PRINTED }, {
CKA_0xC74E4E0E = (1) NOT-PRINTED }, { CKA_TOKEN = (1) "\x01" } ]
Nov 29 03:35:52 kali gnome-keyring-d[758]: created object: (5) [ {
CKA_CLASS = 0xC74E4DB3 }, { CKA_ID = (5) "login" }, { CKA_0xC74E4E11 =
(8) NOT-PRINTED }, { CKA_TOKEN = (1) "\x01" }, { CKA_LABEL = (5)
"Login" } ]
Nov 29 03:35:52 kali gnome-keyring-d[758]: refresh_with_login:
refreshing: /home/kali/.local/share/keyrings/user.keystore
Nov 29 03:35:52 kali gnome-keyring-d[758]: refresh_with_login: closing:
/home/kali/.local/share/keyrings/user.keystore
Nov 29 03:35:52 kali gnome-keyring-d[758]: begin_lock_file: modifying:
/home/kali/.local/share/keyrings/user.keystore
Nov 29 03:35:52 kali gnome-keyring-d[758]: complete_lock_file: closing:
/home/kali/.local/share/keyrings/user.keystore
Now second boot:
Nov 29 03:40:18 kali gnome-keyring-d[751]: Using cross-namespace
EXTERNAL authentication (this will deadlock if server is GDBus < 2.73.3)
Nov 29 03:40:18 kali gnome-keyring-d[751]: couldn't set environment
variable in session:
GDBus.Error:org.freedesktop.DBus.Error.ServiceUnknown: The name
org.gnome.SessionManager was not provided by any .service files
Nov 29 03:40:18 kali gnome-keyring-d[751]: keyring alias directory:
/home/kali/.local/share/keyrings
Nov 29 03:40:18 kali gnome-keyring-d[751]: closing prompt
Nov 29 03:40:18 kali gnome-keyring-d[751]: matching: (1) [ { CKA_CLASS =
0xC74E4DB3 } ]
Nov 29 03:40:18 kali gnome-keyring-d[751]: matching: (2) [ { CKA_CLASS =
CKO_SECRET_KEY }, { CKA_0xC74E4E1B = (7) NOT-PRINTED } ]
Nov 29 03:40:18 kali gnome-keyring-d[751]: matching: (2) [ { CKA_CLASS =
CKO_SECRET_KEY }, { CKA_0xC74E4E1B = (5) NOT-PRINTED } ]
Nov 29 03:40:18 kali gnome-keyring-d[751]: initialization complete
Nov 29 03:40:18 kali gnome-keyring-d[751]: matching: (3) [ { CKA_CLASS =
0xC74E4DB3 }, { CKA_TOKEN = (1) "\x01" }, { CKA_ID = (5) "login" } ]
Nov 29 03:40:18 kali gnome-keyring-d[751]: gkm_store_get_attribute:
CKR_ATTRIBUTE_TYPE_INVALID: CKA_ID not in schema
Nov 29 03:40:18 kali gnome-keyring-d[751]:
gkm_object_real_get_attribute: CKR_ATTRIBUTE_TYPE_INVALID: no CKA_ID
attribute
Nov 29 03:40:18 kali gnome-keyring-d[751]: created object: (5) [ {
CKA_CLASS = 0xC74E4DA9 }, { CKA_VALUE = (4) NOT-PRINTED }, {
CKA_0xC74E4E0E = (1) NOT-PRINTED }, { CKA_TOKEN = (1) "\x01" }, {
CKA_0xC74E4E0F = (8) NOT-PRINTED } ]
Nov 29 03:40:18 kali gnome-keyring-d[751]: refresh_with_login:
refreshing: /home/kali/.local/share/keyrings/user.keystore
Nov 29 03:40:18 kali gnome-keyring-d[751]: refresh_with_login: closing:
/home/kali/.local/share/keyrings/user.keystore
We can see that there's one more created object on first boot, with a
label of "Login".
So it looks to me that, on first boot, the gnome-keyring-daemon creates
the login keyring, however the change is not published on the bus. And
after looking at the code a few hours, it doesn't look like there's a
one-line fix, rather it looks like the scenario of updating the
collections on the bus is not supported (my reading of the code, might
be wrong).
One additional detail: you'd think that a restart of
gnome-keyring-daemon is enough to fix it, but not exactly. If I restart
it (via systemd --user), and then I start chromium, GNOME prompts me for
my password, saying "The login keyring did not get unlocked when you
logged into your computer". However I can just click cancel, and then
chromium proceeds and starts successfully.
--
Arnaud Rebillout / OffSec / Kali Linux Developer
More information about the pkg-gnome-maintainers
mailing list