Que permissão é necessária para abrir um soquete de servidor TCP no Linux?

2

Eu quero iniciar um servidor websocket, mas não posso me conectar a ele de outras máquinas. Somente quando eu inicio o servidor websocket com permissões de root ele funciona. Então, isso parece ser um problema de permissão.

Quais permissões meu usuário precisa para abrir um soquete?

    
por K.. 17.05.2012 / 22:18

1 resposta

6

Normalmente, o acesso root é necessário para abrir as portas com menos de 1024, o que cobre a maioria dos serviços bem conhecidos, como web (80), ssh (22), ftp (21), etc.

Alguns daemons podem ser configurados para escutar em outras portas acima da porta 1024, o que pode permitir que você as use com permissões não-raiz, mas isso varia de acordo com o produto, por produto.

Também existem outros problemas, como usar CAP_NET_BIND_SERVICE , isso é descrito em mais detalhes nesta resposta , da qual o resumo é,

The short answer is that you do:

setcap 'cap_net_bind_service=+ep' /path/to/program

And then anytime program is executed thereafter it will have the CAP_NET_BIND_SERVICE capability. setcap is in the debian package libcap2-bin.

    
por 17.05.2012 / 22:43