Linux

禁用所有服務,除了 ssh

  • March 18, 2021

如何在現代(基於 systemd)的 linux 發行版上禁用除 ssh 之外的所有服務?

我需要實施維護模式

所有這些服務都需要關閉:

  • postgres
  • 後綴
  • 阿帕奇
  • 杯子
  • cron
  • 鴿舍

但是 ssh 不能關閉,因為它習慣於在維護模式下執行任務。

當然,我可以編寫一個 shell 腳本來循環我想禁用的服務列表。但這感覺就像我重新發明了一些已經存在但我現在還不知道的東西。

這聽起來很像runlevels,替換為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

引用自:https://serverfault.com/questions/885117