在 CentOS 上设置 Golang 相关权限,通常分几种常见场景。下面按你最可能遇到的情况说明。
一般解压到 /usr/local/go
sudo tar -C /usr/local -xzf go1.22.linux-amd64.tar.gz
设置权限(默认即可,不建议 777):
sudo chown -R root:root /usr/local/go
sudo chmod -R 755 /usr/local/go
✅ 普通用户通过 PATH 使用即可,不需要写权限。
mkdir -p ~/go
chmod 755 ~/go
chown -R $USER:$USER ~/go
❌ 不要放在 /usr/local/go 下
❌ 不要给 777
go build -o myapp
chmod +x myapp
./myapp
如果需要绑定 80 / 443 端口:
sudo setcap cap_net_bind_service=+ep myapp
查看:
getcap myapp
示例:/etc/systemd/system/myapp.service
[Unit]
Description=Go App
After=network.target
[Service]
User=appuser
Group=appuser
WorkingDirectory=/opt/myapp
ExecStart=/opt/myapp/myapp
Restart=always
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable myapp
sudo systemctl start myapp
✅ 用普通用户运行,比 root 安全
如果程序访问端口 / 文件失败:
getenforce
sudo semanage port -a -t http_port_t -p tcp 8080
sudo setenforce 0
chmod 777 /usr/local/go # 危险
chmod 777 ~/go # 危险
用 root 跑所有 Go 程序 # 不安全
/usr/local/go root:root 755
~/go user:user 755
Go 程序 user:user 755
生产运行 普通用户 + systemd
如果你能具体说:
我可以直接给你一套精准命令。