feat: handle PAM password policy changes
This commit is contained in:
@@ -8,6 +8,7 @@ Latchd is written in Rust. The old Go prototype is kept in `legacy/go/` for refe
|
||||
|
||||
- Finds normal login accounts through NSS.
|
||||
- Shows password, account-expiry, locked-account, and faillock status without replacing PAM's decision.
|
||||
- Runs PAM password changes for accounts that require a new password before login.
|
||||
- Lets you switch users and sessions without leaving the login screen.
|
||||
- Finds X11 and Wayland desktop entries and can include a TTY shell.
|
||||
- Starts sessions with a cleared, explicit environment and drops privileges before running the user process.
|
||||
@@ -89,7 +90,7 @@ Configuration files used by a real root service must be root-owned and not writa
|
||||
| Ctrl-N / Ctrl-P | Select the next or previous account |
|
||||
| Ctrl-B | Toggle wallpaper and ambient effects |
|
||||
| Ctrl-M | Toggle reduced motion |
|
||||
| Enter | Authenticate from the password field |
|
||||
| Enter | Authenticate, or submit a PAM password change when requested |
|
||||
| Esc | Clear the password or close a popup |
|
||||
| `?` | Show keyboard help |
|
||||
| Ctrl-C | Restore the terminal and quit |
|
||||
@@ -115,6 +116,8 @@ make system-e2e
|
||||
|
||||
- PAM handles stay on one worker thread.
|
||||
- Password buffers are zeroized and never placed in argv, logs, or the TUI.
|
||||
- Security audit events contain only the account name and stable outcome/reason
|
||||
fields; PAM's free-form error text and password material are not logged.
|
||||
- Session environments are rebuilt from an allowlist.
|
||||
- Desktop files, scripts, binaries, homes, logs, and configuration sources are checked before use.
|
||||
- Xauthority files and session logs use private permissions and cleanup guards.
|
||||
@@ -125,7 +128,7 @@ make system-e2e
|
||||
|
||||
```text
|
||||
crates/latchd-core/ configuration, account discovery, sessions, UTMPX
|
||||
crates/latchd-auth/ PAM FFI and the authentication worker
|
||||
crates/latchd-auth/ PAM FFI, password changes, and the authentication worker
|
||||
crates/latchd-tui/ Ratatui state, rendering, filtering, and effects
|
||||
rust/main.rs command-line entry point and service orchestration
|
||||
extra/ example configuration, PAM policy, and systemd unit
|
||||
|
||||
Reference in New Issue
Block a user