You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下Erlang+Cowboy服务器启动eacces权限错误解决求助

解决Cowboy服务器启动的EACCES权限问题

1. 检查证书与密钥文件的权限

先定位test_app_app.erl第19行中加载证书/密钥的路径(比如Certbot生成的证书通常在/etc/letsencrypt/live/your-domain/目录下),执行以下操作:

  • 查看文件权限:ls -l /etc/letsencrypt/live/your-domain/fullchain.pem /etc/letsencrypt/live/your-domain/privkey.pem
  • 确保运行Erlang服务器的用户对这些文件有读权限:
    • 若用普通用户运行,给证书文件添加读权限:sudo chmod o+r /etc/letsencrypt/live/your-domain/*.pem
    • 或者将运行用户加入证书所在组(通常是ssl-cert):sudo usermod -aG ssl-cert your-user

2. 检查端口绑定权限

如果Cowboy绑定了443、80这类低于1024的端口,普通用户默认无权限绑定,可选解决方式:

  • 临时用root启动(不推荐生产环境):sudo ./your-server-start-script
  • 给Erlang二进制文件添加端口绑定权限(推荐生产):sudo setcap 'cap_net_bind_service=+ep' /path/to/erlang/beam.smp
  • 修改配置让Cowboy绑定8443这类高位端口,再通过Nginx反向代理到443。

3. 验证代码中的文件路径

检查test_app_app.erl第19行的代码,确认证书/密钥的读取路径正确,无拼写错误,例如:

{ok, Cert} = file:read_file("/etc/letsencrypt/live/your-domain/fullchain.pem"),
{ok, Key} = file:read_file("/etc/letsencrypt/live/your-domain/privkey.pem"),

确保路径真实存在,且运行用户能访问。

4. 检查证书父目录权限

Certbot生成的证书目录权限可能较严格,需保证父目录有执行权限:
sudo chmod o+x /etc/letsencrypt /etc/letsencrypt/live /etc/letsencrypt/archive

内容的提问来源于stack exchange,提问作者gabrielikpaetuk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 22:25:20