# java.security.AccessControlException for plugin

**URL:** <https://discuss.elastic.co/t/java-security-accesscontrolexception-for-plugin/96235>\
**Category:** Elasticsearch\
**Created:** [August 8, 2017, 9:59am UTC](https://discuss.elastic.co/t/java-security-accesscontrolexception-for-plugin/96235 "2017-08-08T09:59:01Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![makeyang](https://avatars.discourse-cdn.com/v4/letter/m/f05b48/32.png) [@makeyang](https://discuss.elastic.co/u/makeyang)\
**Post date:** [August 8, 2017, 9:59am UTC](https://discuss.elastic.co/t/java-security-accesscontrolexception-for-plugin/96235/1 "2017-08-08T09:59:01Z")

</div>

I build a plugin of my own and the plugin layout is below:  
${plugin\_root}/dict(this is a folder)  
${plugin\_root}/plugin-descriptor.properties  
${plugin\_root}/plugin-security.policy  
${plugin\_root}/a.jar  
${plugin\_root}/b.jar

and this plugin needs to read/write folder ${plugin\_root}/dict. so the content of plugin-security.policy is below:  
grant {  
permission java.io.FilePermission "-", "read";  
permission java.io.FilePermission "-", "write";  
};

but when running the plugin, it throw exception below:  
java.security.AccessControlException: access denied ("java.io.FilePermission" "${es-root}/plugins/token-lucene/dict" "write")

can anybody help to modified the policy file to pass this security check?

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [August 8, 2017, 10:40am UTC](https://discuss.elastic.co/t/java-security-accesscontrolexception-for-plugin/96235/2 "2017-08-08T10:40:41Z")

</div>

I don't know TBH but what I did in the past to solve a similar issue was by moving all my files to `config/pluginname/` dir.

That might help.

Also another "hack" is to reference the dir you want to use as a `path.repo` one. Nasty hack but it works for my tests. 😃

---

<div class="post-metadata">

**Author:** ![makeyang](https://avatars.discourse-cdn.com/v4/letter/m/f05b48/32.png) [@makeyang](https://discuss.elastic.co/u/makeyang)\
**Post date:** [August 8, 2017, 10:45am UTC](https://discuss.elastic.co/t/java-security-accesscontrolexception-for-plugin/96235/3 "2017-08-08T10:45:19Z")

</div>

@dadoonet  
when I move pluginname from pluin folder to config folder, the ES won't fetch this plugin

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [August 8, 2017, 11:27am UTC](https://discuss.elastic.co/t/java-security-accesscontrolexception-for-plugin/96235/4 "2017-08-08T11:27:48Z")

</div>

That's not what I meant. Sorry if it was unclear.

I was saying that you should put the `dict` part under `config/pluginname/dict` for example.  
The rest of the plugin should stay under `$ES_HOME/plugins`.

That should work I think.

---

<div class="post-metadata">

**Author:** ![rjernst](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/rjernst/32/6363_2.png) [@rjernst](https://discuss.elastic.co/u/rjernst)\
**Post date:** [August 9, 2017, 3:30am UTC](https://discuss.elastic.co/t/java-security-accesscontrolexception-for-plugin/96235/5 "2017-08-09T03:30:45Z")

</div>

Why are you trying to write something from your plugin per node? Should this instead be stored in the cluster state? Otherwise losing a node, you might lose what was written locally, or have discrepancies between nodes.

---

<div class="post-metadata">

**Author:** ![makeyang](https://avatars.discourse-cdn.com/v4/letter/m/f05b48/32.png) [@makeyang](https://discuss.elastic.co/u/makeyang)\
**Post date:** [August 9, 2017, 4:32am UTC](https://discuss.elastic.co/t/java-security-accesscontrolexception-for-plugin/96235/6 "2017-08-09T04:32:10Z")

</div>

it's a analysis plugin which is responsiable for segmentation. so this read/write is for corpus update/load

---

<div class="post-metadata">

**Author:** ![makeyang](https://avatars.discourse-cdn.com/v4/letter/m/f05b48/32.png) [@makeyang](https://discuss.elastic.co/u/makeyang)\
**Post date:** [August 10, 2017, 11:47am UTC](https://discuss.elastic.co/t/java-security-accesscontrolexception-for-plugin/96235/7 "2017-08-10T11:47:06Z")

</div>

help guys:  
this time I try to create class dynamic in plugin and it throws exception below:  
Caused by: java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "getClassLoader")  
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472) ~[?:1.8.0\_111]  
at java.security.AccessController.checkPermission(AccessController.java:884) ~[?:1.8.0\_111]  
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) ~[?:1.8.0\_111]  
at java.lang.ClassLoader.checkClassLoaderPermission(ClassLoader.java:1528) ~[?:1.8.0\_111]  
at java.lang.Thread.getContextClassLoader(Thread.java:1440) ~[?:1.8.0\_111]  
at com.jd.jsf.gd.util.ClassLoaderUtils.getCurrentClassLoader(ClassLoaderUtils.java:43) ~[?:?]  
at com.jd.jsf.gd.util.ClassLoaderUtils.forName(ClassLoaderUtils.java:97) ~[?:?]  
at com.jd.jsf.gd.util.ClassLoaderUtils.forName(ClassLoaderUtils.java:81) ~[?:?]  
at com.jd.jsf.gd.config.AbstractConsumerConfig.getProxyClass(AbstractConsumerConfig.java:215) ~[?:?]  
at com.jd.jsf.gd.config.ConsumerConfig.refer(Consu  
merConfig.java:91) ~[?:?]

my policy file is below:  
grant {  
permission java.lang.RuntimePermission "_", "_";  
};

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [August 10, 2017, 1:13pm UTC](https://discuss.elastic.co/t/java-security-accesscontrolexception-for-plugin/96235/8 "2017-08-10T13:13:32Z")

</div>

Please format your code using `</>` icon as explained in [this guide](https://discuss.elastic.co/t/about-the-elasticsearch-category/21). It will make your post more readable.

Or use markdown style like:

````
```
CODE
```

````

Did you read [https://www.elastic.co/guide/en/elasticsearch/plugins/current/plugin-authors.html#plugin-authors-jsm](https://www.elastic.co/guide/en/elasticsearch/plugins/current/plugin-authors.html#plugin-authors-jsm) and wrapped your code as explained?

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [September 7, 2017, 1:13pm UTC](https://discuss.elastic.co/t/java-security-accesscontrolexception-for-plugin/96235/9 "2017-09-07T13:13:39Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
