【问题标题】:java rmi - access denied ("java.net.SocketPermission" "127.0.0.1:1099" "connect,resolve")java rmi - 访问被拒绝 ("java.net.SocketPermission" "127.0.0.1:1099" "connect,resolve")
【发布时间】:2015-08-13 02:22:56
【问题描述】:

我已经在网上寻找答案,但没有任何帮助。 我正在尝试运行我创建的 RMI 服务器。 在服务器主我有这部分:

System.setSecurityManager(new RMISecurityManager());
...
...
...
Naming.rebind("//localhost/ForumSite", obj);

我的策略文件 :server,policy(... 指向文件夹)-

grant codeBase "file:C:/.../workspace//ForunServer/bin/" {
    permission java.security.AllPermission;
    permission java.net.SocketPermission "localhost:1099-", "listen, connect, resolve";

};

grant {
 permission java.lang.RuntimePermission "setSecurityManager";
  permission java.lang.RuntimePermission "createSecurityManager";
  permission java.lang.RuntimePermission "usePolicy";
  };

我正在尝试运行 Windows 操作系统,我在另一个控制台中写道:javaw rmiregistry 在另一个(从 bin 文件夹中):

java -Djava.security.manager -Djava.security.policy=server.policy ServerSideImp

我不断收到错误:

访问被拒绝 ("java.net.SocketPermission" "127.0.0.1:1099" “连接,解决”)

我确保策略文件位于同一位置,

这是我将 -Djava.security.debug=access,failure 添加到运行时的运行结果-

