我有一组日志文件,它们属于不同的所有者。每个日志文件都对应一组程序中的一个,并且权限是组可写的,这样启动程序的任何人都可以写入日志。(文件为 660,目录为 774)。
我想logrotate
不时地使用来归档日志。由于我们小组中的每个人都可以读取文件,因此我假设 logrotate 可以由用户执行。但是,logrotate 会尝试使用与原始文件相同的所有者创建轮换文件。如果活动用户拥有所有文件,则一切正常,否则 logrotate 会失败,因为用户无权创建其他人拥有的文件。
有办法解决这个问题吗?到目前为止,我考虑过(并放弃了)以下选项
- 以 root 身份运行 logrotate。理想情况下,我会从其他程序中触发 logrotate,该程序可由组中的任何人运行。即使那些没有 sudo 权限的人也可以运行。
- 该
create
选项可能对后续的日志轮转有帮助,因为活动用户将拥有所有日志文件。但它对第一次调用 logrotate 不会有帮助。 - 该
su
选项需要 root 权限,并且可能没有帮助,因为日志文件不一定都属于同一个用户。 - 根据
cp
/mv
和编写自己的脚本> ${file}
。如果可能的话,我想利用现有的工具。