Skip to content

Greeter auth toggles do nothing when greetd's PAM file is only in /usr/lib/pam.d #49

Closed

Description

@maciej-lech

Compositor

Niri

Distribution

Fedora

Select your Installation Method

Distro Packaging

Version

2.1.0

Description

On Fedora 45 and openSUSE Tumbleweed, greetd ships its PAM stack only as a vendor file in /usr/lib/pam.d/greetd. The greeter auth sync only works on /etc/pam.d/greetd: when that file is missing, it logs a line and returns, so the fingerprint and security key toggles do nothing.

if _, err := deps.stat(deps.greetdPath); err != nil {
if os.IsNotExist(err) {
logFunc("ℹ /etc/pam.d/greetd not found. Skipping greeter PAM sync.")
return nil
}
return fmt.Errorf("failed to inspect %s: %w", deps.greetdPath, err)
}

Right now this is hidden by the packaging, because the dux-greeter %post writes its own minimal /etc/pam.d/greetd whenever the file is missing (duxlabs-dev/dux-repo#15). Once %post stops shadowing greetd's vendor file, the toggles will skip on every distro that uses /usr/lib/pam.d.

Suggested fix: when /etc/pam.d/greetd is missing but /usr/lib/pam.d/greetd exists, copy the vendor file to /etc/pam.d/greetd and insert the managed block into that copy. This is the usual way to override a vendor PAM file. It keeps greetd's full stack (pam_oo7, pam_gnome_keyring, pam_sepermit, pam_namespace), which the minimal template does not. RemoveManagedGreeterPamBlock could then delete /etc/pam.d/greetd if, after stripping the block, it matches the vendor file again, so turning the toggles off hands control back to greetd's package.

Expected Behavior

Turning on the greeter fingerprint or security key toggle adds the auth block on top of greetd's own PAM stack, also when that stack lives in /usr/lib/pam.d.

Steps to Reproduce

  1. On Fedora 45, install greetd and dux-greeter, then rm /etc/pam.d/greetd (or fix the %post as in the dux-repo issue), so only /usr/lib/pam.d/greetd remains
  2. Turn on the greeter fingerprint toggle in Dux Shell settings
  3. Run dms greeter sync

Error Messages/Logs

ℹ /etc/pam.d/greetd not found. Skipping greeter PAM sync.

Activity

  1. maciej-lech commented on Nov 4, 2026

    @maciej-lech
    Author

    The greeter UI has the same blind spot. It reads only /etc/pam.d/greetd to work out which external auth the stack offers:

    FileView {
    id: greetdPamWatcher
    path: "/etc/pam.d/greetd"
    printErrors: false
    onLoaded: {
    root.greetdPamText = text();
    root.refreshPasswordAttemptPolicyHint();
    root.maybeAutoStartExternalAuth();
    }
    onLoadFailed: {
    root.greetdPamText = "";
    root.refreshPasswordAttemptPolicyHint();
    }
    }

    With only /usr/lib/pam.d/greetd present, greetdPamText stays empty and greeterPamStackHasModule() never follows the system-auth include. So on Fedora 45 with authselect with-fingerprint, the greeter does not offer or auto-start fingerprint auth, although pam_fprintd runs as part of the stack (auth substack system-auth).

    PAM looks up a service in /etc/pam.d first and falls back to /usr/lib/pam.d. Using the same fallback for the greetd watcher, and for the included stacks next to it, would cover this. Until then, we copy /usr/lib/pam.d/greetd to /etc/pam.d/greetd in our image.

  2. self-assigned this
    on Nov 4, 2026
  3. purian23 commented on Nov 4, 2026

    @purian23
    Member

    Thanks for the report, I hadn't updated to F45 yet since we pushed DMS 2.1 today. I'll check these out to get fixed up.

  4. maciej-lech commented on Nov 4, 2026

    @maciej-lech
    Author

    Thank you @purian23. Yes, it is GA since yesterday :) It happens I stumbled across this issue working on my own OS upgrade for F45.

    I received popup for DMS2.1 today, exited to check what new is there as always. Great work!

  5. added a commit that references this issue on Nov 6, 2026
    1ab4067
  6. purian23 commented on Nov 6, 2026

    @purian23
    Member

    This should be good to go on dux-greeter-git and likely tomorrow on the stable version, thanks for the report!

  7. added a commit that references this issue on Nov 6, 2026
    e75a955
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Fields

Ricrac

https://ricrac.app/dux/issue/DUX-786

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions