From 7602f57ff79de7563a01251d630641ff1756bee3 Mon Sep 17 00:00:00 2001 From: Pierre Warnier Date: Tue, 15 Sep 2026 11:16:48 +0200 Subject: [PATCH] release: 0.5.1 Two install fixes and no new tool, so a patch. `make install` no longer fails on a system without a shadow group -- Fedora, Arch, a packager's chroot -- and chage can now read a user's own aging line, the one thing it lets a user do. Both matter to the Arch package, which builds from these tarballs with `make install`. Also ships `make verify-release`. --- CHANGELOG.md | 2 + Cargo.lock | 60 +++++++++--------- Cargo.toml | 118 ++++++++++++++++++------------------ src/uu/grpconv/Cargo.toml | 2 +- src/uu/grpunconv/Cargo.toml | 2 +- src/uu/newgidmap/Cargo.toml | 2 +- src/uu/pwunconv/Cargo.toml | 2 +- src/uu/vigr/Cargo.toml | 2 +- 8 files changed, 96 insertions(+), 94 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cf9937c..f34ade8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.5.1] - 2026-09-15 + ### Fixed - `chage -l` did not work for a user on their own account, the one mode the diff --git a/Cargo.lock b/Cargo.lock index f622d8d..efd8bb9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -534,7 +534,7 @@ dependencies = [ [[package]] name = "shadow-core" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "landlock", @@ -695,7 +695,7 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uu_chage" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "rustix", @@ -706,7 +706,7 @@ dependencies = [ [[package]] name = "uu_chfn" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "rustix", @@ -717,7 +717,7 @@ dependencies = [ [[package]] name = "uu_chgpasswd" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "shadow-core", @@ -728,7 +728,7 @@ dependencies = [ [[package]] name = "uu_chpasswd" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "rustix", @@ -740,7 +740,7 @@ dependencies = [ [[package]] name = "uu_chsh" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "rustix", @@ -751,7 +751,7 @@ dependencies = [ [[package]] name = "uu_expiry" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "rustix", @@ -762,7 +762,7 @@ dependencies = [ [[package]] name = "uu_gpasswd" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "rustix", @@ -774,7 +774,7 @@ dependencies = [ [[package]] name = "uu_groupadd" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "rustix", @@ -785,7 +785,7 @@ dependencies = [ [[package]] name = "uu_groupdel" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "rustix", @@ -796,7 +796,7 @@ dependencies = [ [[package]] name = "uu_groupmod" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "rustix", @@ -807,7 +807,7 @@ dependencies = [ [[package]] name = "uu_grpck" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "shadow-core", @@ -817,7 +817,7 @@ dependencies = [ [[package]] name = "uu_grpconv" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "uu_pwconv", @@ -826,7 +826,7 @@ dependencies = [ [[package]] name = "uu_grpunconv" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "uu_pwconv", @@ -835,7 +835,7 @@ dependencies = [ [[package]] name = "uu_login" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "rustix", @@ -847,7 +847,7 @@ dependencies = [ [[package]] name = "uu_newgidmap" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "uu_newuidmap", @@ -856,7 +856,7 @@ dependencies = [ [[package]] name = "uu_newgrp" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "rustix", @@ -866,7 +866,7 @@ dependencies = [ [[package]] name = "uu_newuidmap" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "rustix", @@ -877,7 +877,7 @@ dependencies = [ [[package]] name = "uu_newusers" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "shadow-core", @@ -888,7 +888,7 @@ dependencies = [ [[package]] name = "uu_passwd" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "rustix", @@ -899,7 +899,7 @@ dependencies = [ [[package]] name = "uu_pwck" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "shadow-core", @@ -909,7 +909,7 @@ dependencies = [ [[package]] name = "uu_pwconv" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "rustix", @@ -920,7 +920,7 @@ dependencies = [ [[package]] name = "uu_pwunconv" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "uu_pwconv", @@ -929,7 +929,7 @@ dependencies = [ [[package]] name = "uu_sg" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "shadow-core", @@ -938,7 +938,7 @@ dependencies = [ [[package]] name = "uu_shadow" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "clap_complete", @@ -977,7 +977,7 @@ dependencies = [ [[package]] name = "uu_useradd" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "rustix", @@ -988,7 +988,7 @@ dependencies = [ [[package]] name = "uu_userdel" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "rustix", @@ -999,7 +999,7 @@ dependencies = [ [[package]] name = "uu_usermod" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "rustix", @@ -1010,7 +1010,7 @@ dependencies = [ [[package]] name = "uu_vigr" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "uu_vipw", @@ -1019,7 +1019,7 @@ dependencies = [ [[package]] name = "uu_vipw" -version = "0.5.0" +version = "0.5.1" dependencies = [ "clap", "rustix", diff --git a/Cargo.toml b/Cargo.toml index ad70c9c..c457078 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,7 +47,7 @@ members = [ ] [workspace.package] -version = "0.5.0" +version = "0.5.1" edition = "2024" rust-version = "1.94.0" license = "MIT" @@ -58,7 +58,7 @@ categories = ["command-line-utilities"] [workspace.dependencies] # Internal crates -shadow-core = { path = "src/shadow-core", version = "0.5.0" } +shadow-core = { path = "src/shadow-core", version = "0.5.1" } # CLI clap = { version = "4", features = ["wrap_help"] } @@ -86,38 +86,38 @@ tempfile = "3" [dependencies] clap = { workspace = true } clap_complete = { workspace = true, optional = true } -shadow-core = { path = "src/shadow-core", version = "0.5.0" } +shadow-core = { path = "src/shadow-core", version = "0.5.1" } rustix = { workspace = true } # Tool crates (optional, enabled by features) -passwd = { optional = true, version = "0.5.0", package = "uu_passwd", path = "src/uu/passwd" } -pwck = { optional = true, version = "0.5.0", package = "uu_pwck", path = "src/uu/pwck" } -useradd = { optional = true, version = "0.5.0", package = "uu_useradd", path = "src/uu/useradd" } -userdel = { optional = true, version = "0.5.0", package = "uu_userdel", path = "src/uu/userdel" } -usermod = { optional = true, version = "0.5.0", package = "uu_usermod", path = "src/uu/usermod" } -chpasswd = { optional = true, version = "0.5.0", package = "uu_chpasswd", path = "src/uu/chpasswd" } -chage = { optional = true, version = "0.5.0", package = "uu_chage", path = "src/uu/chage" } -groupadd = { optional = true, version = "0.5.0", package = "uu_groupadd", path = "src/uu/groupadd" } -groupdel = { optional = true, version = "0.5.0", package = "uu_groupdel", path = "src/uu/groupdel" } -groupmod = { optional = true, version = "0.5.0", package = "uu_groupmod", path = "src/uu/groupmod" } -grpck = { optional = true, version = "0.5.0", package = "uu_grpck", path = "src/uu/grpck" } -chfn = { optional = true, version = "0.5.0", package = "uu_chfn", path = "src/uu/chfn" } -chsh = { optional = true, version = "0.5.0", package = "uu_chsh", path = "src/uu/chsh" } -newgrp = { optional = true, version = "0.5.0", package = "uu_newgrp", path = "src/uu/newgrp" } -gpasswd = { optional = true, version = "0.5.0", package = "uu_gpasswd", path = "src/uu/gpasswd" } -sg = { optional = true, version = "0.5.0", package = "uu_sg", path = "src/uu/sg" } -chgpasswd = { optional = true, version = "0.5.0", package = "uu_chgpasswd", path = "src/uu/chgpasswd" } -newusers = { optional = true, version = "0.5.0", package = "uu_newusers", path = "src/uu/newusers" } -vipw = { optional = true, version = "0.5.0", package = "uu_vipw", path = "src/uu/vipw" } -vigr = { optional = true, version = "0.5.0", package = "uu_vigr", path = "src/uu/vigr" } -pwconv = { optional = true, version = "0.5.0", package = "uu_pwconv", path = "src/uu/pwconv" } -pwunconv = { optional = true, version = "0.5.0", package = "uu_pwunconv", path = "src/uu/pwunconv" } -grpconv = { optional = true, version = "0.5.0", package = "uu_grpconv", path = "src/uu/grpconv" } -grpunconv = { optional = true, version = "0.5.0", package = "uu_grpunconv", path = "src/uu/grpunconv" } -login = { optional = true, version = "0.5.0", package = "uu_login", path = "src/uu/login" } -newuidmap = { optional = true, version = "0.5.0", package = "uu_newuidmap", path = "src/uu/newuidmap" } -newgidmap = { optional = true, version = "0.5.0", package = "uu_newgidmap", path = "src/uu/newgidmap" } -expiry = { optional = true, version = "0.5.0", package = "uu_expiry", path = "src/uu/expiry" } +passwd = { optional = true, version = "0.5.1", package = "uu_passwd", path = "src/uu/passwd" } +pwck = { optional = true, version = "0.5.1", package = "uu_pwck", path = "src/uu/pwck" } +useradd = { optional = true, version = "0.5.1", package = "uu_useradd", path = "src/uu/useradd" } +userdel = { optional = true, version = "0.5.1", package = "uu_userdel", path = "src/uu/userdel" } +usermod = { optional = true, version = "0.5.1", package = "uu_usermod", path = "src/uu/usermod" } +chpasswd = { optional = true, version = "0.5.1", package = "uu_chpasswd", path = "src/uu/chpasswd" } +chage = { optional = true, version = "0.5.1", package = "uu_chage", path = "src/uu/chage" } +groupadd = { optional = true, version = "0.5.1", package = "uu_groupadd", path = "src/uu/groupadd" } +groupdel = { optional = true, version = "0.5.1", package = "uu_groupdel", path = "src/uu/groupdel" } +groupmod = { optional = true, version = "0.5.1", package = "uu_groupmod", path = "src/uu/groupmod" } +grpck = { optional = true, version = "0.5.1", package = "uu_grpck", path = "src/uu/grpck" } +chfn = { optional = true, version = "0.5.1", package = "uu_chfn", path = "src/uu/chfn" } +chsh = { optional = true, version = "0.5.1", package = "uu_chsh", path = "src/uu/chsh" } +newgrp = { optional = true, version = "0.5.1", package = "uu_newgrp", path = "src/uu/newgrp" } +gpasswd = { optional = true, version = "0.5.1", package = "uu_gpasswd", path = "src/uu/gpasswd" } +sg = { optional = true, version = "0.5.1", package = "uu_sg", path = "src/uu/sg" } +chgpasswd = { optional = true, version = "0.5.1", package = "uu_chgpasswd", path = "src/uu/chgpasswd" } +newusers = { optional = true, version = "0.5.1", package = "uu_newusers", path = "src/uu/newusers" } +vipw = { optional = true, version = "0.5.1", package = "uu_vipw", path = "src/uu/vipw" } +vigr = { optional = true, version = "0.5.1", package = "uu_vigr", path = "src/uu/vigr" } +pwconv = { optional = true, version = "0.5.1", package = "uu_pwconv", path = "src/uu/pwconv" } +pwunconv = { optional = true, version = "0.5.1", package = "uu_pwunconv", path = "src/uu/pwunconv" } +grpconv = { optional = true, version = "0.5.1", package = "uu_grpconv", path = "src/uu/grpconv" } +grpunconv = { optional = true, version = "0.5.1", package = "uu_grpunconv", path = "src/uu/grpunconv" } +login = { optional = true, version = "0.5.1", package = "uu_login", path = "src/uu/login" } +newuidmap = { optional = true, version = "0.5.1", package = "uu_newuidmap", path = "src/uu/newuidmap" } +newgidmap = { optional = true, version = "0.5.1", package = "uu_newgidmap", path = "src/uu/newgidmap" } +expiry = { optional = true, version = "0.5.1", package = "uu_expiry", path = "src/uu/expiry" } [features] default = ["passwd", "pwck", "useradd", "userdel", "usermod", "chpasswd", "chage", @@ -151,34 +151,34 @@ path = "src/bin/completions.rs" required-features = ["completions"] [dev-dependencies] -chage = { version = "0.5.0", package = "uu_chage", path = "src/uu/chage" } -chfn = { version = "0.5.0", package = "uu_chfn", path = "src/uu/chfn" } -chpasswd = { version = "0.5.0", package = "uu_chpasswd", path = "src/uu/chpasswd" } -chsh = { version = "0.5.0", package = "uu_chsh", path = "src/uu/chsh" } -groupadd = { version = "0.5.0", package = "uu_groupadd", path = "src/uu/groupadd" } -groupdel = { version = "0.5.0", package = "uu_groupdel", path = "src/uu/groupdel" } -groupmod = { version = "0.5.0", package = "uu_groupmod", path = "src/uu/groupmod" } -newgrp = { version = "0.5.0", package = "uu_newgrp", path = "src/uu/newgrp" } -sg = { version = "0.5.0", package = "uu_sg", path = "src/uu/sg" } -chgpasswd = { version = "0.5.0", package = "uu_chgpasswd", path = "src/uu/chgpasswd" } -newusers = { version = "0.5.0", package = "uu_newusers", path = "src/uu/newusers" } -vipw = { version = "0.5.0", package = "uu_vipw", path = "src/uu/vipw" } -vigr = { version = "0.5.0", package = "uu_vigr", path = "src/uu/vigr" } -pwconv = { version = "0.5.0", package = "uu_pwconv", path = "src/uu/pwconv" } -pwunconv = { version = "0.5.0", package = "uu_pwunconv", path = "src/uu/pwunconv" } -grpconv = { version = "0.5.0", package = "uu_grpconv", path = "src/uu/grpconv" } -grpunconv = { version = "0.5.0", package = "uu_grpunconv", path = "src/uu/grpunconv" } -login = { version = "0.5.0", package = "uu_login", path = "src/uu/login" } -newuidmap = { version = "0.5.0", package = "uu_newuidmap", path = "src/uu/newuidmap" } -newgidmap = { version = "0.5.0", package = "uu_newgidmap", path = "src/uu/newgidmap" } -expiry = { version = "0.5.0", package = "uu_expiry", path = "src/uu/expiry" } -passwd = { version = "0.5.0", package = "uu_passwd", path = "src/uu/passwd" } -useradd = { version = "0.5.0", package = "uu_useradd", path = "src/uu/useradd" } -userdel = { version = "0.5.0", package = "uu_userdel", path = "src/uu/userdel" } -usermod = { version = "0.5.0", package = "uu_usermod", path = "src/uu/usermod" } -pwck = { version = "0.5.0", package = "uu_pwck", path = "src/uu/pwck" } -grpck = { version = "0.5.0", package = "uu_grpck", path = "src/uu/grpck" } -shadow-core = { path = "src/shadow-core", version = "0.5.0" } +chage = { version = "0.5.1", package = "uu_chage", path = "src/uu/chage" } +chfn = { version = "0.5.1", package = "uu_chfn", path = "src/uu/chfn" } +chpasswd = { version = "0.5.1", package = "uu_chpasswd", path = "src/uu/chpasswd" } +chsh = { version = "0.5.1", package = "uu_chsh", path = "src/uu/chsh" } +groupadd = { version = "0.5.1", package = "uu_groupadd", path = "src/uu/groupadd" } +groupdel = { version = "0.5.1", package = "uu_groupdel", path = "src/uu/groupdel" } +groupmod = { version = "0.5.1", package = "uu_groupmod", path = "src/uu/groupmod" } +newgrp = { version = "0.5.1", package = "uu_newgrp", path = "src/uu/newgrp" } +sg = { version = "0.5.1", package = "uu_sg", path = "src/uu/sg" } +chgpasswd = { version = "0.5.1", package = "uu_chgpasswd", path = "src/uu/chgpasswd" } +newusers = { version = "0.5.1", package = "uu_newusers", path = "src/uu/newusers" } +vipw = { version = "0.5.1", package = "uu_vipw", path = "src/uu/vipw" } +vigr = { version = "0.5.1", package = "uu_vigr", path = "src/uu/vigr" } +pwconv = { version = "0.5.1", package = "uu_pwconv", path = "src/uu/pwconv" } +pwunconv = { version = "0.5.1", package = "uu_pwunconv", path = "src/uu/pwunconv" } +grpconv = { version = "0.5.1", package = "uu_grpconv", path = "src/uu/grpconv" } +grpunconv = { version = "0.5.1", package = "uu_grpunconv", path = "src/uu/grpunconv" } +login = { version = "0.5.1", package = "uu_login", path = "src/uu/login" } +newuidmap = { version = "0.5.1", package = "uu_newuidmap", path = "src/uu/newuidmap" } +newgidmap = { version = "0.5.1", package = "uu_newgidmap", path = "src/uu/newgidmap" } +expiry = { version = "0.5.1", package = "uu_expiry", path = "src/uu/expiry" } +passwd = { version = "0.5.1", package = "uu_passwd", path = "src/uu/passwd" } +useradd = { version = "0.5.1", package = "uu_useradd", path = "src/uu/useradd" } +userdel = { version = "0.5.1", package = "uu_userdel", path = "src/uu/userdel" } +usermod = { version = "0.5.1", package = "uu_usermod", path = "src/uu/usermod" } +pwck = { version = "0.5.1", package = "uu_pwck", path = "src/uu/pwck" } +grpck = { version = "0.5.1", package = "uu_grpck", path = "src/uu/grpck" } +shadow-core = { path = "src/shadow-core", version = "0.5.1" } rustix = { workspace = true } tempfile = { workspace = true } diff --git a/src/uu/grpconv/Cargo.toml b/src/uu/grpconv/Cargo.toml index a0c94e8..bf07112 100644 --- a/src/uu/grpconv/Cargo.toml +++ b/src/uu/grpconv/Cargo.toml @@ -22,7 +22,7 @@ clap = { workspace = true } uucore = { workspace = true } # One engine serves pwconv, pwunconv, grpconv and grpunconv; this crate names # which of the four it is. -uu_pwconv = { path = "../pwconv", version = "0.5.0" } +uu_pwconv = { path = "../pwconv", version = "0.5.1" } [lints] workspace = true diff --git a/src/uu/grpunconv/Cargo.toml b/src/uu/grpunconv/Cargo.toml index c24a003..041bb40 100644 --- a/src/uu/grpunconv/Cargo.toml +++ b/src/uu/grpunconv/Cargo.toml @@ -22,7 +22,7 @@ clap = { workspace = true } uucore = { workspace = true } # One engine serves pwconv, pwunconv, grpconv and grpunconv; this crate names # which of the four it is. -uu_pwconv = { path = "../pwconv", version = "0.5.0" } +uu_pwconv = { path = "../pwconv", version = "0.5.1" } [lints] workspace = true diff --git a/src/uu/newgidmap/Cargo.toml b/src/uu/newgidmap/Cargo.toml index f833095..629c419 100644 --- a/src/uu/newgidmap/Cargo.toml +++ b/src/uu/newgidmap/Cargo.toml @@ -21,7 +21,7 @@ path = "src/main.rs" clap = { workspace = true } uucore = { workspace = true } # newgidmap is newuidmap writing the other map; one engine, two names. -uu_newuidmap = { path = "../newuidmap", version = "0.5.0" } +uu_newuidmap = { path = "../newuidmap", version = "0.5.1" } [lints] workspace = true diff --git a/src/uu/pwunconv/Cargo.toml b/src/uu/pwunconv/Cargo.toml index 124deae..5638d1d 100644 --- a/src/uu/pwunconv/Cargo.toml +++ b/src/uu/pwunconv/Cargo.toml @@ -22,7 +22,7 @@ clap = { workspace = true } uucore = { workspace = true } # One engine serves pwconv, pwunconv, grpconv and grpunconv; this crate names # which of the four it is. -uu_pwconv = { path = "../pwconv", version = "0.5.0" } +uu_pwconv = { path = "../pwconv", version = "0.5.1" } [lints] workspace = true diff --git a/src/uu/vigr/Cargo.toml b/src/uu/vigr/Cargo.toml index 9bb2ae6..294650a 100644 --- a/src/uu/vigr/Cargo.toml +++ b/src/uu/vigr/Cargo.toml @@ -21,7 +21,7 @@ path = "src/main.rs" clap = { workspace = true } uucore = { workspace = true } # vigr is vipw with a different default; the GNU suite ships it as a symlink. -uu_vipw = { path = "../vipw", version = "0.5.0" } +uu_vipw = { path = "../vipw", version = "0.5.1" } [lints] workspace = true