如何 运行 Kafka 作为非 root 用户?
How to run Kafka as non-root user?
根据其 docs,Apache Kafka 默认登录到 /tmp/kafka-logs
。
由于 /tmp
在 Linux 中属于 root
,那么对我来说,这意味着你必须 运行 Kafka 作为 root
才能以便它正确登录到该位置。但是出于安全目的,我不希望它以 root 身份 运行 ,因此我试图弄清楚我的选择是什么。我相信 我必须在以下选项中做出选择:
- 使用
-Dkafka.logs.dir
命令行开关指定一个不同的位置(不属于root 拥有)来写入日志;或
- 提前修改系统(即,在启动 Kafka 之前),以便
/tmp/kafka-logs
与将要启动 Kafka 的用户属于同一用户(或者,通常,确保Kafka 用户对该目录具有 r/w/x 的正确权限);或
有人可以澄清(或更正)我对 Linux 权限和流程的理解是正确的,而且这是我仅有的两个选择吗?当然,如果还有任何其他选项可以让我以非 root 身份 运行 Kafka,请插话!
$ ls -ld /tmp
drwxrwxrwt 16 root root 32768 Sep 28 16:39 /tmp
第一个rwx
表示/tmp
对其所有者(root)可读、可写和可执行,第二个rwx
表示它对其所在组可读、可写和可执行(root),第三个rwx
表示所有人可读、可写、可执行。 (对于目录 "executable" 表示可以导航到)。
因此您的非特权用户可以将日志文件写入 /tmp
。如果其他用户已经创建了自己的 /tmp/kafka-logs
.
,则可能会出现问题
但是,从长远来看,将日志写入 /tmp
并不是一个可持续的策略。如果这是个人系统,一切都会发生,但在生产系统上,您不会期望 /tmp
拥有保留存储 space 或像 /var/log
这样的目录所具有的维护注意力。根据其名称,您可以猜测如果 space 开始 运行 时 /tmp
中的文件被认为是删除的合理游戏。
您链接的页面非常清楚 - 虽然有默认值,但他们的期望是您至少提供包含 broker.id
、logs.dir
和 zookeeper.connect
的属性文件.
因此,配置您喜欢的任何日志目录,由您的首选用户写入。
根据其 docs,Apache Kafka 默认登录到 /tmp/kafka-logs
。
由于 /tmp
在 Linux 中属于 root
,那么对我来说,这意味着你必须 运行 Kafka 作为 root
才能以便它正确登录到该位置。但是出于安全目的,我不希望它以 root 身份 运行 ,因此我试图弄清楚我的选择是什么。我相信 我必须在以下选项中做出选择:
- 使用
-Dkafka.logs.dir
命令行开关指定一个不同的位置(不属于root 拥有)来写入日志;或 - 提前修改系统(即,在启动 Kafka 之前),以便
/tmp/kafka-logs
与将要启动 Kafka 的用户属于同一用户(或者,通常,确保Kafka 用户对该目录具有 r/w/x 的正确权限);或
有人可以澄清(或更正)我对 Linux 权限和流程的理解是正确的,而且这是我仅有的两个选择吗?当然,如果还有任何其他选项可以让我以非 root 身份 运行 Kafka,请插话!
$ ls -ld /tmp
drwxrwxrwt 16 root root 32768 Sep 28 16:39 /tmp
第一个rwx
表示/tmp
对其所有者(root)可读、可写和可执行,第二个rwx
表示它对其所在组可读、可写和可执行(root),第三个rwx
表示所有人可读、可写、可执行。 (对于目录 "executable" 表示可以导航到)。
因此您的非特权用户可以将日志文件写入 /tmp
。如果其他用户已经创建了自己的 /tmp/kafka-logs
.
但是,从长远来看,将日志写入 /tmp
并不是一个可持续的策略。如果这是个人系统,一切都会发生,但在生产系统上,您不会期望 /tmp
拥有保留存储 space 或像 /var/log
这样的目录所具有的维护注意力。根据其名称,您可以猜测如果 space 开始 运行 时 /tmp
中的文件被认为是删除的合理游戏。
您链接的页面非常清楚 - 虽然有默认值,但他们的期望是您至少提供包含 broker.id
、logs.dir
和 zookeeper.connect
的属性文件.
因此,配置您喜欢的任何日志目录,由您的首选用户写入。