From 3c0b210d043f6d88ae10fc34e428a615626a37ac Mon Sep 17 00:00:00 2001 From: cclohmar Date: Wed, 29 Jul 2026 09:50:42 +0000 Subject: [PATCH] fix: sudo pkill -HUP for reload, with sudoers rule (NoNewPrivileges already removed) --- install.sh | 10 ++++++++-- server.go | 4 ++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/install.sh b/install.sh index fc70b21..6572cc7 100755 --- a/install.sh +++ b/install.sh @@ -595,8 +595,14 @@ install_plugin() { # Set group on plugin binary dir chgrp -R "$group" "$plugin_dir" 2>/dev/null || true - # Note: reload uses SIGHUP (pkill -HUP dnsmasq), not systemctl. - # This works without polkit or extra capabilities. + # Note: reload uses sudo pkill -HUP, needs a sudoers rule. + local sudoers_file="/etc/sudoers.d/dnsmasq-edit" + if [ ! -f "$sudoers_file" ]; then + cat > "$sudoers_file" << 'SUDO_EOF' +zoraxy ALL=(root) NOPASSWD: /usr/bin/pkill -HUP dnsmasq +SUDO_EOF + chmod 0440 "$sudoers_file" + fi log "Plugin installed at: $plugin_dir" } diff --git a/server.go b/server.go index e8a4ca3..567b452 100644 --- a/server.go +++ b/server.go @@ -24,8 +24,8 @@ var ( // Override via environment: LEASE_FILE, CONF_FILE, RELOAD_CMD, RELOAD_ARGS leasesFile = envOrDefault("LEASE_FILE", "/opt/zoraxy/conf/dhcp/dnsmasq.leases") confFile = envOrDefault("CONF_FILE", "/opt/zoraxy/conf/dhcp/dnsmasq.conf") - reloadCmd = envOrDefault("RELOAD_CMD", "pkill") - reloadArgs = strings.Fields(envOrDefault("RELOAD_ARGS", "-HUP dnsmasq")) + reloadCmd = envOrDefault("RELOAD_CMD", "/usr/bin/sudo") + reloadArgs = strings.Fields(envOrDefault("RELOAD_ARGS", "pkill -HUP dnsmasq")) ) func envOrDefault(key, fallback string) string {