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?
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.
Essaye ça:
Sudo chmod +x program_name
./program_name
On dirait que l'indicateur d'exécution n'est pas défini sur les autorisations de fichier, essayez:
chmod u+x program_name