加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-14 02:18:52 所属栏目:Linux 来源:网络整理
导读:我有一个使用stat命令读取的文件的参数(尤其是userid和groupid),我在一个在ldap服务器上指定用户和组的网络中工作. 我已经从命令getent passwd userid的结果中获得了用户名. 现在我的想法是使用getent group 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 argumentsn");
        fprintf(stderr,"Usage getgrid_test GIDn");
        return 1;
    }
    gid = atoi(argv[1]);
    g = getgrgid(gid);
    if (g == NULL) {
        fprintf(stderr,"gid %d not foundn",gid);
        return 1;
    }
    printf("%sn",g->gr_name);
    return 0;
}

然后用你的gid运行它:

getgrgid_test GID

如果它不向系统管理员生成组名报告.

否则,如果它确实有效,但“getent group GID”没有,那就是一个bug“getent”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读