用Java

时间:2017-09-23 10:03:25

标签: java linux

在DB2中的存储过程中,我需要查找有关用户组的信息。 DB2没有内置的功能,因此我似乎需要为此编写用户定义的函数或用户定义的过程。在实践中,必须用Java编写。

因此,在Java中:如何从操作系统中查看用户所属的组?或者:给定组名称,获取组成员用户名列表。

这种方法必须适用于Linux(如果它与操作系统无关,那将会很好,但这并不重要)。

该方法必须遵守操作系统中配置的任何授权集成。换句话说:如果操作系统已设置为使用SSSD进行用户授权,则Java代码不应依赖于能够在/ etc / group中查找组成员身份。

所以我希望能够做同样的" id USERNAME"或" getent group GROUPNAME"来自Java的Linux shell命令。 Python有" grp"这个任务的模块,但我还没有找到类似于Java的东西。

优选地,解决方案应该依赖于尽可能少的外部库。如果它只依赖于合理的现代JRE的API,那将是最好的。

1 个答案:

答案 0 :(得分:1)

没有"清洁"在Java中做到这一点。 Java没有用于枚举用户组的任何标准API。您的选择是:

  • 实现一个调用getgroups C库方法的本机库包装器,然后通过JNI或JNA从Java调用它
  • 使用java.lang.Process调用外部程序来获取信息
  • 从Java查询LDAP或Kerberos / AD或JNDI

最后一个仅在系统使用LDAP / Kerberos / JNDI并且您具有适当的凭据,架构配置等时才有效。这些可能是最难的方法......而在实践中就像其他方法一样不可移植。