You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2014/10/31 03:09:29 UTC
git commit: ARGUS-138: Fixed the bug that caused code to let some of
the users with userid below MIN_UNIX_USER_ID_TO_SYNC
Repository: incubator-argus
Updated Branches:
refs/heads/master 38c359470 -> fa2ff5ae7
ARGUS-138: Fixed the bug that caused code to let some of the users with userid below MIN_UNIX_USER_ID_TO_SYNC
Signed-off-by: Madhan Neethiraj <ma...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/incubator-argus/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-argus/commit/fa2ff5ae
Tree: http://git-wip-us.apache.org/repos/asf/incubator-argus/tree/fa2ff5ae
Diff: http://git-wip-us.apache.org/repos/asf/incubator-argus/diff/fa2ff5ae
Branch: refs/heads/master
Commit: fa2ff5ae72077b5b6f764a6386c15c661570d6b8
Parents: 38c3594
Author: Alok Lal <al...@hortonworks.com>
Authored: Wed Oct 29 10:38:17 2014 -0700
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Thu Oct 30 19:07:39 2014 -0700
----------------------------------------------------------------------
.../process/UnixUserGroupBuilder.java | 41 ++++++++------------
1 file changed, 17 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-argus/blob/fa2ff5ae/ugsync/src/main/java/com/xasecure/unixusersync/process/UnixUserGroupBuilder.java
----------------------------------------------------------------------
diff --git a/ugsync/src/main/java/com/xasecure/unixusersync/process/UnixUserGroupBuilder.java b/ugsync/src/main/java/com/xasecure/unixusersync/process/UnixUserGroupBuilder.java
index b457e7a..8d4af61 100644
--- a/ugsync/src/main/java/com/xasecure/unixusersync/process/UnixUserGroupBuilder.java
+++ b/ugsync/src/main/java/com/xasecure/unixusersync/process/UnixUserGroupBuilder.java
@@ -42,8 +42,8 @@ public class UnixUserGroupBuilder implements UserGroupSource {
private UserGroupSyncConfig config = UserGroupSyncConfig.getInstance() ;
private Map<String,List<String>> user2GroupListMap = new HashMap<String,List<String>>();
+ private Map<String,List<String>> internalUser2GroupListMap = new HashMap<String,List<String>>();
private Map<String,String> groupId2groupNameMap = new HashMap<String,String>() ;
- private List<String> userList = new ArrayList<String>() ;
private int minimumUserId = 0 ;
private long passwordFileModiiedAt = 0 ;
@@ -98,7 +98,6 @@ public class UnixUserGroupBuilder implements UserGroupSource {
private void buildUserGroupInfo() throws Throwable {
user2GroupListMap = new HashMap<String,List<String>>();
groupId2groupNameMap = new HashMap<String,String>() ;
- userList = new ArrayList<String>() ;
buildUnixGroupList();
buildUnixUserList();
@@ -107,8 +106,8 @@ public class UnixUserGroupBuilder implements UserGroupSource {
}
}
- public void print() {
- for(String user : userList) {
+ private void print() {
+ for(String user : user2GroupListMap.keySet()) {
LOG.debug("USER:" + user) ;
List<String> groups = user2GroupListMap.get(user) ;
if (groups != null) {
@@ -119,14 +118,6 @@ public class UnixUserGroupBuilder implements UserGroupSource {
}
}
- private List<String> getUserList() {
- return userList ;
- }
-
- private List<String> getGroupListForUser(String aUserName) {
- return user2GroupListMap.get(aUserName) ;
- }
-
private void buildUnixUserList() throws Throwable {
File f = new File(UNIX_USER_PASSWORD_FILE) ;
@@ -168,22 +159,24 @@ public class UnixUserGroupBuilder implements UserGroupSource {
}
if (numUserId >= minimumUserId ) {
- userList.add(userName) ;
String groupName = groupId2groupNameMap.get(groupId) ;
if (groupName != null) {
- List<String> groupList = user2GroupListMap.get(userName) ;
- if (groupList == null) {
- groupList = new ArrayList<String>() ;
- user2GroupListMap.put(userName, groupList) ;
- }
- if (! groupList.contains(groupName)) {
- groupList.add(groupName) ;
+ List<String> groupList = new ArrayList<String>();
+ groupList.add(groupName);
+ // do we already know about this use's membership to other groups? If so add those, too
+ if (internalUser2GroupListMap.containsKey(userName)) {
+ groupList.addAll(internalUser2GroupListMap.get(userName));
}
+ user2GroupListMap.put(userName, groupList);
}
else {
- LOG.warn("Group Name could not be found for group id: [" + groupId + "]") ;
+ // we are ignoring the possibility that this user was present in /etc/groups.
+ LOG.warn("Group Name could not be found for group id: [" + groupId + "]. Skipping adding user [" + userName + "] with id [" + userId + "].") ;
}
}
+ else {
+ LOG.debug("Skipping user [" + userName + "] since its userid [" + userId + "] is less than minuserid limit [" + minimumUserId + "].");
+ }
}
reader.close() ;
@@ -234,13 +227,13 @@ public class UnixUserGroupBuilder implements UserGroupSource {
}
groupId2groupNameMap.put(groupId,groupName) ;
-
+ // also build an internal map of users to their group list which is consulted by user list creator
if (groupMembers != null && ! groupMembers.trim().isEmpty()) {
for(String user : groupMembers.split(",")) {
- List<String> groupList = user2GroupListMap.get(user) ;
+ List<String> groupList = internalUser2GroupListMap.get(user) ;
if (groupList == null) {
groupList = new ArrayList<String>() ;
- user2GroupListMap.put(user, groupList) ;
+ internalUser2GroupListMap.put(user, groupList) ;
}
if (! groupList.contains(groupName)) {
groupList.add(groupName) ;