mirror of
https://github.com/uutils/shadow.git
synced 2026-06-10 16:14:57 -07:00
7cc7c463cb6a1cb2a95d886ea6320e75e435d38e
Full drop-in replacement for GNU passwd administrative operations: - Status display (-S, -Sa) with correct L/NP/P output format - Lock (-l): prepend ! to shadow password hash - Unlock (-u): remove leading ! with safety checks - Delete (-d): set password to empty (passwordless account) - Expire (-e): set last_change to 0 (force change at next login) - Aging fields (-n/-x/-w/-i): set min/max/warn/inactive days - Prefix (-P): operate on files under a prefix directory - Correct exit codes (0-6) matching GNU passwd spec - Mutual exclusion between conflicting flags via clap shadow-core modules implemented: - lock: file locking with .lock files, stale detection, PID tracking - login_defs: /etc/login.defs KEY VALUE parser - nscd: cache invalidation (nscd + sssd) - sysroot: --prefix path resolver for testable file operations - shadow: ShadowEntry helper methods (lock/unlock/delete/expire/status) 48 tests passing on Debian/Alpine/Fedora, zero clippy warnings. Not yet implemented: PAM password change (default operation), --root (chroot), --keep-tokens, --stdin, --repository.
shadow-rs
Memory-safe Rust reimplementation of Linux shadow-utils (useradd, passwd, groupadd, etc.)
Languages
Rust
94.8%
Shell
4.7%
Makefile
0.3%
Fluent
0.2%