Duplication possible :
Impossible d'exécuter certains binaires dans l'environnement chroot (zsh :non trouvé)
Aujourd'hui, je suis tombé sur quelque chose qui m'a laissé perplexe. Un collègue travaille avec un binaire précompilé spécifique qu'il a téléchargé (disponible ici). Sur le serveur Ubuntu 10.04 LTS sur lequel il travaille, la tentative d'exécution de ce fichier génère un fichier introuvable, même avec les autorisations définies correctement.
Et pourtant, lorsque je tente la même chose depuis OpenSUSE 11.4, cela fonctionne très bien. Exécution de file
dessus ça me donne :
Exécutable ELF 32 bits LSB, Intel 80386, version 1 (SYSV), lié dynamiquement (utilise des bibliothèques partagées), pour GNU/Linux 2.6.15, supprimé
Les boîtes Ubuntu et OpenSUSE sont des installations 64 bits et file
renvoie les mêmes informations sur les deux machines.
Ce qui m'a l'air très bien. Et sur la boîte d'openuse, LDD me donne même une courte liste de fichiers de bibliothèque. Vérification manuelle, tous ces fichiers spécifiés existent également sur le serveur Ubuntu. La sortie de Strace est cependant différente :
Ouvriruse :
execve(“./trid”, [“./trid”], [/* 122 vars */]) =0
Ubuntu (le chemin complet ne change pas le résultat) :
execve(“./trid”, [“./trid”], [/* 19 vars */]) =-1 ENOENT (Aucun fichier ou répertoire de ce type)
Qu'est-ce qui peut empêcher un fichier comme celui-ci d'être exécutable de cette manière ?
Réponse acceptée :
Saisissez
ldd ./trid
à la fois sur le système openSuse et Ubuntu.
Je suppose que vous constaterez qu'il manque un fichier de bibliothèque à ce dernier.