Dhirendra Khanka created HADOOP-15213:
-----------------------------------------

             Summary: JniBasedUnixGroupsNetgroupMapping.java and 
ShellBasedUnixGroupsNetgroupMapping.java use netgroup.substring(1) 
                 Key: HADOOP-15213
                 URL: https://issues.apache.org/jira/browse/HADOOP-15213
             Project: Hadoop Common
          Issue Type: Improvement
          Components: security
         Environment: SUSE Linux Enterprise Server 11 (x86_64)
VERSION = 11
PATCHLEVEL = 3
            Reporter: Dhirendra Khanka
         Attachments: image-2018-02-07-13-28-45-230.png, 
image-2018-02-07-13-28-47-106.png, image-2018-02-07-13-28-50-696.png, 
image-2018-02-07-13-29-25-647.png

 

Part of the code below shown from below 2 classes

 org.apache.hadoop.security.JniBasedUnixGroupsNetgroupMapping.java
{code:java}
 protected synchronized List<String> getUsersForNetgroup(String netgroup) {
    String[] users = null;
    try {
      // JNI code does not expect '@' at the begining of the group name
      users = getUsersForNetgroupJNI(netgroup.substring(1));
    } catch (Exception e) {
      if (LOG.isDebugEnabled()) {
        LOG.debug("Error getting users for netgroup " + netgroup, e);
      } else {
        LOG.info("Error getting users for netgroup " + netgroup + 
            ": " + e.getMessage());
      }
    }
    if (users != null && users.length != 0) {
      return Arrays.asList(users);
    }
    return new LinkedList<String>();
  }{code}
org.apache.hadoop.security.ShellBasedUnixGroupsNetgroupMapping.java

 
{code:java}
protected String execShellGetUserForNetgroup(final String netgroup)
 throws IOException {
 String result = "";
 try
{ // shell command does not expect '@' at the begining of the group name result 
= Shell.execCommand( Shell.getUsersForNetgroupCommand(netgroup.substring(1))); }
catch (ExitCodeException e)
{ // if we didn't get the group - just return empty list; LOG.warn("error 
getting users for netgroup " + netgroup, e); }
return result;
 }

{code}
 The comments from the code above expect the input to contain '@' , however 
when executing the shell directly the output has the below form which does not 
contain any ampersand symbol. 
{code:java}
:~> getent netgroup mynetgroup1
mynetgroup1           ( , a3xsds, ) ( , beekvkl, ) ( , redcuan, ) ( , uedfmst, 
){code}
 

I have created a test code and removed the substring function and then ran it 
on the cluster using hadoop jar. The code returned netgroups correctly after 
the modification. I have limited knowledge on netgroup. The issue was 
discovered when

hadoop.security.group.mapping = 
*org.apache.hadoop.security.JniBasedUnixGroupsMappingWithFallback* was added to 
core-site.xml and it failed to apply netgroup access.

 

 

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: common-dev-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-dev-h...@hadoop.apache.org

Reply via email to