web-dev-qa-db-fra.com

Ubuntu dit "bash: ./program Permission refusée"

J'utilise Ubuntu sur les ordinateurs 1 et 2. J'ai compilé un programme C++ sur l'ordinateur 1 et je peux l'exécuter à partir du terminal à l'aide de ./program_name. Ça fonctionne bien.

Cependant, lorsque j'essaie de le faire sur l'ordinateur 2, il est écrit: bash: ./program_name: permission denied

Quel est le problème et que puis-je faire à ce sujet?

168
Kian

chmod u+x program_name. Puis exécutez-le.

Si cela ne fonctionne pas, copiez le programme du périphérique USB sur un volume natif du système. Ensuite, chmod u+x program_name sur la copie locale et exécutez-le.

Les systèmes Unix et de type Unix n'exécutent généralement pas de programme s'il n'est pas marqué avec une autorisation d'exécution. La manière dont vous avez copié le fichier d’un système à un autre (ou monté un volume externe) a peut-être désactivé l’autorisation d’exécution (par mesure de sécurité). La commande chmod u+x name ajoute la permission à l'utilisateur qui possède le fichier de l'exécuter.

Cette commande modifie uniquement les autorisations associées au fichier. cela ne modifie pas les contrôles de sécurité associés à l'ensemble du volume. Si ce sont des contrôles de sécurité sur le volume qui interfèrent avec l'exécution (par exemple, une option noexec peut être spécifiée pour un volume dans le fichier Unix fstab, ce qui interdit d'autoriser l'exécution des fichiers sur le volume), vous pouvez alors remonter le volume avec des options pour permettre son exécution. Toutefois, la copie du fichier sur un volume local peut constituer une solution plus rapide et plus simple.

334
Eric Postpischil

Essaye ça:

Sudo chmod +x program_name
./program_name 
27
Vitor Villar

On dirait que l'indicateur d'exécution n'est pas défini sur les autorisations de fichier, essayez:

chmod u+x program_name
10
Sam Roberts