getpwnam() et getgrnam() dans un environnement particulier

getpwnam() et getgrnam() dans un environnement particulier - C - Programmation

Marsh Posté le 09-07-2005 à 13:59:43    

J'ai un environnement AIX sous lequel on a un service d'authentification DCE
 
Je cherche à vérifié la présence d'un userid dans le fichier /etc/passwd alors je me dis que j'allais utilisé la fonction getpwnam()
 
Cependant, le fait que notre client d'authentification DCE tourne sur cet machine semble modifier notre contexte, puisqu'un userid n'étant pas dans /etc/passwd mais dans DCE me retournera une entrée quand j'appelerai la fonction getpwnam(), ce que je ne veux aps
 
outre le parsing du fichier /etc/passwd à la main, vous voyez une autre solution qui s'offre à moi?

Reply

Marsh Posté le 09-07-2005 à 13:59:43   

Reply

Marsh Posté le 09-07-2005 à 16:32:38    

Moi j'utilise getpwuid qui est posix
 

Code :
  1. pwd = getpwuid(uid);
  2. if(pwd && pwd->pw_name)
  3.  username = g_strdup(pwd->pw_name);
  4. else
  5.  username = g_strdup_printf("%u", (unsigned)uid);

Reply

Marsh Posté le 09-07-2005 à 18:02:39    

hum et si j'ai pas le uid?
 
le petit prog que je dois faire recoit un username et un password
 
si le username est dans /etc/passwd
  j'authentifie localement
sinon
  si le username est dans un groupe X
    j'authentifie à DCE
  sinon je refuse la connexion
 
jai presque fini mes fonctions pour parser manuellement les fichiers /etc/passwd et /etc/group pour ce que j'ai besoin comme info

Reply

Marsh Posté le 09-07-2005 à 18:56:06    

je comprends pas ton binz avec getpwnam. Ni ton histoire de contexte.
 
De plus j'ajoute que d'un point de vue sécurité, c'est important de savoir OÙ on se loggue, je suis donc hostile à un truc qui change la procédure dans mon dos.

Reply

Marsh Posté le 09-07-2005 à 19:18:17    

ok j'explique
 
on a des serveurs AIX sur lesquels on peut soit s'identifier localement (si on dispose d'un id local, comme root) ou avec un id DCE
 
l'équipe de database m'a demandé un petit tool qui fait le traitement suivant:
 
1: vérifie si le userid existe localement. Si c'est le cas, test son authentification localement et retourne nous le résultat en sortie (1 pour SUCCESS, 0 pour FAILED)
2: sinon, vérifis si le user fait parti du groupe "toto" (exemple bidon). Si c'est le cas, test l'authentification au niveau de DCE et retourne nous le résultat en sortie (1 pour SUCESS, 0 pour FAILED)
3: sinon retourne 0 pour FAILED puisqu'on ne veut pas que des userids non-locaux ne faisant pas partie de notre groupe toto puisse accéder à notre truc
 
c'est plus clair? on se fou un peu de ce qu'ils vont faire avec le prog, ca ne créer pas de crédential, ca ne fait que tester si la combinaison login/password est bonne si ca réponds aux spécifications

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed