Problem:
In my Java application (not an applet) I wish to limit certain file operations to all classes except a list/group/package of classes that should not be restricted.
Specifically, I would like to limit...
- File reads
- File writes
- File creation
- File deletion
...such that they can only be done within the current working directory for all but the unrestricted classes.
SecurityManager attempt:
I have tried to implement a subclass of the SecurityManager class that implements this behaviour, however it seems that when checks are made the file information provided does not give more than just the filename (unless I am missing something?).
Also, I don't quite understand how in this case I could find out the class which the call is being made from, to allow me to determine whether to allow the operation or throw an exception. Is there any way I could get all the information I need for this approach to work?
Policy-based attempt:
I am also aware that Java policies are intended for restricting the actions of classes, including things such as file operations. However, I've really struggled to find a good resource to learn how I could go about solving my problems using a .policy file.
Summarisation of question:
1) Are there any alternative approaches that may be preferable to those I've mentioned?
2) Is this possible using a SecurityManager? Am I missing out on how I should actually be implementing such an approach?
3) Is this possible using a policy file? Are there any good resources I've missed on this front?
I'm really not adversed to any amount of hard work I need to invest in achieving this- I'm just unsure as to how I should approach it properly. I'm also sorely lacking in good resources to teach me enough about the two possible approaches I've mentioned, to allow me to implement it myself. Above all, I'm not afraid of significant reading where required!
Thanks for any help you can give, in advance.
-Djava.security.debug=All
to the command line, the output can be quite helpful in working out why your policy file is not working – Southwest