web-dev-qa-db-ja.com

ルートユーザーとしてエラスティック検索を実行する

./elasticsearchコマンドでエラスティック検索5.0を開始しようとしたときにエラーが発生しました。エラーが発生しました。

[2016-11-23T13:44:09,507][WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: Java.lang.RuntimeException: can not run elasticsearch as root
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.Java:116) ~[elasticsearch-5.0.1.jar:5.0.1]
    at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.Java:103) ~[elasticsearch-5.0.1.jar:5.0.1]
    at org.elasticsearch.cli.SettingCommand.execute(SettingCommand.Java:54) ~[elasticsearch-5.0.1.jar:5.0.1]
    at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.Java:96) ~[elasticsearch-5.0.1.jar:5.0.1]
    at org.elasticsearch.cli.Command.main(Command.Java:62) ~[elasticsearch-5.0.1.jar:5.0.1]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.Java:80) ~[elasticsearch-5.0.1.jar:5.0.1]
    at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.Java:73) ~[elasticsearch-5.0.1.jar:5.0.1]
Caused by: Java.lang.RuntimeException: can not run elasticsearch as root
    at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.Java:96) ~[elasticsearch-5.0.1.jar:5.0.1]
    at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.Java:155) ~[elasticsearch-5.0.1.jar:5.0.1]
    at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.Java:286) ~[elasticsearch-5.0.1.jar:5.0.1]
    at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.Java:112) ~[elasticsearch-5.0.1.jar:5.0.1]
    ... 6 more

他のユーザーに切り替えて開始しようとしましたが、Sudo ./elasticsearchを試しましたが、同じエラーが発生しました。 rootユーザーとしてエラスティック検索を開始するには?

19
Santosh Hegde

Elasticsearchは、rootユーザーを実行できません。 Elasticsearch自体がこれを制限しています。 elasticsearchをインストールすると、elasticsearchという名前の新しいユーザーとelasticsearchという名前のグループが自動的に作成されます。次のコマンドを使用してエントリを確認できます

$ Sudo less /etc/passwd | grep "elasticsearch"
$ Sudo less /etc/group | grep "elasticsearch"

すべての elasticsearch関連ファイル の所有権を変更する必要があります。以下の手順に従ってください。

手順:

1.以下のexample cmdを使用して、すべてのES関連ファイルの所有権をルートからelasticsearchに変更します。

$ Sudo chown elasticsearch:elasticsearch -R /usr/share/elasticsearch
$ Sudo chown elasticsearch:elasticsearch -R /var/log/elasticsearch
$ Sudo chown elasticsearch:elasticsearch -R /var/lib/elasticsearch
$ Sudo chown elasticsearch:elasticsearch -R /etc/default/elasticsearch
$ Sudo chown elasticsearch:elasticsearch -R /etc/elasticsearch

2.開く/etc/default/elasticsearchファイルし、次のことを行います

  a)Java_HOME=your/Java/home/path
  b)add the following entries at the end
      i)   START_DAEMON=true
      ii)  ES_USER=elasticsearch
      iii) ES_GROUP=elasticsearch

3.今すぐelasticsearchサービスを有効にして開始

  $ Sudo systemctl enable elasticsearch
  $ Sudo systemctl start elasticsearch
  $ Sudo systemctl status elasticsearch

4. curlを使用してelasticsearchをテストします。ホストIPが192.168.5.194であり、ESがポート9200で実行されているとします

$ curl -X GET ‘192.168.5.194:9200’

完了!!

参照: https://stackoverflow.com/a/48390311/1445978

8
Devasish

この問題の根本的な原因は次のとおりです。ElasticSearchはルート所有者からの実行を許可されていません。この問題には別の可能性があります。「Javaパスは、他のすべてのユーザーに対してではなく、rootユーザーに対してのみ設定されます」。この問題の解決策:

ステップ1:コマンドでelasticSearchディレクトリの所有権をルートから他のユーザーに変更します。 $ Sudo chown -R current_User:Group_Name elasticsearch-5.5.

Setp 2: Check Java現在のユーザーのクラスパスに設定する(ルートだけでなく)。コマンドの場合:$ Java -versionまたはecho $ Java_HOMEコマンド空の結果を与えます。つまり、現在のユーザーのクラスパス[システム環境変数]でJavaを設定し、ステップ3に従ってください。それ以外の場合はelasticsearchサービスを開始する必要があります。

ステップ3:/ etc/profileを編集し、システムごとに2行追加しますdir export Java_HOME = "Java dir location"

export PATH = $ Java_HOME/bin:$ PATH $ source source/etc/profileを実行します

この後、elasticSearchサービスを実行します。私にとっては完璧に機能しました。

7
Rajeev Rathor

この問題を解決するには2つの方法があります:

方法1: Zipファイルnをダウンロードして解凍し、次のコマンドで開始します

bin/elasticsearch -Des.insecure.allow.root=true -d

方法2:

vi bin/elasticsearch

ルートを許可するためのプロパティを追加します。

ES_Java_OPTS="-Des.insecure.allow.root=true"

保存して閉じます。 rootで今すぐ開始できます。

3
truekiller

同じ問題があり、別のユーザーと接続する必要がありました。しかし最初に、私は彼にbin/elasticsearchを実行する権利を与えなければなりませんでした。

2
KatKat

よくある間違いは、ルートフォルダーからbin/elasticsearchを実行することです。

1

Sudo特権を与えずに別のユーザーを作成します。例:adduser elasticsearch次に、そのユーザーにフォルダの所有権を付与しますex:chown -R elasticsearch:elasticsearch elasticsearch-folderその後、そのユーザーに切り替えます。例:su elasticsearch次に、サービスを実行してみます。例:./elasticsearch-xxx/bin/elasticsearch

返信が少し遅れましたが、今でも関連があります。 this に従うと同じ問題に直面しました。最後の手段は、解凍されたフォルダーの所有権を変更することでした。

ただやったSudo chown <nonrootuser> <unzipped-es-folder> -Rトリックを行います。

追伸:Ubuntu 17.04 LTSでそれをやっていた。

0
samairtimer

これはES2に対して以前に尋ねられました( LinuxマシンでElasticsearch 2.1.1をrootユーザーとして実行する方法

同じソリューションが5でも機能する場合があります。

前に述べたように、おそらくそうすべきではありません。

0
jpindahouse