Systemd 및 AmbientCapability: "잘못된 인수" 오류 디버깅

Systemd 및 AmbientCapability: "잘못된 인수" 오류 디버깅

저는 아치 리눅스를 사용하고 있습니다. 내 문제는 처음에 Caddy 웹 서버에서 발생했지만 이에 국한되지는 않습니다. 따라서 무작위 바이너리(capsh)를 사용하여 문제를 해결하기 위한 간단한 장치가 있습니다.

[Service]
ExecStart=/sbin/capsh --print
AmbientCapabilities=CAP_NET_BIND_SERVICE
User=nobody

PID 1과 그 하위 프로세스를 추적하기 위해 strace -f -p 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

그 이유는 커널이 너무 오래되었기 때문입니다! 저는 커널 3.14가 있는 OVH 서버를 사용하고 있습니다. 시스템 업데이트가 커널을 업데이트하지 않는다는 것을 몰랐습니다. 나는 이것을 따라 갔다http://help.ovh.com/KernelInstall그리고 일부 지침https://bbs.archlinux.org/viewtopic.php?id=214512

관련 정보