在我们的产品中,我们使用 daemontools 创建了服务。我的一项服务看起来像这样,
/service/test/run
/service/test/log/run (has multilog command to log into ./main dir)
/service/test/log/main/..
所有进程及其目录都归 root 用户所有。现在有一个安全要求要改成这样,
- 服务应以非 root 用户运行。
- 日志主目录应该只对用户和组可读。
为此,我必须更改“日志”目录下的“运行”文件。我还需要更改它下面的“主”目录的权限。
请注意,“/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”文件。在不移动“主”目录的情况下,还有其他更清洁的方法吗?如果没有,执行上述步骤是否安全?