Bug#1051785: gdm3 won't allow logins when a smartcard/yubikey is plugged
Simon McVittie
smcv at debian.org
Thu Jul 10 14:12:20 BST 2025
Control: tags -1 + moreinfo
On Thu, 12 Jun 2025 at 15:40:04 +0100, Simon McVittie wrote:
>the default configuration of gdm is such
>that, if a user has a smart card (e.g. Yubikey) plugged in, but *has
>not* enrolled it for smartcard authentication, then gdm doesn't work
>as intended for ordinary username/password authentication. This seems
>bad.
I tried to reproduce similar problems in a default installation, with a
Nitrokey Pro: I don't have a Yubikey, but I assume they're similar
enough to make little difference.
Test scenarios
==============
Scenario 1: default GNOME
-------------------------
* boot from Debian trixie rc2 netinst
* fresh installation onto a laptop
* enable the GNOME and sshd tasks during installation
* plug in my Nitrokey Pro
(which contains GPG signing/auth/encryption keys, if it matters)
* reboot
* expected result: list of users, click to select
Works for me (behaviour is the same as without the Nitrokey plugged in).
Scenario 2: pcscd only
----------------------
Same as scenario 1, but install pcscd (with Recommends) before rebooting.
Works for me (behaviour is the same as without the Nitrokey plugged in).
Scenario 3: install opensc
--------------------------
If I install opensc in addition to pcscd, then I can reproduce what I
think is the symptom that was described by "C" <flyingstar16 at gmail.com>:
* Debian trixie rc2 netinst
* a typical installation with GNOME (and sshd)
* sudo apt install opensc (Recommends are enabled)
* plug in Nitrokey Pro
* reboot
* activity LED lights up on my Nitrokey
* user list is replaced by a username input box, enter username
* password box has a message below it:
"SSSD PAM module is not installed, Smart card
authentication is not supported, falling back to default
mechanism"
* I can still log in successfully by entering the test user's password
This is not necessarily ideal - it's a little bit more difficult to log
in if I happen to have my smart card plugged in - but it works.
Scenario 4: install opensc and libpam-sss
-----------------------------------------
* Debian trixie rc2 netinst
* a typical installation with GNOME (and sshd)
* sudo apt install opensc libpam-sss (Recommends are enabled)
* plug in Nitrokey Pro
* reboot
* activity LED lights up on my Nitrokey
* user list is replaced by a username input box, enter username
* password box is populated with a message
"Please (re)insert (different) Smar..."
* Below the password box I see a message
"Please (re)insert (different) Smartcard"
* Typing the test user's password into the password box **DOES NOT**
log in successfully
This is the only test scenario I've tried that is actually a
showstopper.
Your scenario here
------------------
If you have identified a different failing scenario that does not match
any of the ones I described above, please describe it with a similar
level of detail. If you have access to a spare laptop, it would be very
helpful if you can reproduce it by starting from a fresh trixie install
(use tasksel tasks and add the necessary packages to reproduce the
problem).
Workarounds and possible solutions
==================================
enable-smartcard-authentication=false
-------------------------------------
Edit /etc/gdm3/greeter.dconf-defaults, locate the header
"[org/gnome/login-screen]" and fill in
"enable-smartcard-authentication=false" below it, so it looks something
like this:
...
[org/gnome/login-screen]
enable-smartcard-authentication=false
logo='/usr/share/images/vendor-logos/logo-text-version-64.png'
Users can do this edit as a workaround.
This is the brute-force approach that makes sure password authentication
definitely always works as expected, at the cost of completely disabling
smartcard support.
I have confirmed that this fixes my Scenario 4 (I can log in), and
improves convenience in Scenario 3 (I get a list of users to click on,
and I don't have to type my username).
The GNOME team could change gdm3 to make this the default configuration.
If we do, the cost is that sysadmins who want to enrol smart cards to be
used for authentication will need to revert that change locally at the
same time.
If we decide not to do this, then I think we should add
enable-smartcard-authentication=false to the default
/etc/gdm3/greeter.dconf-defaults, commented out, so that it's easily
available at a glance for sysadmins.
Use gdm-smartcard-sssd-or-password by default
---------------------------------------------
/etc/pam.d/gdm-smartcard is a symlink to
/etc/alternatives/gdm-smartcard, which currently points to
/etc/pam.d/gdm-smartcard-sssd-exclusive by default.
As a workaround, users can run:
sudo update-alternatives --config gdm-smartcard
and choose the /etc/pam.d/gdm-smartcard-sssd-or-password option.
I have verified that this is enough to be able to log in in Scenario 4,
making it behave more like Scenario 3.
The GNOME team could change gdm3 to swap the alternatives priority of
/etc/pam.d/gdm-smartcard-sssd-exclusive (currently 50) and
/etc/pam.d/gdm-smartcard-sssd-or-password (currently 40) so that the
latter becomes the new default. If we do, the cost is that sysadmins who
want to forbid password authentication will have to adjust the
alternatives to use /etc/pam.d/gdm-smartcard-sssd-exclusive (or
/etc/pam.d/gdm-smartcard-pkcs11-exclusive) instead.
If I understand correctly, this is the option that Marco would prefer?
A disadvantage of this approach is that it makes Scenario 4 behave like
Scenario 3: if a smart card is plugged in, you don't get a list of users
to click on, and instead you have to type your username.
Both of the above
-----------------
The GNOME team could consider disabling smart card auth by default,
*and* making sssd-or-password the default implementation of smart card
auth if it is enabled.
I don't think this makes sense as a workaround for local sysadmins (one
is enough) but I think it's worth considering as a solution.
Set PCSCLITE_FILTER_IGNORE_READER_NAMES
---------------------------------------
If you only want to use your smart card for GPG and not for other
use-cases such as X.509, you can edit /etc/default/pcscd and add
something like:
PCSCLITE_FILTER_IGNORE_READER_NAMES="Nitrokey"
as per
<https://web.archive.org/web/20231002205728/blog.apdu.fr/posts/2021/08/pcsc-lite-configuration-using/>
and
<https://web.archive.org/web/20230924201853/https://blog.apdu.fr/posts/2015/12/remove-andor-customize-pcsc-reader-names/>.
(Or you could uninstall opensc and pcscd completely.)
This is a workaround that can be used by individual sysadmins, but is
not a solution that can be applied by the GNOME team more generally (we
can't know what you want to use your smartcard for, and it
involves editing other packages' conffiles, which is not allowed).
Something involving gdm-auth-config
-----------------------------------
Marco wrote:
> In debian we actually have the `gdm-auth-config` that should allow to
> manage this without having to handle this, it also allows to use distro
> scripts (I did put one in our gdm's debian/* folder) that should handle
> things, but it may need tunings since my testing was quite in the past
> compared to when it landed upstream.
But I don't know what this would mean, specifically, so I cannot
implement it. If this is the solution that would be preferred then
someone else will have to implement it.
Older reports
=============
Looking back at older reports:
The original bug report was that Paul Tagliamonte reported that in
45~beta-1, attempting to log in with username and password failed.
<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1051785#5>
Paul's setup appears to be my Scenario 3 (opensc but no libpam-sss) and
I could not reproduce the reported problem in this scenario. I think
this may have been fixed by "Always fallback to password auth if no SC
pam module is installed" in 45.0.1-1, at which point the bug should
perhaps ideally have been closed.
Raphael Hertzog similarly reported that in 45~beta-1, attempting to log
in with username and password, without installing libpam-sss, failed.
<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1051785#20>
Again this looks like my Scenario 3 and I think it was fixed in
45.0.1-1.
Raphael also reported in
<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1051785#20> that by
additionally installing libpam-sss, he got a different error message. I
think this is my Scenario 4. Raphael, please could you confirm this
guess, or if my guess is wrong, clarify what your test scenario is and
what its result is? Strictly speaking this should perhaps have been a
different bug report, because it's a different scenario with different
expectations.
Harlan Lieberman-Berg said "I've gotten bitten by this one too" but it
is not clear which packages they have installed or which precise symptom
they saw as a result.
<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1051785#30>
C <flyingstar16 at gmail.com> reported what appears to be my Scenario 3,
with what appear to be the same results I observed.
<https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1051785#47>
Luca Boccassi reports that after GNOME 46, "this actually breaks login
completely - after typing the password, the greeter is just stuck
there", but it isn't clear to me what combination of packages "this"
refers to. He also confirms that enable-smartcard-authentication=false
successfully disables smart card
auth. <https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1051785#67>
I *think* this is my Scenario 4: Luca, please could you confirm or
clarify?
Thanks,
smcv
More information about the pkg-gnome-maintainers
mailing list