我有一个使用stat命令读取的文件的参数(尤其是userid和groupid),我在一个在ldap服务器上指定用户和组的网络中工作.
我已经从命令getent passwd userid的结果中获得了用户名.
现在我的想法是使用getent group groupid获取groupname,但这不起作用.
任何人都可以告诉我我的错误或我如何得到组名?
谢谢!
解决方法
撇开你提供错误的组ID的可能性,这个
可能是LDAP设置中的错误,它反过来表示反向组解析
工作.事实上,这可以通过简单的“文件”来加强
建立.
可能是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”.