Check group membership for a Linux user using Java

后端 未结 2 1516
梦如初夏
梦如初夏 2020-12-06 23:11

Hi I can\'t figure out how to verify if a user belong to one o more group under Linux os using java 7 nio library.

Can anyone help me about this issue?

2条回答
  •  日久生厌
    2020-12-06 23:46

    I do not think that reading local /etc/passwd or /etc/group could be good idea, because nis/ldap/ipa/pam can introduce other sources of infromation about group membership. So, it depends on you environment and some other details. E.g.:

    Groups for logged in (current) user

      com.sun.security.auth.module.UnixSystem().getGroups()
    

    Hadoop

      org.apache.hadoop.security.UserGroupInformation.getBestUGI(null,"root").getGroupNames()
    

    If neither is you case

    You can create jna wrapper for getgroups(2).

    Or improve UnixSystem and Java_com_sun_security_auth_module_UnixSystem_getUnixInfo from jdk to take user id/name parameter.

    Or rewrite some implementation of org.apache.hadoop.security.GroupMappingServiceProvider interface to not depend on hadoop environment.

提交回复
热议问题