256 votes

L'exécution de mon programme affiche "bash : ./program Permission denied".

J'utilise Ubuntu sur l'ordinateur 1 et l'ordinateur 2. J'ai compilé un programme C++ sur l'ordinateur 1, et je peux l'exécuter à partir du terminal en utilisant ./program_name . Il fonctionne bien.

Cependant, lorsque j'essaie de le faire sur l'ordinateur 2, le message suivant s'affiche : bash: ./program_name: permission denied

Qu'est-ce qui ne va pas et que puis-je faire ?

487voto

Eric Postpischil Points 36641

chmod u+x program_name . Puis l'exécuter.

Si cela ne fonctionne pas, copiez le programme du périphérique USB sur un volume natif du système. Ensuite, le programme doit être copié sur un volume natif du système. chmod u+x program_name sur la copie locale et l'exécuter.

Unix et les systèmes de type Unix n'exécutent généralement pas un programme s'il n'est pas marqué d'une autorisation d'exécution. La manière dont vous avez copié le fichier d'un système à l'autre (ou monté un volume externe) peut avoir désactivé l'autorisation d'exécution (par mesure de sécurité). La commande chmod u+x name ajoute l'autorisation pour l'utilisateur propriétaire du fichier de l'exécuter.

Cette commande ne modifie que les autorisations associées au fichier ; elle ne modifie pas les contrôles de sécurité associés à l'ensemble du volume. Si ce sont les contrôles de sécurité sur le volume qui interfèrent avec l'exécution (par exemple, un noexec peut être spécifiée pour un volume dans le système Unix fstab qui indique de ne pas autoriser l'exécution des fichiers sur le volume), vous pouvez alors remonter le volume avec des options autorisant l'exécution. Cependant, copier le fichier sur un volume local peut être une solution plus rapide et plus simple.

42voto

Vitor Villar Points 1697

Essayez ceci :

sudo chmod +x program_name
./program_name

15voto

Sam Roberts Points 41

Il semble que vous n'ayez pas défini le drapeau d'exécution dans les autorisations du fichier, essayez :

chmod u+x program_name

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X