#!/bin/bash # 配置 sudoers 允许 PlateRecApp 无密码重启 frpc 服务 # 用法: sudo bash setup_frpc_sudoers.sh [运行用户名] # 如果不指定用户名,自动检测当前用户 RUN_USER="${1:-$(whoami)}" SUDOERS_FILE="/etc/sudoers.d/platerec-frpc" echo "配置 frpc 服务管理权限 for user: $RUN_USER" cat > "$SUDOERS_FILE" << EOF # PlateRecApp Web 管理 frpc 服务所需权限 # 允许无密码执行 systemctl 操作 frpc 服务 $RUN_USER ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart frpc $RUN_USER ALL=(ALL) NOPASSWD: /usr/bin/systemctl is-active frpc $RUN_USER ALL=(ALL) NOPASSWD: /usr/bin/systemctl status frpc $RUN_USER ALL=(ALL) NOPASSWD: /usr/bin/systemctl reload frpc EOF chmod 440 "$SUDOERS_FILE" # 验证 sudoers 语法 if visudo -cf "$SUDOERS_FILE"; then echo "✅ sudoers 配置成功: $SUDOERS_FILE" echo "用户 $RUN_USER 现在可以无密码重启 frpc 服务" else echo "❌ sudoers 语法错误,已删除" rm -f "$SUDOERS_FILE" exit 1 fi