Elasticsearchはログファイルを開くことができません。権限が拒否されました。

Elasticsearchはログファイルを開くことができません。権限が拒否されました。

間違い

CentOSにElasticsearchをインストールしましたが、次のrpmように起動しようとするとこのエラーが発生しますsystemctl start elasticsearch

Feb 20 21:08:34 server.cberdata.org systemd[1]: Started Elasticsearch.
Feb 20 21:08:34 server.cberdata.org elasticsearch[4226]: OpenJDK 64-Bit Server VM warning: Cannot open file /var/log/elasticsearch/gc.log due to Permission denied
Feb 20 21:08:51 server.cberdata.org systemd[1]: elasticsearch.service: main process exited, code=exited, status=78/n/a
Feb 20 21:08:51 server.cberdata.org systemd[1]: Unit elasticsearch.service entered failed state.
Feb 20 21:08:51 server.cberdata.org systemd[1]: elasticsearch.service failed.

特に: Cannot open file /var/log/elasticsearch/gc.log due to Permission denied


特権

権限/var

drwxr-xr-x  21 root root  4096 Feb 11 19:10 var

権限/var/log

drwxrwxr--  12 root  root   4096 Feb 20 21:00 log

権限/var/log/elasticsearch

drwxrwxrwx  2 elasticsearch elasticsearch        4096 Feb 20 20:56 elasticsearch

権限/var/log/elasticsearch/gc.log
(手助けであることを確認するために手動で作成しましたが、それでもエラーには影響しません):

-rwxrwxrwx  1 elasticsearch elasticsearch      0 Feb 20 20:56 gc.log

/var/log権限を設定するとdrwxrwxrwx問題が解決するようです。しかし、安全ではないようで、次のような新しいエラーが発生するため、躊躇しています。

/etc/cron.daily/logrotate:
error: skipping "/var/log/exim_mainlog" because parent directory has insecure permissions (It's world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation.

このサービスがユーザーとして実行されているsystemctlことは正しいですか?これにより、ファイル所有者とそのディレクトリ(明白な読み取り/書き込み/実行権限を持つ)にファイルを開く権限がないことがどのように可能になりますか?systemdelasticsearch

答え1

ディレクトリに権限が/var/logあります774。実行ビットが設定されていないため、Elasticsearchユーザーはディレクトリに移動してディレクトリelasticsearchとディレクトリgc.logに含まれるファイルを取得できません。

通常、この/var/logディレクトリには権限があります755。そうしないと、root以外の誰かが実行しているサービスやアプリケーションに書き込むことはできません。

以下を使用して問題を解決できます。

chmod 755 /var/log

777また、elasticsearchディレクトリおよびログファイルに対する権限は必要ありません。上記のコマンドのバリアントを使用して権限を設定できます。

chmod -R 755 /var/log/elasticsearch

答え2

次のようにすぐにアクセスできます。

sudo nano /var/log/elasticsearch/elasticsearch.log

関連情報