如何以非root用户身份运行Kafka?

时间:2016-09-28 15:54:19

标签: java linux apache-kafka sudo

根据其docs,默认情况下Apache Kafka会记录到<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>worldbuilding.stackexchange.com - Background</title> </head> <body> <div class="container"></div> <div id="footer"></div> </body> </html>

由于/tmp/kafka-logs在Linux中归/tmp所有,那么对我而言,这意味着您必须将Kafka作为root运行才能正确登录到该位置。但是出于安全考虑,我不希望它以root身份运行,因此我想弄清楚我的选择是什么。我相信我必须在以下选项之间做出选择:

  1. 使用root命令行开关指定要写入的日志的其他位置(不属于root用户);或
  2. 提前修改系统(即,在启动Kafka之前),以便-Dkafka.logs.dir由与将启动Kafka的用户相同的用户拥有(或者,通常,确保Kafka用户对该目录的r / w / x具有正确的权限);或
  3. 有人可以澄清(或纠正)我对Linux权限和流程的承诺是否正确,那些是我唯一的选择吗?当然,如果有任何其他选项可以让我以非root身份运行Kafka,请加入!

1 个答案:

答案 0 :(得分:2)

$ ls -ld /tmp
drwxrwxrwt 16 root root 32768 Sep 28 16:39 /tmp

第一个rwx表示/tmp是其所有者(root)可读,可写和可执行的,第二个rwx表示它的组可读,可写和可执行({1}} ),第三个rwx表示所有人可读,可写和可执行。 (对于目录“可执行”,意味着它可以导航到)。

因此,您的非特权用户可以将日志文件写入/tmp。如果其他用户已经创建了自己的/tmp/kafka-logs,则可能会出现问题。

但是,从长期来看,将日志写入/tmp并不是一项可持续发展的策略。如果这是个人系统,任何事情都会发生,但在生产系统上,您不希望/tmp拥有预留的存储空间或像/var/log这样的目录所具有的维护关注。根据它的名字,如果空间开始耗尽,您可以猜测/tmp中的文件被认为是公平的删除游戏。

您链接的页面非常清晰 - 虽然有默认值,但他们期望您至少提供包含broker.idlogs.dirzookeeper.connect的属性文件。< / p>

因此,配置您喜欢的任何日志目录,您的首选用户可以写入。