Você está essencialmente perguntando a mesma coisa:
Então, use o jsvc.
Então eu tenho uma caixa RedHat 5 que eu estou querendo para executar um aplicativo que eu escrevi que implementa o SLP. O SLP usa a porta 427 para responder a consultas de serviço. Meu entendimento é que as portas abaixo de 1024 são "privilegiadas" e, portanto, não podem ser vinculadas por alguém que não seja root. Eu não posso executar este aplicativo como root, pois é lançado via tomcat.
Uma solução criativa que eu realmente gostei foi simplesmente escrever uma regra iptables para rotear a porta privilegiada para um não-privilegiado. Nos meus testes de prova de conceito, isso funciona maravilhosamente. Infelizmente, seria muito (e compreensivelmente) desejado pelos poderes se a minha aplicação não exigisse o uso do iptables na instalação.
Então eu ouvi um boato e não consegui encontrar nada para verificar isso que havia algum tipo de comando ou parâmetro que poderia ser configurado para fazer com que qualquer porta que eu quisesse não fosse privilegiada. Isso é verdade? Se sim, como isso é feito? Obrigado!
UPDATE
Então, vi este post no Stack Overflow: link Parece que ele usou algo chamado capacidades. O problema com isto é que parece requerer o kernel 2.6.24+, mas eu só tenho acesso ao kernel 2.6.18. Existe uma maneira de definir recursos em uma caixa 2.6.18?
Uma abordagem bandaid seria ouvir uma porta não privilegiada e, em seguida, redirecionar com xinetd da porta privilegiada.
$ grep bandaid /etc/services
bandaid 190/tcp # bandaid
$ cat /etc/xinetd.d/bandaid
service bandaid
{
disable = no
bind = 10.0.0.45
socket_type = stream
protocol = tcp
wait = no
user = nobody
redirect = localhost 8888
}
Esta é uma idéia horrível do IMO, mas às vezes você não tem outras opções.