私たちの製品では、daemontools を使用してサービスを作成しました。私のサービスの1つは次のようになります。
/service/test/run
/service/test/log/run (has multilog command to log into ./main dir)
/service/test/log/main/..
すべてのプロセスとそのディレクトリは root ユーザーが所有しています。現在、このように変更するセキュリティ要件があります。
- サービスは root 以外のユーザーで実行する必要があります。
- ログのメイン ディレクトリは、ユーザーとグループだけが読み取れるようにする必要があります。
このために、「log」ディレクトリの下にある「run」ファイルを変更する必要があります。また、その下の「メイン」ディレクトリの権限を変更する必要があります。
「/service」の下にあるこれらのファイルはすべて、test-1.0-0.rpm によって所有されていることに注意してください。rpm を更新すると、既存の実行ファイルが上書きされ、次のようなエラーが発生しました。
multilog: fatal: unable to lock directory ./main: access denied
実行時に「実行」ファイルをオーバーライドすべきではないことはわかっています。rpm スクリプトの %post セクションで次の手順を実行する予定です。
//Stop service
svc -d /service/test/log
//Moving the main directory
mv /service/test/log/main /service/test/log/main_old
//Updated run file has code to create main with limited permissions.
//Start service
svc -u /service/test/log
一部の記事では、「log/main」の下に「lock」ファイルを再作成することを提案しました。「メイン」ディレクトリを移動せずにこれを行う他のクリーンな方法はありますか? そうでない場合、上記の手順を実行しても安全ですか?