fix: sudo pkill -HUP for reload, with sudoers rule (NoNewPrivileges already removed)

This commit is contained in:
Claus Lohmar 2026-07-29 09:50:42 +00:00
parent 5e742cbe2d
commit 3c0b210d04
2 changed files with 10 additions and 4 deletions

View file

@ -595,8 +595,14 @@ install_plugin() {
# Set group on plugin binary dir # Set group on plugin binary dir
chgrp -R "$group" "$plugin_dir" 2>/dev/null || true chgrp -R "$group" "$plugin_dir" 2>/dev/null || true
# Note: reload uses SIGHUP (pkill -HUP dnsmasq), not systemctl. # Note: reload uses sudo pkill -HUP, needs a sudoers rule.
# This works without polkit or extra capabilities. 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" log "Plugin installed at: $plugin_dir"
} }

View file

@ -24,8 +24,8 @@ var (
// Override via environment: LEASE_FILE, CONF_FILE, RELOAD_CMD, RELOAD_ARGS // Override via environment: LEASE_FILE, CONF_FILE, RELOAD_CMD, RELOAD_ARGS
leasesFile = envOrDefault("LEASE_FILE", "/opt/zoraxy/conf/dhcp/dnsmasq.leases") leasesFile = envOrDefault("LEASE_FILE", "/opt/zoraxy/conf/dhcp/dnsmasq.leases")
confFile = envOrDefault("CONF_FILE", "/opt/zoraxy/conf/dhcp/dnsmasq.conf") confFile = envOrDefault("CONF_FILE", "/opt/zoraxy/conf/dhcp/dnsmasq.conf")
reloadCmd = envOrDefault("RELOAD_CMD", "pkill") reloadCmd = envOrDefault("RELOAD_CMD", "/usr/bin/sudo")
reloadArgs = strings.Fields(envOrDefault("RELOAD_ARGS", "-HUP dnsmasq")) reloadArgs = strings.Fields(envOrDefault("RELOAD_ARGS", "pkill -HUP dnsmasq"))
) )
func envOrDefault(key, fallback string) string { func envOrDefault(key, fallback string) string {