실수
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
. 그렇지 않으면 루트를 제외한 다른 사람이 실행하는 서비스나 응용 프로그램에 쓸 수 없습니다.
다음을 사용하여 문제를 해결할 수 있습니다.
chmod 755 /var/log
777
또한 elasticsearch 디렉터리 및 로그 파일에 대한 권한이 필요하지 않습니다 . 위 명령의 변형을 사용하여 권한을 설정할 수 있습니다.
chmod -R 755 /var/log/elasticsearch
답변2
다음과 같이 즉시 액세스할 수 있습니다.
sudo nano /var/log/elasticsearch/elasticsearch.log