Systemd è in grado di gestire vari tipi di servizi in particolare uno dei seguenti
simple
- Un processo di lunga durata che non fa da sfondo a se stesso e rimane attaccato alla shell.
forking
- Un tipico demone che si biforca, distaccandolo dal processo che lo ha eseguito, creando un background efficace.
oneshot
- Un processo di breve durata che dovrebbe uscire.
dbus
- Come semplice, ma la notifica della fine dell'avvio dei processi viene inviata tramite dbus.
notify
- Come semplice, ma la notifica della fine dell'avvio dei processi viene inviata su inotify.
idle
- Come semplice, ma il file binario viene avviato dopo l'invio del lavoro.
Nel tuo caso hai scelto il Type=forking
che significa che systemd sta aspettando che il processo si biforchi da solo e che il processo genitore termini, il che serve come indicazione che il processo è stato avviato correttamente. Tuttavia, il processo non sta eseguendo questa operazione: rimane in primo piano e quindi si systemctl start
bloccherà indefinitamente o fino a quando i processi si arrestano in modo anomalo.
Invece, vuoi Type=simple
, che è l'impostazione predefinita in modo da poter rimuovere completamente la linea per ottenere lo stesso effetto. In questa modalità systemd non attende che i processi finiscano l'avvio (poiché non ha modo di sapere quando ciò è accaduto) e quindi continua immediatamente l'esecuzione e i servizi dipendenti. Nel tuo caso non ce ne sono, quindi non importa.
Una piccola nota sulla sicurezza:
Stai eseguendo il servizio come root, questo è sconsigliato in quanto è meno sicuro di eseguirlo come utente non privilegiato. La ragione di ciò è che se c'è una vulnerabilità in jekyll che in qualche modo consente l'esecuzione di comandi (possibilmente tramite il codice che sta analizzando), l'attaccante non deve fare nient'altro per possedere completamente il proprio sistema. Se, d'altra parte, viene eseguito come utente non privilegiato, l'attaccante è in grado di fare solo il danno di quell'utente e deve ora tentare di ottenere i privilegi di root per possedere completamente il sistema. Aggiunge semplicemente un livello aggiuntivo che gli attaccanti devono comunque seguire.
Puoi semplicemente eseguirlo come lo stesso utente che esegue il tuo server web, ma questo ti lascia aperto a un altro potenziale attacco. Se esiste una vulnerabilità nel tuo server web che consente all'utente di manipolare i file sul tuo sistema, può modificare i file html generati o, peggio, i file di origine e far sì che il tuo server serva tutto ciò che desidera. Tuttavia, se i file generati e i file sorgente sono leggibili solo dal server web e sono scrivibili come un altro utente non privilegiato, non saranno in grado di modificarli con la stessa facilità attaccando il web server.
Tuttavia, se stai semplicemente servendo file statici da questo server e mantieni aggiornato il server, questi attacchi sono molto improbabili, ma ancora possibili. È tua responsabilità valutare i rischi rispetto alle spese generali di configurazione in base a quanto sia critico il tuo sistema, ma entrambi questi suggerimenti sono molto semplici da configurare e quasi senza spese generali di manutenzione.
Type=forking
. Inoltre, non funzioneràexecStart
come un'espansione della shell, quindi&
alla fine non verrà mai inteso come flag di sfondo.