user433500
user433500

Reputation: 385

access denied even though I specified policy.url in java.security

I am reading the tutorial on java security by oracle. (http://download.oracle.com/javase/tutorial/security/toolsign/rstep4.html)

I duplicate all the files and everything from the tutorial basically.

I am able to run the file with security manager using the following approach in unix:

java -Djava.security.manager -Djava.security.policy=recvPolicy -cp sCount.jar Count ../../test

But when I try to specify a new policy.url in the java.security file like this:

policy.url.1=file:${java.home}/lib/security/java.policy
policy.url.2=file:${user.home}/.java.policy
policy.url.3=file:/home/myhome/SigningTest/recvPolicy

it gives me an exception when I run:

java -Djava.security.manager -cp sCount.jar Count ../../test

The exception is this:

Exception in thread "main" java.security.AccessControlException: access denied (java.io.FilePermission ../../test read)
 at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
 at java.security.AccessController.checkPermission(AccessController.java:546)
 at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
 at java.lang.SecurityManager.checkRead(SecurityManager.java:871)
 at java.io.FileInputStream.<init>(FileInputStream.java:100)
 at java.io.FileInputStream.<init>(FileInputStream.java:66)
 at Count.main(Count.java:17)

thanks for feedback

Upvotes: 1

Views: 817

Answers (1)

naikus
naikus

Reputation: 24472

Okay, I did a quick test of this and it works for me. So the only thing that could be causing this problem (my guess) is that you have two jdks installed on your unix box. So make sure that the "java" that you are using for the command line execution is the same version whose java.security you have modified.

The default sun java 6 security file (if you are using ubuntu) is located at:

/etc/java-6-sun/security/java.security

So make sure you are editing the correct version of java.security

Upvotes: 2

Related Questions