Оставляя в стороне, что вы поставляете неправильный идентификатор группы, этот может быть ошибкой в настройке 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 group GID» этого не делает, это ошибка в «getent».
Работы для меня на SLES 11.2. – jwilleke