linux – 当我有groupid时如何获取groupname

前端之家收集整理的这篇文章主要介绍了linux – 当我有groupid时如何获取groupname前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个使用stat命令读取的文件的参数(尤其是userid和groupid),我在一个在ldap服务器上指定用户和组的网络中工作.

我已经从命令getent passwd userid的结果中获得了用户名.

现在我的想法是使用getent group groupid获取groupname,但这不起作用.

任何人都可以告诉我我的错误或我如何得到组名?

谢谢!

解决方法

撇开你提供错误的组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)在您的设置上失败.

要测试这个,用“make getgrgid_test”编译这个程序(getgrgid_test.c):

#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 group GID”没有,那就是一个bug“getent”.

猜你在找的Linux相关文章