setup_frpc_sudoers.sh 1005 B

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