GNU/Linux >> Linux Esercitazione >  >> Linux

Consentire a un utente di consentire l'ascolto su una porta inferiore a 1024

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

funzionerà per processi specifici. Ma per consentire a un particolare utente di collegarsi a porte inferiori a 1024 dovrai aggiungerlo a sudoers.

Dai un'occhiata a questa discussione per saperne di più.


(Alcuni di questi metodi sono stati menzionati in altre risposte; sto dando diverse possibili scelte in ordine approssimativo di preferenza.)

Puoi reindirizzare la porta bassa a una porta alta e ascoltare sulla porta alta.

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 1080

Puoi avviare il tuo server come root e rilasciare i privilegi dopo che ha iniziato ad ascoltare sulla porta privilegiata. Preferibilmente, piuttosto che codificarlo tu stesso, avvia il tuo server da un wrapper che fa il lavoro per te. Se il tuo server avvia un'istanza per connessione, avviala da inetd (o un programma simile come xinetd ). Per inetd , utilizza una riga come questa in /etc/inetd.conf :

http  stream  tcp  nowait  username:groupname  /path/to/server/executable  argv[0] argv[1]…

Se il tuo server è in ascolto in una singola istanza, avvialo da un programma come authbind . Crea un file vuoto /etc/authbind/byport/80 e renderlo eseguibile per l'utente che esegue il server; o crea /etc/authbind/byuid/1234 , dove 1234 è l'UID che esegue il server, contenente la riga 0.0.0.0/0:80,80 .

Se l'eseguibile del tuo server è archiviato su un filesystem che supporta le funzionalità, puoi assegnargli cap_net_bind_service capacità. Fai attenzione che le funzionalità sono ancora relativamente nuove e presentano ancora qualche problema.

setcap cap_net_bind_service=ep /path/to/server/executable

La risposta breve è che questo non è possibile per progettazione.

La risposta lunga è che nei mondi open source ci sono molte persone che giocano con il design e escogitano metodi alternativi. In generale è prassi ampiamente accettata che ciò non sia possibile. Il fatto che tu stia provando probabilmente significa che hai un altro errore di progettazione nel tuo sistema e dovresti riconsiderare l'intera architettura del tuo sistema alla luce delle migliori pratiche *nix e delle implicazioni sulla sicurezza.

Detto questo, un programma per autorizzare l'accesso non root alle porte basse è authbind. Sia selinux che grsecurity forniscono anche framework per tali autenticazioni ottimizzate.

Infine, se vuoi che utenti specifici eseguano programmi specifici come root e ciò di cui hai veramente bisogno è solo consentire a un utente di riavviare Apache o qualcosa del genere, sudo è tuo amico!


Linux
  1. Come installare VSFTPD su un server Ubuntu Cloud

  2. Come installare VSFTPD su un Debian Cloud Server

  3. Come installare VSFTPD su un server cloud CentOS

  4. Come installare un server PostgreSQL su Ubuntu 18.04

  5. Consentire FTP con IPTables

Come eseguire la configurazione iniziale del server CentOS 7

Procedura:configurazione iniziale del server Ubuntu 15.04

Procedura:Configurazione iniziale del server Fedora 21

Procedura:configurazione iniziale del server Debian 8.2

Configurazione iniziale del server con Ubuntu 18.04

Come abilitare l'utente root nel server Ubuntu?