bonjour
toute la question est dans l'intitule j'ai regarder du cote de la commande file decrite dans man(1) elle semblais correspondre mais je ne suis ni sur du resultat ni de comment l'appliquer a un fichier
d'avance merci
bonjour
toute la question est dans l'intitule j'ai regarder du cote de la commande file decrite dans man(1) elle semblais correspondre mais je ne suis ni sur du resultat ni de comment l'appliquer a un fichier
d'avance merci
Bonjour,
Ça dépend du système d'exploitation que tu utilises. Ici, on considère que tu travailles sous Unix ou Linux. Ensuite, il faut distinguer d'une part les « droits d'exécution », soit le bit X modifié par chmod(), et que tu peux lire avec stat() en même temps que pas mal d'informations.
Après, pour savoir si un fichier est en soi un exécutable (sous-entendu, en langage machine, je suppose), il n'y a pas de méthode directe : il faut ouvrir le fichier comme un fichier de données ordinaires, le lire et vérifier si ce qu'il contient correspond au format d'un exécutable et en respecte la norme. C'est ce que fait la commande « file » effectivement, mais elle s'appuie sur une base de connaissances (régulièrement mise à jour, donc) et sur certains headers spécifiés dans la man page.
Par ailleurs, ton noyau lui-même, en fonction de ses options de compilation, peut reconnaître ou non différents type d'exécutables. Difficile de dire à l'avance, donc, si un fichier même reconnu comme exécutable pourra l'être sur ta machine.
Enfin, sache que le noyau est capable de reconnaître les fichiers débutant par « #! » et de lancer l'interpréteur dont le nom suit ce motif. Ça sert à lancer des scripts mais, de ce point de vue, n'importe quel fichier peut devenir exécutable.
Maintenant, est-ce que tu as réellement besoin d'écrire ça en C ou est-ce que c'est pour faire des tâches d'administration système, auquel cas tu aurais plus vite fait d'écrire un script ?
Salut
C'est vrai qu'un fichier qui contient "#!/bin/sh" et un droit "x" peut être lancé comme un exécutable. Mais l'est-il vraiment ???
En tout état de cause, même si on lui met un setuid, le processus généré par le script ne prend quand-même pas les droits de son propriétaire. Donc j'aurais tendance à dire qu'il ne l'est pas...
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Partager