Disabilita tutti i servizi, tranne ssh


31

Come posso disabilitare tutti i servizi tranne ssh su moderne distribuzioni linux (basate su systemd)?

Devo implementare una modalità di manutenzione .

Tutti questi servizi devono essere disattivati:

  • Postgres
  • postfix
  • apache
  • tazze
  • cron
  • colombaia

Ma ssh non deve essere chiuso, poiché questo viene utilizzato per eseguire attività durante la modalità di manutenzione.

Ovviamente potrei scrivere uno script di shell che scorre su un elenco di servizi che vorrei disabilitare. Ma mi sembra di reinventare qualcosa che esiste già, ma che non conosco fino ad ora.


1
Che tipo di attività? Perchè ti serve?
ewwhite,

@ user430214 Ho aggiornato la domanda. Ho aggiunto: ovviamente potrei scrivere uno script di shell che scorre su un elenco di servizi che vorrei disabilitare. Ma mi sembra di reinventare qualcosa che esiste già, ma che non conosco fino ad ora.
Guettli,

Risposte:


55

Sembra molto simile ai runlevel , sostituiti con target in Systemd. Quindi, invece di scrivere uno script che avvia e arresta un elenco di servizi, è possibile creare un nuovo maintenance.targetcontenente solo i servizi necessari, come SSH. Naturalmente, SSH non è abbastanza utile senza rete, quindi in questo esempio un semplice emergency-net.targetviene modificato per includere SSH.

[Unit]
Description=Maintenance Mode with Networking and SSH
Requires=maintenance.target systemd-networkd.service sshd.service
After=maintenance.target systemd-networkd.service sshd.service
AllowIsolate=yes

Quindi, è possibile accedere alla modalità di manutenzione utilizzando

# systemctl isolate maintenance.target

e ritorno

# systemctl isolate multi-user.target

1
Grazie mille per questa risposta Mi mostra che chiedere è utile, anche se pensi che non ci sia una bella risposta se non scrivere uno script di shell sporco. Emergency-net.target è una soluzione semplice ed elegante - eccezionale :-)
guettli

Lo è certamente, poiché si occupa anche di tutte le dipendenze e non è necessario aggiornare lo script ogni volta che si installa un nuovo servizio.
Esa Jokinen,

3

Prima elenca i tuoi servizi e cerca i loro corrispondenti nomi di sistema.

Quindi creare un elenco e interrompere ciascun membro dell'elenco per accedere alla manutenzione, avviare ciascun membro dopo la manutenzione.


5
Perché non usare solo systemctl isolate?
Chris Down,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.