Alle dateien eines Verzeichnisses auflisten, die zur Gruppe "uucp" gehören?



  • Hi,

    ich seh den Wald vor lauter "google" nich mehr.

    ich mache...

    curdir = opendir( dirname );
    
        if( curdir == NULL)
        {
            cout<< "directory not open... "<<endl;
            return 0;
        }
    ...
    
     while(files = readdir(curdir)){
    ...
         int ret = stat(files->d_name, &s);
         printf(" File uid : %u \n", s.st_uid);
         printf(" File gid : %u \n", s.st_gid );
    ...
    }
    
    closedir(curdir);
    

    ich habe dann diesen Code im Internet gefunden, der Gruppen listet...

    #include<grp.h>
    #include<sys/types.h>
    main()
    {
      struct group *data;
      int i;
      while((data= getgrent())!=0){
        i=0;
        printf(“%s:%s:%d:”,data->gr_name,data->gr_passwd,data->gr_gid);
        while(data->gr_mem[i])printf(“%s,”,data->gr_mem[i++]);
        printf(“\n”);
      }
      endgrent();
    }
    

    liefert ...

    root❌0:root,
    bin❌1:root,bin,daemon,
    daemon❌2:root,bin,daemon,
    sys❌3:root,bin,adm,
    adm❌4:root,adm,daemon
    tty❌5
    disk❌6:root
    lp❌7:daemon,lp
    mem❌8
    kmem❌9:
    wheel❌10:root
    mail❌12:mail
    news❌13:news
    uucp❌14:uucp
    man❌15:
    games❌20
    gopher❌30
    dip❌40
    ftp❌50
    nobody❌99

    welcher Gruppen id entpricht den nach meinem Code "uucp" oder "root"?
    Mach ich das überhaupt richtig?

    Gruß
    Franky



  • Ich würde es einmal mit <pwd.h> versuchen.

    struct passwd *uucp = getpwnam("uucp");
    uid_t  user_id_von_uucp = uucp->pw_uid;
    gid_t group_id_von_uucp = uucp->pw_gid;
    

    Über das Passwort musst du dir keine Sorgen machen, das wird bei "neuen" Systemen nicht übergeben.



  • Hi,

    ich habe das mal gemacht...

    struct passwd *uucp = getpwnam("uucp");
    uid_t  user_id_von_uucp = uucp->pw_uid;
    gid_t group_id_von_uucp = uucp->pw_gid;
    
    cout << "user_id_von_uucp:   " <<  user_id_von_uucp << endl;
    cout << "group_id_von_uucp:  " << user_id_von_uucp << endl;
    
    struct group * mygrp = getgrgid( s.st_gid );
    
    cout << " mygrp (gid): " <<  mygrp->gr_gid  << endl;
    
    struct passwd * mypwd =  getpwuid( s.st_uid );
    
    cout << " mypwd (uid): " <<  mypwd->pw_uid  << endl;
    cout << " mypwd (gid): " <<  mypwd->pw_gid  << endl;
    

    Wenn ich das mal mit "/etc/passwd" oder mit "/etc/group" vergleiche...
    in allen Fällen ist der Konqueror besser als ich. Ich kriege für jede Datei nur meine ID's und nicht die Grupen ID's die der Konqueror anzeigen kann.

    Gruß
    Franky


Anmelden zum Antworten