Come posso consentire a un utente non root di utilizzare le porte inferiori a 1024?

2

Sto lavorando con un'applicazione che utilizza una porta inferiore a 1024 perché originariamente era stata progettata per essere eseguita come root . Vorrei eseguire il debug dell'applicazione in un IDE che apro come utente (utente non root) ma ho privilegi sudo . Ho delle ragioni per il debug remoto e per aprire l'IDE su sudo.

Quindi l'unico modo per farlo sarebbe quello di consentire a un utente non root di utilizzare porte o una porta inferiore a 1024. Può essere fatto e come?

    
posta amphibient 29.01.2014 - 22:14
fonte

2 risposte

3

Se non riesci a modificare la tua app per utilizzare una porta superiore a 1024, il modo più semplice sarebbe prendere la porta che sta utilizzando e mapparla su una porta superiore a 1024.

Puoi farlo usando il firewall, ipfw è lo strumento per impostare il firewall. Puoi anche farlo usando 'nc', a volte conosciuto come ncat o netcat.

C'è una domanda qui che fornisce maggiori dettagli. Il thread menziona anche "AuthBind" che è un pacchetto open source che consente proprio questo: aprire le porte al di sotto di 1024 senza concedere la root privilegi.

    
risposta data 30.01.2014 - 01:01
fonte
3

Avviso: se il debug richiede solo una singola connessione e non è necessario eseguire il debug in modo specifico degli eventi di connessione / disconnessione ...

Potresti usare netcat (o nc su alcuni sistemi).

Hai impostato la tua applicazione per aprire, ad esempio, la porta 12345 (apribile dall'utente). Quindi si utilizza netcat per aprire, ad esempio, la porta 123 (con privilegi solo utenti) e inoltrare i dati alla porta 12345.

# sudo nc -l 123 | nc localhost 12345

La prima metà del comando esegue netcat nc e dice di ascoltare -l sulla porta 123 . La pipe reindirizza i dati dalla prima istanza di netcat a un'altra. Il secondo comando si collega alla tua applicazione e inoltra i dati attraverso.

Si noti che non appena si esegue questo comando, la seconda istanza di netcat si connetterà all'applicazione. Se la tua applicazione inizierà a spingere immediatamente i dati, vorrai connettere il tuo client molto rapidamente e dovrai fare attenzione a come i dati vengono memorizzati nel buffer.

Se vuoi che il client sia in grado di disconnettersi e riconnettersi senza dover riavviare netcat, esegui invece:

# sudo nc -lk 123 | nc localhost 12345

Il -k indica a netcat di continuare a essere eseguito se il client si disconnette dalla porta 123.

Ancora una volta, ci sono dei limiti con questo metodo, dato che si sta rinunciando in gran parte al controllo del lato della connessione delle cose facendo in modo che netcat lo gestisca per te. D'altra parte, è molto veloce e facile da configurare e abbattere, se è tutto ciò che serve.

    
risposta data 30.01.2014 - 01:18
fonte

Leggi altre domande sui tag