Linux
禁用所有服務,除了 ssh
如何在現代(基於 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