J’ai les parameters (en particulier l’ID utilisateur et le groupid) d’un fichier lu avec la commande stat
et je travaille dans un réseau où les utilisateurs et les groupes sont spécifiés sur un serveur LDAP.
J’ai le nom d’utilisateur du résultat de la commande getent passwd userid
.
Maintenant, mon idée était d’obtenir le nom de getent group groupid
avec le getent group groupid
, mais cela ne fonctionne pas.
Quelqu’un peut-il me dire où j’ai mon erreur ou comment je reçois le nom de groupe?
Merci!
En dehors de la possibilité que vous fournissiez un ID de groupe incorrect, cela pourrait être un bogue dans la configuration LDAP, qui se manifeste par une résolution de groupe inversée qui ne fonctionne pas. Ceci est renforcé par le fait que cela fonctionne sur une configuration “fichiers” simple.
Le getent (1) déclare:
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.
Cela pourrait signifier que getgrgid (3) échoue sur votre configuration.
Pour tester cela, comstackz ce programme (getgrgid_test.c) avec “make getgrgid_test”:
#include #include #include 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; }
Ensuite, lancez-le avec votre gid comme ceci:
getgrgid_test GID
S’il ne génère pas de rapport de nom de groupe à vos administrateurs système.
Sinon, si cela fonctionne, mais que “getent group GID” ne fonctionne pas, c’est un bogue dans “getent”.
Vous avez probablement un problème de configuration ou vous n’avez pas de ligne comme:
group: files ldap
dans votre /etc/nsswitch.conf
.
ou vos informations de groupe sur le serveur groupOfNames
groupOfUniqueNames
sous une forme qui n’a pas de numéros d’identification de groupe, par exemple de type groupOfNames
, groupOfUniqueNames
au lieu d’être de type posixGroup
.
Seul posixGroup possède les atsortingbuts appropriés qui lui permettent d’être utilisé comme groupe valide dans linux / unix (c’est-à-dire le numéro d’identification de groupe nécessaire pour correspondre). Dans cette situation, le serveur LDAP ne renvoie pas de groupes valides.
Vous pouvez avoir une configuration LDAP parfaitement fonctionnelle sans qu’aucun ou tous les groupes distants ne soient présents dans la sortie du getent group
.