web-dev-qa-db-fra.com

Désactivez tous les services, sauf ssh

Comment puis-je désactiver tous les services sauf ssh sur les distributions Linux modernes (basées sur systemd)?

J'ai besoin d'implémenter un mode maintenance.

Tous ces services doivent être arrêtés:

  • postgres
  • suffixe
  • Apache
  • tasses
  • cron
  • pigeonnier

Mais ssh ne doit pas être arrêté, car il est utilisé pour effectuer des tâches pendant le mode de maintenance.

Bien sûr, je pourrais écrire un script Shell qui fait une boucle sur une liste de services que je voudrais désactiver. Mais j'ai l'impression de réinventer quelque chose qui existe déjà, mais que je ne connais pas jusqu'à présent.

31
guettli

Cela ressemble beaucoup à runlevels , remplacé par cibles dans Systemd. Ainsi, au lieu d'écrire un script qui démarre et arrête une liste de services, vous pouvez créer un nouveau maintenance.target contenant uniquement les services nécessaires, comme SSH. Bien sûr, SSH n'est pas très utile sans réseau, donc dans cet exemple un simple emergency-net.target est modifié pour inclure 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

Ensuite, vous pouvez entrer dans votre mode de maintenance en utilisant

# systemctl isolate maintenance.target

et retour

# systemctl isolate multi-user.target
55
Esa Jokinen

Commencez par répertorier vos services et recherchez leurs noms système correspondants.

Ensuite, créez une liste et arrêtez chaque membre de la liste pour entrer dans la maintenance, démarrez chaque membre après la maintenance.

3
Nils