[
https://issues.apache.org/jira/browse/HADOOP-5731?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12701959#action_12701959
]
Steve Loughran commented on HADOOP-5731:
----------------------------------------
catching and logging the setAccessible operation allows the method call to
proceed, but other problems surface
1. I get some access control problems
{code}
[sf-startdaemon-debug] java.io.IOException:
java.security.AccessControlException: access denied
(javax.security.auth.AuthPermission getSubject)
[sf-startdaemon-debug] at
java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
[sf-startdaemon-debug] at
java.security.AccessController.checkPermission(AccessController.java:546)
[sf-startdaemon-debug] at
java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
[sf-startdaemon-debug] at
javax.security.auth.Subject.getSubject(Subject.java:268)
[sf-startdaemon-debug] at
org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:84)
[sf-startdaemon-debug] at
org.apache.hadoop.security.UserGroupInformation.getCurrentUGI(UserGroupInformation.java:44)
[sf-startdaemon-debug] at
org.apache.hadoop.hdfs.server.namenode.NameNode.mkdirs(NameNode.java:642)
[sf-startdaemon-debug] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
[sf-startdaemon-debug] at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[sf-startdaemon-debug] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[sf-startdaemon-debug] at java.lang.reflect.Method.invoke(Method.java:597)
[sf-startdaemon-debug] at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:516)
[sf-startdaemon-debug] at
org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:959)
[sf-startdaemon-debug] at
org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:955)
[sf-startdaemon-debug] at javax.security.auth.Subject.doAs(Subject.java:396)
[sf-startdaemon-debug] at
org.apache.hadoop.ipc.Server$Handler.run(Server.java:953)
{code}
2. RMI stops working
{code}
java.lang.SecurityException: attempt to add a Permission to a readonly
Permissions object
at java.security.Permissions.add(Permissions.java:110)
at java.security.Policy$UnsupportedEmptyCollection.add(Policy.java:790)
at
sun.rmi.server.LoaderHandler.getLoaderAccessControlContext(LoaderHandler.java:985)
at sun.rmi.server.LoaderHandler.lookupLoader(LoaderHandler.java:861)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:385)
at sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:165)
at java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:620)
at
org.smartfrog.sfcore.security.SFRMIClassLoaderSpi.loadClass(SFRMIClassLoaderSpi.java:90)
at java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:247)
at sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:197)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1575)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1496)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1732)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1329)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:351)
at sun.rmi.server.UnicastRef.unmarshalValue(UnicastRef.java:306)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:290)
at sun.rmi.transport.Transport$1.run(Transport.java:159)
at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
at
sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
at java.lang.Thread.run(Thread.java:619)
at
sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:255)
at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:233)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:142)
{code}
Now, this could be my fault for using RMI, but I think a trigger for a lot of
this trouble is line 959 of hadoop.ipc.Server, which invokes things as the user
who made the remote call. And that somehow switching to a new user for the call
is causing problems when running under a security manager, because the user
making the call isnt trusted enough.
> IPC call can raise security exceptions when the remote node is running under
> a security manager
> -----------------------------------------------------------------------------------------------
>
> Key: HADOOP-5731
> URL: https://issues.apache.org/jira/browse/HADOOP-5731
> Project: Hadoop Core
> Issue Type: Bug
> Components: ipc
> Affects Versions: 0.21.0
> Reporter: Steve Loughran
> Assignee: Steve Loughran
> Priority: Minor
>
> I'm getting a security exception (java.lang.reflect.ReflectPermission
> suppressAccessChecks) in RPC.Server.call(), when calling a datanode brought
> up under a security manager, in method.setAccessible(true)
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.