如何获得组名时,我有GROUPID(How to get groupname when I have

2019-08-31 21:40发布

我与读取的文件的参数(特别是用户标识和所述组识别符号) stat命令和我其中用户和组的LDAP服务器上指定的网络中工作。

我已经得到了用户名该命令的结果getent passwd userid

现在,我的想法是让同组名getent group groupid ,但这不起作用。

谁能告诉我,我有我的错误或我如何获得组名?

谢谢!

Answer 1:

暂且不说,你提供了错误的组ID的可能性,这可能是在LDAP设置中的错误,这体现在反组解析无法正常工作。 这是事实,这适用于一个普通的“文件”设置加强。

所述getent(1)规定:

group     When no key is provided, use setgrent(3), getgrent(3), and
          endgrent(3) to enumerate the group database.  When one  or
          more  key arguments are provided, pass each numeric key to
          getgrgid(3) and each nonnumeric  key  to  getgrnam(3)  and
          display the result.

这可能意味着getgrgid(3)你的设置失败。

为了测试这个编译这个程序(getgrgid_test.c)以“让getgrgid_test”:

#include <stdio.h>
#include <sys/types.h>
#include <grp.h>

int
main(int argc, char **argv)
{
    int gid;
    struct group *g;

    if (argc != 2) {
        fprintf(stderr, "Invalid number of positional arguments\n");
        fprintf(stderr, "Usage getgrid_test GID\n");
        return 1;
    }
    gid = atoi(argv[1]);
    g = getgrgid(gid);
    if (g == NULL) {
        fprintf(stderr, "gid %d not found\n", gid);
        return 1;
    }
    printf("%s\n", g->gr_name);
    return 0;
}

然后用GID像这样运行:

getgrgid_test GID

如果它不产生对你的系统管理员组名报告。

否则,如果它的工作,但“getent组GID”不,这是在“getent”的错误。



Answer 2:

你可能有一个配置问题,即要么你没有得到这样一行:

group:    files ldap

在您的/etc/nsswitch.conf

或LDAP服务器上的组信息是不具有例如类型的组ID号形式groupOfNamesgroupOfUniqueNames ,而不是类型的存在posixGroup

只有posixGroup有允许它的使用在LINUX / UNIX的有效组(即这是需要匹配组ID号)适当的属性。 在那种情况下,LDAP服务器不返回有效的组。

可以有一个充分发挥功能的LDAP配置而没有任何或所有的远程基团是存在于从输出getent group



文章来源: How to get groupname when I have the groupid
标签: linux bash ldap