Desabilita todos os serviços, exceto o ssh

30

Como posso desativar todos os serviços, exceto o ssh, em distribuições de linux modernas (baseadas em systemd)?

Eu preciso implementar um modo de manutenção .

Todos esses serviços precisam estar inativos:

  • postgres
  • postfix
  • apache
  • xícaras
  • cron
  • dovecot

Mas o ssh não deve ser desligado, pois isso é usado para realizar tarefas durante o modo de manutenção.

Claro que eu poderia escrever um script de shell que faça um loop sobre uma lista de serviços que eu gostaria de desabilitar. Mas parece que estou reinventando algo que já existe, mas que não conheço até agora.

    
por guettli 25.11.2017 / 13:51

2 respostas

53

Isso soa muito como runlevels , substituído por destinos Systemd. Portanto, em vez de escrever um script que inicia e interrompe uma lista de serviços, você pode criar um novo maintenance.target contendo apenas os serviços necessários, como o SSH. Obviamente, o SSH não é muito útil sem a rede, portanto, neste exemplo, um simples emergency-net.target é modificado para incluir o 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

Em seguida, você pode inserir seu modo de manutenção usando

# systemctl isolate maintenance.target

e de volta

# systemctl isolate multi-user.target
    
por 25.11.2017 / 15:35
4

Primeiro, liste seus serviços e procure por seus nomes de sistema correspondentes.

Em seguida, crie uma lista e pare cada membro da lista para inserir a manutenção, inicie cada membro após a manutenção.

    
por 25.11.2017 / 15:02