访问:允许访问(“java.io.FilePermission” "C:\Users...\ForumServer\bin" "read") 访问:允许访问 ("java.lang.RuntimePermission" "setSecurityManager") 访问:访问 允许(“java.security.SecurityPermission” “getProperty.security.provider.1”)访问:允许访问 (“java.security.SecurityPermission”“getProperty.security.provider.2”) 访问:允许访问(“java.security.SecurityPermission” “getProperty.security.provider.3”)访问:允许访问 (“java.security.SecurityPermission”“getProperty.security.provider.4”) 访问:允许访问(“java.security.SecurityPermission” “getProperty.security.provider.5”)访问:允许访问 (“java.security.SecurityPermission”“getProperty.security.provider.6”) 访问:允许访问(“java.security.SecurityPermission” “getProperty.security.provider.7”)访问:允许访问 (“java.security.SecurityPermission”“getProperty.security.provider.8”) 访问:允许访问(“java.security.SecurityPermission” “getProperty.security.provider.9”)访问:允许访问 (“java.security.SecurityPermission” “getProperty.security.provider.10”)访问:允许访问 (“java.security.SecurityPermission” “getProperty.security.provider.11”)访问:允许访问 ("java.lang.RuntimePermission" "accessClassInPackage.sun.security.provider") 访问:允许访问 ("java.lang.reflect.ReflectPermission" "suppressAccessChecks") 访问: 允许访问(“java.util.PropertyPermission”“java.security.egd” “读取”)访问:允许访问(“java.security.SecurityPermission” “getProperty.securerandom.source”)访问:允许访问 ("java.security.SecurityPermission" "putProviderProperty.SUN") 访问: 允许访问 ("java.util.PropertyPermission" "*" "read,write") 访问:允许访问(“java.util.PropertyPermission”“os.arch” “读取”)访问:允许访问(“java.lang.RuntimePermission” “loadLibrary.net”)访问:允许访问(“java.io.FilePermission” "C:\Program Files\Java\jre1.8.0_45\bin\net.dll" "read") 访问:访问 允许(“java.util.PropertyPermission”“java.net.preferIPv4Stack” “读取”)访问:允许访问(“java.util.PropertyPermission” "java.net.preferIPv6Addresses" "read") 访问:允许访问 ("java.lang.RuntimePermission" "loadLibrary.net") 访问:访问 允许(“java.io.FilePermission”“C:\Program Files\Java\jre1.8.0_45\bin\net.dll" "read") 访问:允许访问 ("java.util.PropertyPermission" "impl.prefix" "read") 访问:访问 允许(“java.lang.reflect.ReflectPermission”“suppressAccessChecks”) 访问:允许访问(“java.util.PropertyPermission” "sun.net.spi.nameservice.provider.1" "read") 访问:允许访问 ("java.net.NetPermission" "getNetworkInformation") 访问:访问 允许(“java.net.NetPermission”“getNetworkInformation”)访问: 允许访问(“java.net.NetPermission”“getNetworkInformation”) 访问:允许访问(“java.net.NetPermission” "getNetworkInformation") 访问:允许访问 ("java.net.NetPermission" "getNetworkInformation") 访问:访问 允许(“java.net.NetPermission”“getNetworkInformation”)访问: 允许访问(“java.net.NetPermission”“getNetworkInformation”) 访问:允许访问(“java.net.NetPermission” "getNetworkInformation") 访问:允许访问 ("java.net.NetPermission" "getNetworkInformation") 访问:访问 允许(“java.net.NetPermission”“getNetworkInformation”)访问: 允许访问(“java.net.NetPermission”“getNetworkInformation”) 访问:允许访问(“java.lang.RuntimePermission” "fileSystemProvider") 访问:允许访问 ("java.util.PropertyPermission" "user.dir" "read") 访问:访问 允许 ("java.util.PropertyPermission" "os.version" "read") 访问: 允许访问(“java.util.PropertyPermission”“sun.jnu.encoding” “读取”)访问:允许访问(“java.util.PropertyPermission” “java.nio.file.spi.DefaultFileSystemProvider”“读取”)访问:访问 允许(“java.io.FilePermission”“C:\Users\URI\AppData\Local\Temp” “读取”)访问:允许访问(“java.io.FilePermission” "C:\Users\URI\AppData\Local\Temp" "read") 访问:允许访问 ("java.io.FilePermission" "C:\Users\URI\AppData\Local\Temp" "读取") 访问:允许访问(“java.lang.RuntimePermission” “loadLibrary.net”)访问:允许访问(“java.io.FilePermission” "C:\Program Files\Java\jre1.8.0_45\bin\net.dll" "read") 访问:访问 允许(“java.lang.RuntimePermission”“loadLibrary.nio”)访问: 允许访问(“java.io.FilePermission”“C:\Program Files\Java\jre1.8.0_45\bin\nio.dll" "read") 访问:允许访问 ("java.util.PropertyPermission" "sun.nio.fs.ensureAccurateMetadata" “读取”)访问:允许访问(“java.util.PropertyPermission” "java.rmi.server.randomIDs" "read") 访问:允许访问 (“java.util.PropertyPermission”“java.rmi.server.hostname”“读取”) 访问:允许访问(“java.security.SecurityPermission” “getProperty.networkaddress.cache.ttl”)访问:允许访问 ("java.util.PropertyPermission" "sun.net.inetaddr.ttl" "read") 访问: 允许访问(“java.security.SecurityPermission” “getProperty.networkaddress.cache.negative.ttl”)访问:访问被拒绝 ("java.net.SocketPermission" "URI-PC" "resolve") java.lang.Exception: 堆栈跟踪 在 java.lang.Thread.dumpStack(未知来源) 在 java.security.AccessControlContext.checkPermission(未知来源) 在 java.security.AccessController.checkPermission(未知来源) 在 java.lang.SecurityManager.checkPermission(未知来源) 在 java.lang.SecurityManager.checkConnect(未知来源) 在 java.net.InetAddress.getLocalHost(未知来源) 在 sun.rmi.transport.tcp.TCPEndpoint.(未知来源) 在 sun.rmi.transport.LiveRef.(未知来源) 在 sun.rmi.transport.LiveRef.(未知来源) 在 sun.rmi.server.UnicastServerRef.(未知来源) 在 java.rmi.server.UnicastRemoteObject.exportObject(未知来源) 在 java.rmi.server.UnicastRemoteObject.(未知来源) 在 java.rmi.server.UnicastRemoteObject.(未知来源) 在 ServerSideImp.(ServerSideImp.java:18) 在 ServerSideImp.main(ServerSideImp.java:62) 访问:允许访问(“java.security.SecurityPermission”“getPolicy”)访问: 允许访问 ("java.io.FilePermission" "C:\Users...\ForumServer\bin" "read") 访问:ProtectionDomain 失败的域 (文件:/C:/Users/.../ForumServer/bin/) sun.misc.Launcher$AppClassLoader@73d16e93 java.security.Permissions@6f94fa3e (("java.lang.RuntimePermission" "setSecurityManager") ("java.lang.RuntimePermission" "createSecurityManager") ("java.lang.RuntimePermission" "exitVM") ("java.lang.RuntimePermission" "usePolicy") ("java.lang.RuntimePermission" "stopThread") (“java.util.PropertyPermission”“java.specification.version”“读取”) (“java.util.PropertyPermission”“java.version”“读取”) (“java.util.PropertyPermission”“os.arch”“读取”) (“java.util.PropertyPermission”“java.specification.vendor”“读取”) (“java.util.PropertyPermission”“java.vm.specification.name”“读取”) (“java.util.PropertyPermission”“java.vm.vendor”“读取”) (“java.util.PropertyPermission”“path.separator”“读取”) (“java.util.PropertyPermission”“os.version”“读取”) (“java.util.PropertyPermission”“file.separator”“读取”) (“java.util.PropertyPermission”“line.separator”“读取”) (“java.util.PropertyPermission”“java.vm.specification.vendor”“读取”) (“java.util.PropertyPermission”“java.specification.name”“读取”) (“java.util.PropertyPermission”“java.vendor.url”“读取”) (“java.util.PropertyPermission”“java.vendor”“读取”) (“java.util.PropertyPermission”“java.vm.version”“读取”) (“java.util.PropertyPermission”“java.vm.name”“读取”) ("java.util.PropertyPermission" "java.vm.specification.version" "读取") ("java.util.PropertyPermission" "os.name" "读取") (“java.util.PropertyPermission”“java.class.version”“读取”) ("java.net.SocketPermission" "localhost:0" "listen,resolve") ("java.io.FilePermission" "\C:\Users...\ForumServer\bin-" "读取") )

