間違い
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
ことは正しいですか?これにより、ファイル所有者とそのディレクトリ(明白な読み取り/書き込み/実行権限を持つ)にファイルを開く権限がないことがどのように可能になりますか?systemd
elasticsearch
答え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