Soweit ich weiß, wird systemd nicht besonders gut damit umgehen. Wie ich es verstehe, möchten Sie das Verhalten von überschreiben sshd.service
, nicht wahr?
Zum Glück ist systemd für diese Art von Dingen ausgelegt. Geben Sie einfach Ihre Service-Definition ein /etc/systemd/system/ssh.service
, führen Sie systemctl daemon-reload
den Befehl aus , um die Unit-Dateien neu zu laden, und systemd verwendet diese Konfiguration automatisch anstelle des Systems ssh.service
.
Willst du auch systemctl enable mysshd.service
arbeiten? Kein Problem. Fügen Sie in dem [Install]
Abschnitt Ihrer Unit-Datei eine Zeile hinzu, die besagt Alias=mysshd.service
. systemctl reenable ssh.service
Führen Sie dann den Befehl aus , damit das System die Einheiten-Symlinks repariert, und Sie sind goldrichtig.
Nun, Sie haben nicht genau angegeben, was mysshd.service
zu tun ist. Wenn es ganz anders ist als normal ssh.service
, großartig! Verwenden Sie die obige Methode. Wenn Sie jedoch nur eine Kleinigkeit ändern möchten, verwenden Sie den falschen Ansatz. Mit systemd können Sie "Snippets" von Unit-Dateien erstellen, die über die normalen Unit-Dateien gelegt werden. Auf diese Weise können Sie einzelne Anweisungen hinzufügen oder überschreiben, während der Rest der Einheitendatei Aktualisierungen vom Paketmanager erhält. Dazu erstellen /etc/systemd/system/ssh.d/my-custom-config.conf
Sie einfach (Sie können ändern my-custom-config.conf
, was Sie möchten, und Sie können auch mehrere Überschreibungsdateien haben). Platzieren Sie in dieser Datei alle Anweisungen, die Sie ändern oder zu den üblichen hinzufügen möchten ssh.service
. Sie können sogar Alias=
Direktiven hinzufügen , damit das systemctl start mysshd.service
funktioniert! Denken Sie daran, auszuführensystemctl daemon-reload
nachdem Sie fertig sind (und, wenn Sie verwendet haben Alias=
, systemctl reenable ssh.service
).
Als Nebenwirkung , nie, nie systemd Unit - Dateien ändern in /usr/lib/systemd
. Je! Der Dateisystem-Hierarchie-Standard erfordert, dass /usr
er als schreibgeschützt behandelt wird. In der Praxis bedeutet dies, dass der Paketmanager /usr
(mit Ausnahme von /usr/local
) behandelt und Sie nicht berühren, was der Paketmanager behandelt - insbesondere, weil alles, was Sie ändern, wahrscheinlich irgendwann überschrieben wird. Legen Sie stattdessen Ihre Sachen in irgendwo wie /etc
.