web-dev-qa-db-fra.com

Exécuter une recherche élastique en tant qu'utilisateur root

Je suis en train d’obtenir une erreur lorsque j’essaie de lancer une recherche élastique 5.0 avec la commande ./elasticsearch et d’obtenir une erreur en dessous.

[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

J'ai essayé de commencer par changer d'utilisateur et j'ai essayé Sudo ./elasticsearch et j'ai la même erreur ..__ Comment démarrer une recherche élastique en tant qu'utilisateur root?

13
Santosh Hegde

La cause première de ce problème est la suivante: ElasticSearch n'est pas autorisé à s'exécuter à partir du propriétaire racine. Il existe une autre possibilité pour ce problème "Le chemin Java est défini pour l'utilisateur root uniquement, pas pour tous les autres utilisateurs". Solution de ce problème:

Étape 1: Changez le propriétaire du répertoireasticSearch de la racine à l'autre utilisateur à l'aide de la commande . $ Sudowna -R current_User: Group_Name elasticsearch-5.5.0

Étape 2: Vérifiez que Java est défini dans le chemin d'accès aux classes pour l'utilisateur actuel [pas uniquement pour le compte root]. Si commande: $ Java -version ou echo $ Java_HOME donne un résultat vide. Cela signifie que nous devons définir Java dans classpath [variable système env.] Pour l'utilisateur actuel, puis suivez l'étape 3. sinon, démarrez le service elasticsearch. 

Étape 3: Éditez/etc/profile et ajoutez deux lignes selon votre répertoire système Export Java_HOME = "emplacement du répertoire Java"

export PATH = $ Java_HOME/bin: $ PATH Exécutez $ source source/etc/profile 

Après cela, exécutezasticSearch service. Cela a fonctionné pour moi parfaitement.

6
Rajeev Rathor

J'ai eu le même problème et j'ai dû me connecter avec un autre utilisateur. Mais auparavant, je devais lui octroyer les droits nécessaires pour exécuter bin/elasticsearch.

2
KatKat

Il y a deux façons de résoudre ce problème:

Méthode 1: Télécharger le fichier Zip n décompresser puis commencer par la commande suivante

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

Méthode 2:

vi bin/elasticsearch

Ajouter une propriété pour autoriser la racine:

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

Enregistrer et fermer . Vous pouvez commencer par root maintenant.

2
truekiller

Elasticsearch ne peut pas être exécuté en tant qu'utilisateur root. Elasticsearch lui-même limite cela. Un nouvel utilisateur nommé elasticsearch et un groupe nommé elasticsearch sont automatiquement créés lors de l’installation d’élasticsearch. Peut vérifier les entrées en utilisant les commandes suivantes 

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

Nous devons modifier la propriété de tous les fichiers liés à elasticsearch . Veuillez suivre les étapes mentionnées ci-dessous.

Pas:

1.Changez tous les fichiers liés à ES de la racine à elasticsearch à l'aide de l'exemple de commande ci-dessous. 

$ 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.Ouvrez le fichier /etc/default/elasticsearch et faites les choses suivantes

  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.Maintenant activer le service elasticsearch et démarrer

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

4.Tester elasticsearch en utilisant curl. Supposons que votre hôte soit sur 192.168.5.194 et que ES fonctionne sur le port 9200

$ curl -X GET ‘192.168.5.194:9200’

TERMINÉ!!

Réf. : https://stackoverflow.com/a/48390311/1445978

2
Devasish

C'est une erreur commune d'exécuter bin/elasticsearch à partir du dossier racine.

1

Créez un utilisateur distinct sans donner les privilèges Sudo . Ex: adduser elasticsearch Puis donnez la propriété du dossier à cet utilisateur Ex: chown -R elasticsearch:elasticsearch elasticsearch-folder Puis basculez sur cet utilisateur Ex: su elasticsearch Maintenant, essayez d’exécuter le service Ex: ./elasticsearch-xxx/bin/elasticsearch

Ceci a été demandé auparavant pour ES2 ( Comment exécuter Elasticsearch 2.1.1 en tant qu'utilisateur root sur une machine Linux

La même solution peut fonctionner pour 5.

Comme indiqué précédemment, vous ne devriez probablement pas si cela ..

0
jpindahouse