我正在运行 Arch Linux。我的问题最初出现在 Caddy Web 服务器上,但不仅限于此。因此,我有一个简单的单元来使用随机二进制文件(capsh)进行故障排除:
[Service]
ExecStart=/sbin/capsh --print
AmbientCapabilities=CAP_NET_BIND_SERVICE
User=nobody
我已经运行了 strace -f -p 1 来跟踪 PID 1 及其子进程,因此我可以在启动设备后看到原始错误:
prctl(PR_CAP_AMBIENT, PR_CAP_AMBIENT_RAISE, CAP_NET_BIND_SERVICE, 0, 0) = -1 EINVAL (Invalid argument)
因此,我必须对 Caddy 二进制文件使用 sudo setcap cap_net_bind_service=+ep 并注释掉单元中的功能设置。我仍然使用 systemd 231,因为即使我已经设置了二进制文件,较新的版本也会出错。
我还有哪些进一步的调试选项?
答案1
原因是内核太旧了!我使用的是 OVH 服务器,它的内核为 3.14。我没有意识到系统更新不会更新内核。我遵循了这些http://help.ovh.com/KernelInstall以及其中一些说明https://bbs.archlinux.org/viewtopic.php?id=214512