我有这个问题,想看看业界的最佳实践。
我正在编写一个使用开源日志记录库的软件。该库的功能之一是能够创建循环日志文件。例如,如果最大日志大小为 2GB,则当达到限制时,将创建一个新文件并重命名旧文件。
我的应用程序必须以 root 身份运行,因为它需要访问较低范围的端口号。因此,应用程序创建的日志只能由根用户读取。
我希望任何用户都可以读取日志,而不仅仅是 root 用户。我怎样才能做到这一点?是否有解决此问题的行业标准?
最佳答案
可以赋予非根进程特定的管理员权限——比如绑定(bind)到特权端口的能力。这比以 root
用户身份简单地运行应用程序的全有或全无方法要安全得多,并且被认为是更好的解决方案。
在这种情况下,您可能希望为其提供 CAP_NET_BIND_SERVICE
功能。这answer是如何做到这一点的良好起点。
主要的两种方式似乎是
- 创建一个以 root 身份运行的
setuid
包装程序,并删除除您需要的功能之外的所有功能,然后exec
实际程序 - 使用
setcap
设置单个系统上可执行文件的功能。
有关功能的更多信息,请从 Linux 终端运行以下命令
$ man 7 capabilities
关于linux - 以 root 身份运行的应用程序,创建任何人都可以读取的日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31644318/