ElasticSearch 同义词路径的文件权限

File permission for ElasticSearch synonyms path

我有点卡在这里,可能是因为我对用户和组的经验不足。

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

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

原因:java.security.AccessControlException:访问被拒绝("java.io.FilePermission" "/var/www/laravelproject/storage/app/elasticquent_synonyms.txt" "read")

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

我也无法通过其他方式访问它,无法从我的网络应用程序写入 /etc/elasticsearch/analysis。无论如何,在我的实际项目之外使用同义词文件感觉不对。

任何人都可以提示我可以做些什么来规避这个问题吗?

事实上,这是 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";
};