访问:允许访问(“java.util.PropertyPermission” "java.rmi.server.useLocalHostName" "read") 访问:允许访问 (“java.util.PropertyPermission”“sun.rmi.transport.logLevel”“读取”) 访问:允许访问(“java.util.logging.LoggingPermission” “控制”)访问:允许访问 ("java.util.logging.LoggingPermission" "控制") 访问:访问 允许(“java.util.PropertyPermission” "sun.rmi.transport.tcp.logLevel" "read") 访问:允许访问 ("java.util.logging.LoggingPermission" "控制") 访问:访问 允许(“java.util.logging.LoggingPermission”“控制”)访问: 允许访问(“java.util.PropertyPermission” "sun.rmi.transport.tcp.maxConnectionThreads" "read") 访问:访问 允许(“java.util.PropertyPermission” "sun.rmi.transport.tcp.threadKeepAliveTime" "read") 访问:访问 允许(“java.util.PropertyPermission” "sun.rmi.transport.proxy.logLevel" "read") 访问:允许访问 ("java.util.logging.LoggingPermission" "控制") 访问:访问 允许(“java.util.logging.LoggingPermission”“控制”)访问: 允许访问(“java.util.PropertyPermission” "sun.rmi.transport.proxy.connectTimeout" "read") 访问:访问 允许(“java.util.PropertyPermission” "sun.rmi.transport.proxy.eagerHttpFallback" "read") 访问:访问 允许(“java.util.PropertyPermission”“http.proxyHost”“读取”) 访问:允许访问(“java.util.PropertyPermission”“proxyHost” “读取”)访问:允许访问(“java.util.PropertyPermission” "java.rmi.server.disableHttp" "read") 访问:允许访问 ("java.util.PropertyPermission" "sun.rmi.transport.tcp.readTimeout" “读取”)访问:允许访问(“java.util.PropertyPermission” "java.rmi.server.hostname" "read") 访问:允许访问 (“java.util.PropertyPermission” “sun.misc.ProxyGenerator.saveGeneratedFiles”“读取”)访问:访问 允许(“java.util.PropertyPermission” "sun.rmi.dgc.server.gcInterval" "read") 访问:允许访问 ("java.lang.RuntimePermission" "loadLibrary.net") 访问:访问 允许(“java.io.FilePermission”“C:\Program Files\Java\jre1.8.0_45\bin\net.dll" "read") 访问:允许访问 ("java.util.PropertyPermission" "" "read,write") 访问:访问 允许 ("java.util.PropertyPermission" "" "read,write") 访问: 允许访问(“java.util.PropertyPermission” "sun.net.useExclusiveBind" "read") 访问:允许访问 ("java.net.SocketPermission" "localhost:0" "listen,resolve") 访问: 允许访问(“java.lang.RuntimePermission”“modifyThreadGroup”) 访问:允许访问(“java.lang.RuntimePermission” "modifyThreadGroup") 访问:允许访问 ("java.lang.RuntimePermission" "getClassLoader") 访问:访问 允许 ("java.lang.RuntimePermission" "modifyThreadGroup") 访问: 允许访问(“java.lang.RuntimePermission”“modifyThread”)访问: 允许访问(“java.lang.RuntimePermission”“setContextClassLoader”) 访问:允许访问(“java.lang.RuntimePermission”“modifyThread”) 访问:允许访问(“java.util.PropertyPermission” "sun.rmi.dgc.logLevel" "read") 访问:允许访问 ("java.util.logging.LoggingPermission" "控制") 访问:访问 允许(“java.util.logging.LoggingPermission”“控制”)访问: 允许访问(“java.util.PropertyPermission” "java.rmi.dgc.leaseValue" "read") 访问:允许访问 (“java.util.PropertyPermission”“sun.rmi.dgc.checkInterval”“读取”) 访问:允许访问(“java.util.logging.LoggingPermission” “控制”)访问:允许访问 ("java.util.logging.LoggingPermission" "控制") 访问:访问 允许(“java.util.PropertyPermission” "sun.rmi.runtime.schedulerThreads" "read") 访问:允许访问 ("java.lang.RuntimePermission" "sun.rmi.runtime.RuntimeUtil.getInstance") 访问:允许访问 ("java.lang.RuntimePermission" "setContextClassLoader") 访问:访问 允许(“java.util.PropertyPermission”“java.rmi.server.hostname” “读取”)访问:允许访问(“java.lang.reflect.ReflectPermission” "suppressAccessChecks") 访问:允许访问 ("java.lang.RuntimePermission" "setContextClassLoader") 访问:访问 允许 ("java.lang.RuntimePermission" "getClassLoader") 访问: 允许访问(“java.lang.RuntimePermission”“modifyThreadGroup”) 访问:允许访问(“java.lang.RuntimePermission”“modifyThread”) 访问:允许访问(“java.lang.RuntimePermission” "setContextClassLoader") 访问:允许访问 ("java.lang.RuntimePermission" "modifyThread") 访问:允许访问 ("java.lang.RuntimePermission" "modifyThreadGroup") 访问:访问 允许 ("java.lang.RuntimePermission" "modifyThreadGroup") 访问: 允许访问(“java.lang.RuntimePermission”“modifyThread”)访问: 允许访问(“java.lang.RuntimePermission”“modifyThread”)访问: 允许访问(“java.lang.RuntimePermission”“modifyThread”)访问: 允许访问(“java.lang.reflect.ReflectPermission” "suppressAccessChecks") 访问:允许访问 ("java.lang.reflect.ReflectPermission" "suppressAccessChecks") 访问: 允许访问(“java.util.PropertyPermission” "java.rmi.server.hostname" "read") 访问:允许访问 ("java.util.PropertyPermission" "sun.rmi.transport.connectionTimeout" “读取”)访问:允许访问(“java.util.PropertyPermission” "sun.rmi.transport.tcp.handshakeTimeout" "read") 访问:访问 允许(“java.util.PropertyPermission” "sun.rmi.transport.tcp.responseTimeout" "read") 访问:允许访问 ("java.lang.RuntimePermission" "sun.rmi.runtime.RuntimeUtil.getInstance") 访问:允许访问 ("java.net.SocketPermission" "localhost" "resolve") 访问:访问 允许(“java.util.PropertyPermission” "jdk.net.ephemeralPortRange.low" "read") 访问:允许访问 ("java.lang.RuntimePermission" "loadLibrary.net") 访问:访问 允许(“java.io.FilePermission”“C:\Program Files\Java\jre1.8.0_45\bin\net.dll" "read") 访问:允许访问 ("java.util.PropertyPermission" "jdk.net.ephemeralPortRange.high" “读取”)访问:访问被拒绝(“java.net.SocketPermission” “127.0.0.1:1099”“连接,解决”)java.lang.Exception:堆栈跟踪 在 java.lang.Thread.dumpStack(未知来源) 在 java.security.AccessControlContext.checkPermission(未知来源) 在 java.security.AccessController.checkPermission(未知来源) 在 java.lang.SecurityManager.checkPermission(未知来源) 在 java.lang.SecurityManager.checkConnect(未知来源) 在 java.net.Socket.connect(未知来源) 在 java.net.Socket.connect(未知来源) 在 java.net.Socket.(未知来源) 在 java.net.Socket.(未知来源) 在 sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(未知 资源) 在 sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(未知 资源) 在 sun.rmi.transport.tcp.TCPEndpoint.newSocket(未知来源) 在 sun.rmi.transport.tcp.TCPChannel.createConnection(未知来源) 在 sun.rmi.transport.tcp.TCPChannel.newConnection(未知来源) 在 sun.rmi.server.UnicastRef.newCall(未知来源) 在 sun.rmi.registry.RegistryImpl_Stub.rebind(未知来源) 在 java.rmi.Naming.rebind(未知来源) 在 ServerSideImp.main(ServerSideImp.java:63) 访问:允许访问(“java.security.SecurityPermission”“getPolicy”)访问: 允许访问 ("java.io.FilePermission" "C:\Users...\ForumServer\bin" "read") 访问:ProtectionDomain 失败的域 (文件:/C:/Users/.../ForumServer/bin/) sun.misc.Launcher$AppClassLoader@73d16e93 java.security.Permissions@2c7b84de (("java.lang.RuntimePermission" "setSecurityManager") ("java.lang.RuntimePermission" "createSecurityManager") ("java.lang.RuntimePermission" "exitVM") ("java.lang.RuntimePermission" "usePolicy") ("java.lang.RuntimePermission" "stopThread") (“java.util.PropertyPermission”“java.specification.version”“读取”) (“java.util.PropertyPermission”“java.version”“读取”) (“java.util.PropertyPermission”“os.arch”“读取”) (“java.util.PropertyPermission”“java.specification.vendor”“读取”) (“java.util.PropertyPermission”“java.vm.specification.name”“读取”) (“java.util.PropertyPermission”“java.vm.vendor”“读取”) (“java.util.PropertyPermission”“path.separator”“读取”) (“java.util.PropertyPermission”“os.version”“读取”) (“java.util.PropertyPermission”“file.separator”“读取”) (“java.util.PropertyPermission”“line.separator”“读取”) (“java.util.PropertyPermission”“java.vm.specification.vendor”“读取”) (“java.util.PropertyPermission”“java.specification.name”“读取”) (“java.util.PropertyPermission”“java.vendor.url”“读取”) (“java.util.PropertyPermission”“java.vendor”“读取”) (“java.util.PropertyPermission”“java.vm.version”“读取”) (“java.util.PropertyPermission”“java.vm.name”“读取”) ("java.util.PropertyPermission" "java.vm.specification.version" "读取") ("java.util.PropertyPermission" "os.name" "读取") (“java.util.PropertyPermission”“java.class.version”“读取”) ("java.net.SocketPermission" "localhost:0" "listen,resolve") ("java.io.FilePermission" "\C:\Users...\ForumServer\bin-" "读取") )

