Вопрос по linux, bash, ldap – Как получить имя группы, когда у меня есть groupid

8

У меня есть параметры (особенно ID пользователя и GroupID) файла, прочитанного сstat и я работаю в сети, где пользователи и группы указаны на сервере ldap.

мы получили имя пользователя из результата команды.getent passwd userid

Теперь моя идея состояла в том, чтобы получить имя группы сgetent group groupidно это нет работа.

Может кто-нибудь сказать мне, где у меня есть моя ошибка или как я получаю имя группы?

Спасибо!

У меня работает на SLES 11.2. jwilleke

Ваш Ответ

2   ответа
3

что выЕсли указать неверный идентификатор группы, это может быть ошибкой в настройке LDAP, которая проявляется в том, что обратное разрешение группы не работает. Это подкрепляется тем, что это работает на равнине "файлы» настроить.

Гетент (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;
}
</grp.h></sys></stdio.h>

Затем запустите его с помощью своего gid следующим образом:

getgrgid_test GID

Если это не таксоздать отчет об имени группы для системных администраторов.

В противном случае, если это работает, но "гетент группа GID " Безразлично»т, этоошибка в "getent».

Петеш, да, тестовая программа предназначена для того, чтобы обойти (очень незначительную) возможность ошибки в getent и помочь решить проблему с помощью системных администраторов. spbnick
Этоименно так что делает getent Petesh
1

вероятно, есть проблема конфигурации, где либо выу нас нет такой строки:

group:    files ldap

в вашем ./etc/nsswitch.conf

или информация о вашей группе на сервере ldap находится в форме, которая нене иметь номера идентификатора группы, например типа,groupOfNamesgroupOfUniqueNames вместо того, чтобы быть типа.posixGroup

Только posixGroup имеет соответствующие атрибуты, которые позволяют этоs использовать в качестве действительной группы в linux / unix (то есть номер идентификатора группы, который необходим для совпадения). В этой ситуации сервер ldap неверните действительные группы.

ВыМожно иметь отлично работающую конфигурацию ldap без каких-либо или всех удаленных групп, присутствующих в выходных данных.getent group

Похожие вопросы