Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1550 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Liste des utilisateurs sous Linux

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Liste des utilisateurs sous Linux

n°1231774
laurent_31
Posté le 26-10-2005 à 18:12:55  profilanswer
 

Bonsoir,
 
A tout hasard, connaissez vous une fonction qui permette d'obtenir la liste des utilisateurs et des groupes sous linux sans passer par l'analyse des fichiers /etc/passwd et /etc/group ?
 
Merci d'avance.
 
En fait je dois utiliser la commande chown et j'aimerais bien pouvoir proposer une liste d'utilisateurs et de groupes.
 
Remerci d'avance ;)

mood
Publicité
Posté le 26-10-2005 à 18:12:55  profilanswer
 

n°1231795
0x90
Posté le 26-10-2005 à 18:39:54  profilanswer
 

cut -f1 -d: /etc/passwd
Ca te va vraiment pas ca ? ( de toute facon un soft qui fait que ce que tu demande fera exactement la même chose... )


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1231797
Elmoricq
Modérateur
Posté le 26-10-2005 à 18:41:08  profilanswer
 

En C, fgets() + strtok() :o

n°1231799
0x90
Posté le 26-10-2005 à 18:45:28  profilanswer
 

arf, j'avais même pas fait gaffe que je regardais la cat C dslé...


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1231929
dividee
Posté le 26-10-2005 à 21:43:50  profilanswer
 

getpwent et getgrent, non ?

n°1231931
Elmoricq
Modérateur
Posté le 26-10-2005 à 21:45:49  profilanswer
 

Cool je ne connaissais pas, et en plus c'est POSIX [:jar jar]
 
Je le note dans un coin de ma tête celui-là. :jap:

n°1231943
laurent_31
Posté le 26-10-2005 à 22:03:35  profilanswer
 

Merci,
 
alors si ça interesse quelqu'un j'ai écris ça :
 

Code :
  1. void
  2. print_uidgid(int mode)
  3. {
  4.     char ligne[80],path[12];
  5.     char *c;
  6.     FILE *f;
  7.     if(mode==GID) strcpy(path,"/etc/group" );
  8.     else strcpy(path,"/etc/passwd" );
  9.     if(!(f=fopen(path,"r" ))) {
  10.         perror("Arf" );
  11.         return;
  12.     }
  13.     do {
  14.         c=fgets(ligne,sizeof(ligne),f);
  15.         if(c!=NULL) {
  16.             printf("Nom : %-20s - ID : %s\n",extract_string(ligne,":",0),extract_string(ligne,":",2));
  17.         }
  18.     } while(c!=NULL);
  19.     printf("\n" );
  20. }


 
et j'ai trouvé ça :
 

Code :
  1. char*
  2. extract_string(char *string, const char *delimit, int index)
  3. {
  4.     int cpt=0;
  5.     char *result="";
  6.     result=strtok(string, delimit);
  7.     while(cpt!=index){
  8.         result=strtok(NULL,delimit);
  9.         cpt++;
  10.     }
  11.     return result;
  12. }


 
Voili, voilou et merci de votre aide

n°1231950
dividee
Posté le 26-10-2005 à 22:12:14  profilanswer
 

Je suis pas spécialiste de la question mais voilà ce que je pense:
Parser directement /etc/passwd et /etc/group ne fonctionnerait pas sur un système utilisant PAM avec, par exemple, un serveur LDAP utilisé comme backend pour l'authentification. Il faut passer par NSS, ce que font les commandes ci-dessus si je ne me trompe.


Message édité par dividee le 26-10-2005 à 22:13:44
n°1232050
laurent_31
Posté le 26-10-2005 à 23:50:38  profilanswer
 

Bah, disons que je ne sais pas trop comment récupérer mes infos sinon :)

n°1232089
Elmoricq
Modérateur
Posté le 27-10-2005 à 06:44:12  profilanswer
 

dividee t'a donné les bonnes fonctions à utiliser, elles sont standard et font exactement ce que tu souhaites : getpwent et getprent.

mood
Publicité
Posté le 27-10-2005 à 06:44:12  profilanswer
 

n°1234690
Emmanuel D​elahaye
C is a sharp tool
Posté le 31-10-2005 à 01:55:07  profilanswer
 

Elmoricq a écrit :

dividee t'a donné les bonnes fonctions à utiliser, elles sont standard et font exactement ce que tu souhaites : getpwent et getprent.


Standard ? Quel standard ? Pas C en tout cas...


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1234719
Elmoricq
Modérateur
Posté le 31-10-2005 à 09:00:42  profilanswer
 

Si si, j'ai été surpris, maos ces deux fonctions sont POSIX.2.

n°1234836
Joel F
Real men use unique_ptr
Posté le 31-10-2005 à 11:21:40  profilanswer
 

Elmoricq a écrit :

Si si, j'ai été surpris, maos ces deux fonctions sont POSIX.2.


POSIX != standard

n°1234888
0x90
Posté le 31-10-2005 à 11:56:41  profilanswer
 

bha c'est UN standard, dire que c'est "standard" c'est un peu ambigu ...


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1234889
Elmoricq
Modérateur
Posté le 31-10-2005 à 11:57:01  profilanswer
 

POSIX est un standard. [:spamafote]
 
M'enfin c'est du pinaillage sémantique, là. C'est pas ISO, mais bon rechercher la liste des utilisateurs sur un Unix, en même temps...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Liste des utilisateurs sous Linux

 

Sujets relatifs
Questions linux et administration .. big brother ?[vindows form] liste (treeview ?) ala outlook
Liste déroulante fonctionne sous Firefox pas IE...[C] Liste des #define spécifiques aux OS ou aux standards
Mise en forme d'une liste déroulante sous IE ...Sauver une Liste d'imprimante
liste déroulante avec une barre de défilement verticale[SQL/Access] Problème de rafraichissement de zone de liste
[Liste Chainée]arguments utilisateurs pendant l'execution
Plus de sujets relatifs à : Liste des utilisateurs sous Linux


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR