Apu*_*urv 3 java accesscontrolexception elasticsearch elasticsearch-plugin
我正在编写一个elasticsearch插件,它依赖于从磁盘上的文件中读取数据.当我尝试在我的代码中访问此文件时,我得到以下异常.
Caused by: java.security.AccessControlException: access denied ("java.io.FilePermission" "patient_similarity/codes.txt" "read")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
at java.security.AccessController.checkPermission(AccessController.java:884)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkRead(SecurityManager.java:888)
at java.io.FileInputStream.<init>(FileInputStream.java:127)
at org.gatech.lucene.search.store.DotProductStore.<init>(DotProductStore.java:22)
at org.gatech.lucene.search.store.DotProductStore.newInstance(DotProductStore.java:71)
at org.gatech.elasticsearch.CommonsPlugin.onModule(CommonsPlugin.java:39)
Run Code Online (Sandbox Code Playgroud)
有没有推荐的方法来访问elasticsearch插件中的文件?有没有快速的解决方法来访问我的插件中的文件?
Val*_*Val 13
一种方法是通过禁用安全管理器来启动Elasticsearch进程,如下所示:
bin/elasticsearch -Dsecurity.manager.enabled=false
Run Code Online (Sandbox Code Playgroud)
从ES 2.x开始,Java安全管理器默认启用,之前已禁用.但请注意,此选项将在2.3中删除,因为它会使您的ES流程容易受到攻击.
执行此操作的正确方法是自定义安全策略并使用策略文件指定要访问的文件:
grant {
permission java.io.FilePermission "/tmp/patient_similarity/codes.txt", "read,write";
};
Run Code Online (Sandbox Code Playgroud)
您可以在四个不同的位置添加此策略:
$JAVA_HOME/lib/security/java.policy/home/elasticsearch/.java.policy-Djava.security.policy=someURLplugin-security.policy文件中.由于您正在开发插件,您当然应该使用选项4.
| 归档时间: |
|
| 查看次数: |
4908 次 |
| 最近记录: |