Bỏ qua khả năng bạn đang cung cấp ID nhóm sai, này có thể là lỗi trong thiết lập LDAP, hiển thị ở độ phân giải nhóm ngược lại không hoạt động. Điều này được củng cố bởi thực tế là nó hoạt động trên một tập tin "đơn giản" .
Các getent (1) khẳng định:
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.
Điều này có nghĩa rằng getgrgid (3) không thành công trên thiết lập của bạn.
Để kiểm tra điều này biên dịch chương trình này (getgrgid_test.c) với "làm 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;
}
Sau đó chạy nó với gid của bạn như thế này:
getgrgid_test GID
Nếu nó không sản xuất báo cáo tên nhóm cho quản trị viên hệ thống của bạn.
Nếu không, nếu nó hoạt động, nhưng "nhóm getent GID" thì không, đó là lỗi trong số "getent".
Làm việc cho tôi trên SLES 11.2. – jwilleke