aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-10-08 18:22:24 +0900
committerOphestra <cat@gensokyo.uk>2025-10-08 18:22:24 +0900
commit5bf28901a44e36476900b3671958c1a27cef0ba0 (patch)
treecb6d8afdb5d00af7158df46d4af6ca98f872a993
parent9b507715d42f74c3f18fe817c2464abfca1b0182 (diff)
cmd/hsu: check against setgid bit
The getgroups behaviour is already checked for, but it never hurts to be more careful in a setuid program. Signed-off-by: Ophestra <cat@gensokyo.uk>
-rw-r--r--cmd/hsu/main.go3
-rwxr-xr-xdist/install.sh2
-rw-r--r--nixos.nix2
3 files changed, 4 insertions, 3 deletions
diff --git a/cmd/hsu/main.go b/cmd/hsu/main.go
index 1f6ca7b6..27b97b5c 100644
--- a/cmd/hsu/main.go
+++ b/cmd/hsu/main.go
@@ -34,6 +34,9 @@ func main() {
if os.Geteuid() != 0 {
log.Fatal("this program must be owned by uid 0 and have the setuid bit set")
}
+ if os.Getegid() != os.Getgid() {
+ log.Fatal("this program must not have the setgid bit set")
+ }
puid := os.Getuid()
if puid == 0 {
diff --git a/dist/install.sh b/dist/install.sh
index ef2e13d0..b347eaa4 100755
--- a/dist/install.sh
+++ b/dist/install.sh
@@ -4,7 +4,7 @@ cd "$(dirname -- "$0")" || exit 1
install -vDm0755 "bin/hakurei" "${HAKUREI_INSTALL_PREFIX}/usr/bin/hakurei"
install -vDm0755 "bin/hpkg" "${HAKUREI_INSTALL_PREFIX}/usr/bin/hpkg"
-install -vDm6511 "bin/hsu" "${HAKUREI_INSTALL_PREFIX}/usr/bin/hsu"
+install -vDm4511 "bin/hsu" "${HAKUREI_INSTALL_PREFIX}/usr/bin/hsu"
if [ ! -f "${HAKUREI_INSTALL_PREFIX}/etc/hsurc" ]; then
install -vDm0400 "hsurc.default" "${HAKUREI_INSTALL_PREFIX}/etc/hsurc"
fi
diff --git a/nixos.nix b/nixos.nix
index 6dd51807..8135690f 100644
--- a/nixos.nix
+++ b/nixos.nix
@@ -51,11 +51,9 @@ in
];
security.wrappers.hsu = {
-
source = "${cfg.hsuPackage}/bin/hsu";
setuid = true;
owner = "root";
- setgid = true;
group = "root";
};