systemdには、ユニット(サービスなど)で使用できるオプションが多数あります。それらの3つはReadWriteDirectories
、ReadOnlyDirectories
およびInaccessibleDirectories
と呼ばれます。仮想マシンでDebian 8.5を使用しています。 systemdの一部の(新しい?)バージョンでは、ReadWritePaths
、ReadOnlyPaths
およびInaccessiblePaths
と呼ばれます。このオプションを使用して、アクセス可能なディレクトリをホワイトリストに登録できますか?
一部のディレクトリのみにアクセスすることがわかっているアプリケーションがあります。このディレクトリへのアクセスを制限したいと思います。しかし、ReadWritePaths
を使用してこのディレクトリを指定しても効果がないようです。 manpageは言う
ReadWriteDirectories =にリストされているディレクトリには、名前空間内から外部と同じアクセス権でアクセスできます。
しかし、このオプションで指定されていないディレクトリは、同じ方法でアクセスできるようです。指定されていないものすべてへのアクセスを拒否するにはどうすればよいですか?それとも機能しないのは私のシステム次第ですか?誰かがInaccessibleDirectories=/
は、オプションがInaccessiblePaths
と呼ばれる、新しいバージョンのマンページ以外のすべてをブラックリストに追加することを示しています。
InaccessiblePaths =にリストされているエントリは、ネームスペース内のプロセスからアクセスできなくなり、ReadWritePaths =またはReadOnlyPaths =で指定されたものを含め、他のマウントポイントに含まれない場合があります。
さて、ReadWriteDirectories
とReadOnlyDirectories
を使用してディレクトリのホワイトリストをセットアップする可能性はありますか?それが不可能な場合、なぜReadWriteDirectories
が存在しないのに、何もしないように見えるのですか?
ReadWritePaths
とそのilkは、ブラックリスト特定のパスであるオプションと一緒に使用した場合にのみ非常に役立ちます。アプリケーションが特定のパスにのみアクセスできる必要があるという事実がわかっている場合は、次のいくつかの組み合わせを実行できます。
ProtectSystem=strict
を設定し、ReadWritePaths
で書き込むために特定のディレクトリをホワイトリストに登録します。ReadOnlyPaths
を設定し、ReadWritePaths
を使用して特定のディレクトリをホワイトリストに登録します。 /
を使用してこれを行うと、ProtectSystem
の機能のスーパーセットが実行されます(/ dev、/ proc、および/ sysも制限されます)。 PrivateDevices
、ProtectKernelTunables
、およびProtectControlGroups
を使用して、これらのディレクトリを保護することもできます。ホワイトリストの読み取りアクセスについて具体的に尋ねていたので:
次のように、InaccessiblePaths
でこれを実現できる場合があります。
[Service]
...
InaccessiblePaths=/
ReadOnlyPaths=/etc/myapp.conf
systemd.exec(5) を参照してください