Как получить groupname, когда у меня есть groupid
у меня есть параметры (особенно идентификатор пользователя и groupid) файла, прочитанного с помощью stat
command и я работаем в сети, где пользователи и группы указаны на сервере ldap.
у меня есть имя пользователя из результатов команды getent passwd userid
.
Теперь моя идея заключалась в том, чтобы получить groupname с getent group groupid
, но это не работает.
может ли кто-нибудь сказать мне, где у меня есть моя ошибка или как я получаю groupname?
спасибо!
2 ответов
оставляя в стороне возможность того, что вы предоставляете неверный идентификатор группы, это может быть ошибка в настройке 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) с помощью "make 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;
}
выполнить это с вашим гидом так:
getgrgid_test GID
если он не создает отчет имени группы для системных администраторов.
В противном случае, если он работает, но "getent group GID" нет, это ошибка в "getent".
у вас, вероятно, есть проблема конфигурации, где либо у вас нет строки, как:
group: files ldap
в своем /etc/nsswitch.conf
.
или ваша информация о группе на сервере ldap находится в форме, которая не имеет идентификаторов группы, например, типа groupOfNames
, groupOfUniqueNames
вместо того, чтобы быть типа posixGroup
.
только posixGroup имеет соответствующие атрибуты, которые позволяют использовать его в качестве допустимой группы в linux / unix (т. е. идентификатор группы, который необходим для соответствия). В том ситуация сервер ldap не возвращает допустимые группы.
вы can имеют отлично функционирующую конфигурацию ldap без каких-либо или всех удаленных групп, присутствующих на выходе из getent group
.