2016-09-28 136 views
0

根據其docs,Apache Kafka默認登錄到/tmp/kafka-logs如何以非root用戶身份運行Kafka?

由於/tmp在Linux中屬於root,所以對我而言,這意味着您必須運行Kafka作爲root才能正確登錄到該位置。但是出於安全性考慮,我不希望它以root身份運行,所以我試圖弄清楚我的選擇是什麼。我相信有以下之間進行選擇:在-Dkafka.logs.dir命令行開關

  1. 用於指定一個不同的位置(即不屬於root)的日誌被寫入;或
  2. 提前修改系統(也就是在啓動Kafka之前),以便/tmp/kafka-logs與將啓動Kafka的用戶擁有相同的用戶(或者,一般來說,確保Kafka用戶擁有正確的權限r/w/x到該目錄);或

有人可以澄清(或糾正)我對Linux權限和流程的承諾是否正確,並且這些是我唯一的兩種選擇?當然,如果還有其他選項可以讓我以非根的方式運行Kafka,請加入!

+1

在我遇到過的每個Linux和UNIX上,'/ tmp /'是'rwxrwxrwx'。 – slim

+1

「/ tmp在Linux中屬於root」,這可能是真的,但所有權不是最終所有在FS權限中,檢查/ tmp的模式爲@slim建議 – rmlan

+0

謝謝@rmlan(+1) - 請在他的回答下面,關於Mac和Linux之間的區別,請參閱我的** slim **問題。我對你有同樣的問題! – smeeb

回答

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

第一rwx意味着/tmp可讀,可寫和可執行由其所有者(根),該第二rwx意味着它可讀,可寫和可執行由其組(根),和第三rwx意味着它的可讀性,可寫性和可執行性都由大家。 (對於「可執行」目錄意味着它可以導航到)。

所以,你的非特權用戶可以寫入日誌文件/tmp。如果其他用戶已經創建了自己的/tmp/kafka-logs,則可能會出現問題。

然而,寫日誌/tmp是不是在長期可持續發展的戰略。如果這是個人系統,任何事情都會發生,但在生產系統上,您不希望/tmp擁有保留的存儲空間或維護注意力,即像/var/log這樣的目錄。通過它的名字,你可以猜測/tmp中的文件被認爲是公平的遊戲,如果空間開始用完。

你鏈接的頁面是非常明確的 - 雖然有違約,他們的期望是,作爲最低限度要提供含有broker.idlogs.dirzookeeper.connect屬性文件。

因此,配置您喜歡的任何日誌目錄,可由您的首選用戶寫入。

+0

謝謝@slim(+1) - 雖然我將在Linuc盒子上運行Kafka,但我的開發機器是Mac。在我的Mac上:'ls -ld/tmp'產生:'lrwxr-xr-x @ 1 root wheel 11 Mar 12 2016/tmp - > private/tmp'。 **您能否確認這只是Linux和Mac之間的差異?**再次感謝! – smeeb

+1

請注意/ tmp旁邊的箭頭。這表明/ tmp實際上是另一個目錄(在這種情況下爲/ private/tmp)的符號鏈接。在大多數情況下(如果不是全部),符號鏈接的權限與目標(/ private/tmp)的權限無關。我敢打賭,如果你做了'ls -ld/private/tmp',你會看到苗條所指的權限。 – rmlan

相關問題