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?
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.
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.
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.
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É!!
C'est une erreur commune d'exécuter bin/elasticsearch à partir du dossier racine.
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 ..