ElasticSearch同义词路径的文件权限

时间:2018-06-05 11:26:15

标签: php linux apache elasticsearch laravel-5.2

我有点被困在这里,可能是由于我对用户和团体的经验不足。

我在Laravel 5.2中使用ElasticSearch并设置了一个同义词文件,默认情况下该文件位于 / etc / ES / analysis 目录中。我想暂时更新一次,所以我想我会把它移到Laravel的存储目录中。之后我会重新打开节点,所以每次添加同义词时我都不必重新索引。

我的问题是我现在无法将该目录作为 synonyms_path 添加到我的节点设置中,我收到错误:

引起:java.security.AccessControlException:拒绝访问(" java.io.FilePermission"" /var/www/laravelproject/storage/app/elasticquent_synonyms.txt" ;"阅读")

可能是因为ES和Web服务由不同的用户或类似的东西运行!?我尝试调整权限无济于事。无论如何,Laravel中的整个存储都可以被任何人阅读。

我无法以相反的方式访问它,或者无法从我的网络应用程序写入 / etc / elasticsearch / analysis 。无论如何,将同义词文件放在我的实际项目之外是不对的。

有人能给我一些暗示我能做些什么来规避这个问题吗?

1 个答案:

答案 0 :(得分:1)

实际上,这是Java安全策略问题,要解决该问题,您需要找到 vjm 的位置: 通常,它应位于:/usr/lib/jvm/java-8-oracle/jre/lib/security/java.policy 下 使用sudo权限编辑文件,然后在策略文件的末尾添加此授权配置。

grant {
    permission java.io.FilePermission "/var/www/laravelproject/storage/app/elasticquent_synonyms.txt", "read,write";
};