¿Cómo permitir que un usuario no root escuche en un puerto privilegiado?

11

Quiero que syslog se ejecute como usuario no root en mi cuadro de Linux. Eso hace que sea imposible que se una al puerto 514, porque es un puerto privilegiado. ¿Hay alguna forma en que pueda otorgar a los usuarios no administradores "foo" la capacidad de escuchar en el puerto 514?

Dan Goldburt
fuente

Respuestas:

10
setcap 'cap_net_bind_service=+ep' /path/to/syslogd

Requiere un kernel de Linux no antiguo ( 2.6.24 o posterior)

Cian
fuente
3

Puede configurar rinetd(disponible en la mayoría, si no en todos los repositorios estándar de distribución) para escuchar en el puerto 514 y reenviar conexiones a otro puerto (superior a 1024, digamos 1514). De esa forma, el proceso de usuario no privilegiado puede escuchar en 1514 y rinetdreenviará las conexiones, por lo que parece estar escuchando en 514.

Sin embargo, esto solo funcionará para conexiones TCP. Si necesita admitir UDP (o cualquier otra cosa) de esta manera, así como o en lugar de TCP, puede usar las reglas de traducción de iptables para lograr el mismo efecto.

David Spillett
fuente
Oh, eso fue muy fácil. Aquí hay una guía sobre cómo hacerlo en Ubuntu: ubuntugeek.com/…
Ivan
2

Escuche en un puerto sin privilegios y use iptables dnat para redirigir las conexiones.

korkman
fuente