我在 Ubuntu Linux 上有一个程序,它创建一个logs/error.log
具有权限660
( rw-rw----
) 或640
( rw-r-----
) 的文件。但我希望文件权限始终为666
( rw-rw-rw-
) (包括程序创建文件时)。
限制:
- 我不能修改程序。因此,我无法更改
660
程序使用新文件的模式。 - 该程序可以随时重新创建文件。因此,单一手动执行的方案
chmod
是不适合的。 - 我需要添加一些权限,但不能减去。因此,
umask
并不setfacl
适合。
如果所有其他更理智的选项都没有了(比如为神秘的日志创建程序选择一个合适的用户/组,该程序与您想要从 docker 主机执行的任何操作兼容,或者修改程序的配置以使其使用正确的权限),您可以使用以下
LD_PRELOAD
技巧:用你的神秘程序用来创建文件的任何系统调用来挂钩它(可能是
creat
或open
,检查strace
)。然后比较文件名,并mode
仅修改您的日志文件。这需要你知道如何用 C 编程。
您可以使用它
inotify
来跟踪创建文件或目录的位置,以便在创建时更新其权限在 docker 容器中运行的最终解决方案:
由于该解决方案设置了全局可写权限,因此不建议按原样使用。尝试找到另一种使用更安全权限的方法。
感谢 AlexD 的提示!