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";
};
我有点卡在这里,可能是因为我对用户和组的经验不足。
我在 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";
};