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. 그렇지 않으면 루트를 제외한 다른 사람이 실행하는 서비스나 응용 프로그램에 쓸 수 없습니다.

다음을 사용하여 문제를 해결할 수 있습니다.

chmod 755 /var/log

777또한 elasticsearch 디렉터리 및 로그 파일에 대한 권한이 필요하지 않습니다 . 위 명령의 변형을 사용하여 권한을 설정할 수 있습니다.

chmod -R 755 /var/log/elasticsearch

답변2

다음과 같이 즉시 액세스할 수 있습니다.

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

관련 정보