Domanda

Voglio creare un front-end basato sul web per gestire / amministrare il mio box Linux. Per esempio. Voglio essere in grado di aggiungere utenti, gestire il file system e cose del genere. Pensalo come un clone di cPanel ma più per l'amministratore di sistema piuttosto che per l'amministratore web.

Stavo pensando di creare un servizio che funziona sulla mia scatola e che esegue tutte le attività a livello di sistema. In questo modo posso avere una chiara separazione tra il mio front-end basato sul web e la logica attuale. Le pagine del server possono quindi effettuare chiamate al mio server specializzato o mettere in coda le attività in quel modo. Tuttavia, non sono sicuro che questo sarebbe il modo migliore per farlo.

Immagino che un'altra domanda importante sarebbe: come gestirò la sicurezza quando costruissi qualcosa del genere?

PS: Questo è solo un progetto per animali domestici e un'esperienza di apprendimento, quindi non sono interessato a soluzioni esistenti che fanno una cosa simile.

È stato utile?

Soluzione

Avere il demone del servizio specializzato in esecuzione come utente distinto, chiamiamolo 'managerd'. Imposta il tuo file / etc / sudoers in modo che 'managerd' possa eseguire i vari comandi che desideri possano essere eseguiti, come root, senza password.

Chiedi al server web di rilasciare " trigger " file contenenti i comandi da eseguire in una directory in modalità '770' con un gruppo di cui solo l'utente del server Web e 'managerd' sono membri. Assicurati che "managerd" verifichi che i file abbiano la proprietà corretta prima di eseguire il comando.

Assicurati che il lato dell'interfaccia web sia bloccato: eseguilo solo su HTTPS, richiedi l'autenticazione e, se possibile, inserisci ACL specifici per IP, in modo da poterlo accedere solo da posizioni note, in anticipo.

Altri suggerimenti

La tua soluzione sembra una soluzione molto sensata al problema "root".

Coppia di suggerimenti:

  1. Il collegamento del "servizio specializzato" anche a localhost contribuirebbe a garantire che le richieste non possano essere effettuate esternamente.
  2. Verifica delle funzioni di richiesta di chiamata che eseguono le azioni e non danno direttamente al servizio pieno accesso senza restrizioni. Quindi chiamando una funzione " addToGroup (utente, gruppo) " anziché un generico " performAction (comando) " ;.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top