Назад | Перейти на главную страницу

Отключить все службы, кроме ssh

Как я могу отключить все службы, кроме ssh, в современных дистрибутивах Linux (на основе systemd)?

Мне нужно реализовать Режим технического обслуживания.

Все эти службы должны быть отключены:

Но ssh нельзя выключать, так как он используется для выполнения задач в режиме обслуживания.

Конечно, я мог бы написать сценарий оболочки, который перебирает список служб, которые я хотел бы отключить. Но мне кажется, что я заново изобретаю что-то, что уже существует, но чего я не знаю до сих пор.

Это очень похоже на уровни выполнения, заменено на цели в Systemd. Итак, вместо написания сценария, запускающего и останавливающего список служб, вы можете создать новый maintenance.target содержащие только необходимые сервисы, такие как SSH. Конечно, SSH не очень полезен без сети, поэтому в этом примере простой emergency-net.target модифицирован для включения 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

Затем вы можете войти в режим обслуживания, используя

# systemctl isolate maintenance.target

и назад

# systemctl isolate multi-user.target

Сначала перечислите свои службы и найдите их соответствующие имена systemd.

Затем создайте список и остановите каждого члена списка, чтобы перейти к обслуживанию, запустите каждого члена после обслуживания.