【问题标题】:File permission for ElasticSearch synonyms pathElasticSearch 同义词路径的文件权限
【发布时间】:2018-11-14 20:56:11
【问题描述】:

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

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

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

原因:java.security.AccessControlException: access denied ("java.io.FilePermission" "/var/www/laravelproject/storage/app/elasticquent_synonyms.txt" "read")

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

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

谁能给我一个提示,告诉我我可以做些什么来规避这个问题?

【问题讨论】:

  • 你找到解决方案了吗?
  • 不,很遗憾没有。
  • 我自己找到的,我会尽快发布解决方案
  • 如果您认为我的回答解决了您的问题或对您的解决方案最有帮助,您能否@beast caged 请接受我的回答。谢谢你。干杯!

标签: php linux apache elasticsearch laravel-5.2


【解决方案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";
};

【讨论】:

  • 感谢 (+1) - 在 Mac 上,文件位于 Macintosh HD/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents /Home/jre/lib/security/java.policy。无法编辑它,因为它说文件无法编辑(可能有一种解决方法 - 没有搜索它 - 只是决定将它保存在 ES /config dir 中)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多