2016-09-28 15 views
0

docsによれば、Apache Kafkaはデフォルトで/tmp/kafka-logsにログします。Kafkaをroot以外のユーザーとして実行するにはどうすればよいですか?

/tmpはLinuxでrootが所有しているので、私には、その場所に正しくログオンするためには、カフカをrootとして実行する必要があることを意味します。しかし、セキュリティ上の理由から、私はそれをrootとして実行したくないので、私は自分のオプションが何であるか把握しようとしています。私は、次のどちらかを選択する必要がを信じ

  1. に書き込まれるログの別の場所を(それはルートによって所有されていない)を指定する-Dkafka.logs.dirコマンドラインスイッチを使用します。または
  2. /tmp/kafka-logsがKafkaを開始するユーザーと同じユーザーによって所有されるように、事前にシステムを変更します(または、Kafkaを開始する前に)。一般的には、Kafkaユーザーにはそのディレクトリへのr/w/xへの正しいアクセス許可)。または

誰かが私のLinuxの許可とプロセスの下見が正しいこと、そしてそれらが私の唯一の2つの選択肢であることを明確にすることができますか?もちろん、私がカフカを非ルートとして走らせることができる他のオプションがあれば、チャイムを入れてください!

+1

'/ tmp /'は、今まで出会ったすべてのLinuxとUNIXで 'rwxrwxrwx'です。 – slim

+1

"/ tmpはLinuxのrootが所有しています"、これは当てはまるかもしれませんが、所有権はFSの権限では終わりではありません、@ tlimのモードを確認してください@Slimは提案しました – rmlan

+0

ありがとう@rmlan彼の答えの下で、MacとLinuxの違いについての**スリム**についての私の質問を参照してください。私はあなたのために同じ質問をしています! – 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.id,logs.dirzookeeper.connectのプロパティファイルを指定する必要があります。

したがって、好きなユーザーが書き込み可能な任意のログディレクトリを構成します。

+0

Thanks @slim(+1) - 私はLinucボックスでKafkaを実行しますが、私の開発マシンはMacです。私のMacでは: 'ls -ld/tmp'は' lrwxr-xr-x @ 1ルートホイール11 Mar 12 2016/tmp-> private/tmp'を生成します。 **これは単にLinuxとMacの間の矛盾であることを確認できますか?**もう一度ありがとう! – smeeb

+1

/tmpの横にある矢印に注意してください。これは、/ tmpが実際に別のディレクトリ(この場合は/ private/tmp)へのシンボリックリンクであることを示しています。ほとんどの場合(すべてではないにしても)、シンボリックリンクのパーミッションはターゲット(/ private/tmp)のパーミッションには関係しません。 'ls -ld/private/tmp'を実行すると、slimが参照していた権限が表示されます。 – rmlan

関連する問題