Estou tentando usar Recursos do Linux para permitir um programa (httpd) ligar-se a uma porta privilegiada (443) como um usuário não privilegiado.
Eu configurei os recursos para o programa usando este comando:
setcap CAP_NET_BIND_SERVICE+eip httpd
Em seguida, verifiquei que o recurso foi definido com sucesso com ...
getcap httpd
que imprime ...
httpd = cap_net_bind_service+eip
Quando tento iniciar o programa, ele sai porque não pode se ligar à porta necessária. Eu descobri isso usando strace
:
strace -f httpd
revela "permissão negada, não pode ligar, encerrar":
...
write(2, "(13)Permission denied: AH00072: "..., 85(13)Permission denied: AH00072: make_sock: could not bind to address [redacted X.X.X.X]:443) = 85
close(3) = 0
write(2, "no listening sockets available, "..., 46no listening sockets available, shutting down
...
O que devo fazer para que os recursos do Linux funcionem corretamente e permitir que o programa seja vinculado a uma porta privilegiada?
Uma pesquisa rápida sugere que uma montagem com o sinalizador nosuid
pode impedir que o recurso funcione e verifiquei que ele não está interferindo neste caso.
Tags linux