访问:允许访问(“java.lang.RuntimePermission”“exitVM.1”)

但我真的不明白这里发生了什么, 任何帮助都会很感激。

【问题讨论】:

  • “我在网上寻找答案” - 我想知道那种燃烧的气味是从哪里来的 :-)

标签: java rmi


【解决方案1】:

删除安全管理器。 RMI 不需要它,除非您使用的是 RMI 代码库功能,而您不是。

【讨论】:

  • 但是,这并不是 OP 问题的准确解决方案。另外,您可以从他的政策文件中查看-->grant { permission java.lang.RuntimePermission "setSecurityManager"; permission java.lang.RuntimePermission "createSecurityManager"; permission java.lang.RuntimePermission "usePolicy"; };
  • @shekharsuman 直到真正的事情出现为止。我们可以遍历-Djava.security.debug=access,failure 的整个megillah,我们无疑会发现他的.policy 文件没有被加载,或者加载得太晚,但这几乎可以肯定是没有意义的。你不需要setSecurityManager 的权限,除非你已经在一个安全管理器下运行,在这种情况下你无论如何都不能安装另一个,所以我看不到setSecurityManager 的相关性。
  • @EJP 我尝试只使用 java 和文件名运行它,仍然是同样的错误。我需要以其他方式执行此操作吗?
  • @boaz 除非您使用安全管理器运行,否则您不可能得到 SecurityManager 异常,这就是这个答案告诉您不要做的事情。所以不要这样做。
猜你喜欢
  • 1970-01-01
  • 2015-06-30
  • 1970-01-01
  • 2015-09-11
  • 2023-03-16
  • 1970-01-01
  • 2014-09-24
  • 2014-06-22
  • 2015-02-23
相关资源
最近更新 更多