Fedora を設定する前に systemd のキホンを抑えておきます。私は、割と開発者が想定している流儀を気にします。理由は、その流儀に沿った設定は、将来、systemd 側で何か変更があったときに、トラブルが発生しにくいからです。

ディレクトリ

設定する上で知っておくべき主要なディレクトリは、以下の 2つです。

  • パッケージ(rpm)がインストールする設定ファイルは、/usr/lib/systemd/system/ にインストールされます。
  • 管理用のスクリプトを動かしたいなどで、サーバ管理者が、独自にインストールする設定ファイルは、/usr/local/lib/systemd/system/ に置きます※。ネットを検索すると /etc/systemd/system/ に置くという例をたくさん見かけますが、やめましょう。

man systemd.unit の Table 1

systemd ユニットの設定変更

パッケージでインストールした systemd ユニットの設定をちょっとだけ変更したいというのは、よくあります。/usr/lib/systemd/system/ 以下のファイルを書き換えるような乱暴なことをする人は少ないと思いますが、これも標準的な方法が用意されているので、それに従います。

sshd.socket を変更したい場合は、以下のように入力します。

# systemctl edit sshd.socket

エディタが起動しますので、### Anything between here と ### Lines below this comment の間に、新しい設定項目を追加します。sshd のポートを変更してみます。

### Editing /etc/systemd/system/sshd.socket.d/override.conf
### Anything between here and the comment below will become the new contents of the file

[Socket]
ListenStream=10022

### Lines below this comment will be discarded

### /usr/lib/systemd/system/sshd.socket
# [Unit]
# Description=OpenSSH Server Socket
# Documentation=man:sshd(8) man:sshd_config(5)
# Conflicts=sshd.service
#
# [Socket]
# ListenStream=22
# Accept=yes
#
# [Install]
# WantedBy=sockets.target

設定変更したい ListenStream だけではなく、セクション([Socket])も必要です。ない場合はエラーになり、設定が無視されますので注意しましょう。