http://blog.sina.com.cn/jingleq[订阅][手机订阅]
字体大小: 正文
认识java[深入java虚拟机]:jvm安全管理器(2007-05-29 09:15:58)
  当java应用程序启动的时候,它还没有安全管理器,但是,应用程序通过将一个指向java.lang.SecurityManager或是其子类的实例给setSecurityManger(),以此来安装安全管理器,这个动作是可选的。
  在java1.2版本以前java.lang.SecurityManager是一个抽象类,而在1.2中的类java.lang.SecurityManager是一个具体的类。
  在现阶段,我们使用较多的是SecurityManager中的checkPermission(java.java.security.Permission)方法。其中java自带的常用的Permissin有如下:SocketPermission(网络),PropertyPermission(属性),FilePermission(文件操作),举例使用FilePermission:
我想限定只有在/temp/目录下有写操作
1.首先修改%JRE_HOME%/lib/security/java.policy文件,在grant{}里面添加资源
permission java.io.FilePermission "/temp/*", "write,read";
2.在程序里面可以这样来检查是否具有该文件的写操作权:
SecurityManager sm = new SecurityManager();
System.setSecurityManager(sm);
if (sm != null) {
 Permission p = new FilePermission("/temp/*", "write");
 System.out.println(p.getActions());
 sm.checkPermission(p);  
}
  也可以定义我们自己的Permission,只要继承java.security.Permission。继承的子类必须重写以下方法:
public boolean equals(Object obj);
public String getActions();
//返回一个字符串,可随意,如FilePermission返回的是第二个参数:read,write这些东西
public int hashCode();
public boolean implies(Permission permission);
//这个方法定意了是否有该权限,如果有返回true,否则返回false
 
  同样我们可以在java.policy中配置权限
加载中,请稍候...
  • 评论加载中,请稍候...

验证码:请点击后输入验证码  收听验证码

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

相关博文
读取中...
推荐博文
读取中...