#include /* rechercheSetUid.c */ #include #include #include #include #include void repCourant(void); int main(void) { repCourant(); return 0; } void repCourant(void) { DIR *dirp; struct dirent *dp; struct stat inodeFic; /* ouverture du catalogue du repertoire courant */ if ((dirp=opendir("."))==NULL) { return; } /* parcours du catalogue par la fonction readdir */ for (dp=readdir(dirp); dp !=NULL; dp=readdir(dirp) ) { /* pour chaque entree du catalogue, ... */ stat(dp->d_name,&inodeFic); if (S_ISREG(inodeFic.st_mode)) /* .. si c'est un fichier ordinaire */ { /* .. si c'est un fichier executable et setuid */ if ( (inodeFic.st_mode & (S_IXUSR|S_IXGRP|S_IXOTH)) && (inodeFic.st_mode & S_ISUID)) { printf("setiud sur %s\n", dp->d_name); } } } closedir(dirp); }