Resposta curta: você não pode. Portas abaixo de 1024 podem ser abertas apenas pelo root. Como comentário - bem, você pode, usando CAP_NET_BIND_SERVICE , mas essa abordagem, aplicada ao java bin fará com que qualquer programa java ser executado com essa configuração, o que é indesejável, se não for um risco de segurança.
A resposta longa: você pode redirecionar as conexões na porta 80 para alguma outra porta que você possa abrir como usuário normal.
Executar como root:
# iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
Como dispositivos loopback (como localhost) não usam as regras de pré-formatação, se você precisar usar localhost, etc., inclua esta regra também ( obrigado @Francesco ):
# iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
NOTA: A solução acima não é adequada para sistemas multiusuários, pois qualquer usuário pode abrir a porta 8080 (ou qualquer outra porta alta que você decida usar), interceptando o tráfego. (Créditos para CesarB ).
EDIT: como por questão de comentário - para excluir a regra acima:
# iptables -t nat --line-numbers -n -L
Isso produzirá algo como:
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination
1 REDIRECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:8080 redir ports 8088
2 REDIRECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 redir ports 8080
A regra em que você está interessado é nr. 2, portanto, para excluí-lo:
# iptables -t nat -D PREROUTING 2