環境
- systemd 255
やりたいこと
例えば、User=www-data で設定して起動してるSystemdのサービスがあったとする。 ただしソケットファイルの削除やログファイルなど、では=ではroot権限で何か準備して、ExecStart= では www-data で実行したい。
昔は
昔は PermissionsStartOnly=true をつけると動いていたが最近のSystemdでは動作しない。どうやら非推奨になって削除されたっぽい。
現在では
プレフィックスとして + をコマンドの先頭に付与する。
ExecStart=+/path/to/command ExecStart=/main/command
のような感じ。
昔の記事だとPrefix!と!!も使えたらしいが現在では削除されているので + のみ覚えれば良い。
時系列でまとめると以下
| バージョン | 年 | できごと | 詳細 |
|---|---|---|---|
| systemd 231 | 2016 | 実行可能Prefix+の追加 | ExecStart=+のように+を付けることで、User=やGroup=の設定を無視して完全な権限でコマンドを実行できる機能が導入された |
| systemd 235 | 2017 | Prefix!と!!の追加 | さらに追加のPrefixが導入された |
| systemd 240 | 2018 | PermissionsStartOnlyの非推奨化 | PermissionsStartOnlyが非推奨(deprecated)となり、代替として実行可能Prefix+の使用が推奨されるようになった |
| systemd 245 | 2020 | Prefix+の挙動修正 | +Prefixを付けたコマンドでは、PrivateTmp=yesの設定が無効になり、/tmpディレクトリへのアクセスが許可されるように挙動が明確化された |
| systemd 258 | 2021 | Prefix!と!!の削除 | 以前追加された!と!!のPrefixは削除され、現在は+などが主に使われている |