gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:21:52 26 4
gpt4 key购买 nike

我有使用 stat 命令读取的文件的参数(尤其是 userid 和 groupid),并且我在一个网络中工作,其中用户和组在 ldap 服务器上指定。

我从命令 getent passwd userid 的结果中得到了用户名。

现在我的想法是通过 getent group groupid 获取组名,但这行不通。

任何人都可以告诉我哪里有错误或我如何获得组名吗?

谢谢!

最佳答案

撇开您提供错误组 ID 的可能性不谈,这可能是 LDAP 设置中的一个错误,它表现为反向组解析而不是在职的。这是因为它适用于普通的"file"这一事实设置。

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”不起作用,那么它就是一个错误“getent”。

关于linux - 当我有 groupid 时如何获取 groupname,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16163910/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com