J'exécute 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
. Ça marche bien.
Cependant, lorsque j'essaie de le faire sur l'ordinateur 2, il dit: bash: ./program_name: permission denied
Qu'est-ce qui ne va pas et que puis-je faire?
progam_name
?bash program_name
.sh
fichier. Il a refusé de s'exécuter avec ce message d'erreur. Je dirais que c'est définitivement le sujet de StackOverflow. J'ai proposé ma réouverture.Réponses:
chmod u+x program_name
. Ensuite, exécutez-le.Si cela ne fonctionne pas, copiez le programme du périphérique USB vers un volume natif sur le système. Ensuite,
chmod u+x program_name
sur la copie locale et exécutez cela.Les systèmes Unix et Unix-like n'exécuteront généralement pas un programme à moins qu'il ne soit marqué d'une autorisation d'exécution. La façon dont vous avez copié le fichier d'un système à un 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 à l'utilisateur propriétaire du fichier de l'exécuter.Cette commande modifie uniquement les autorisations associées au fichier; il ne modifie pas les contrôles de sécurité associés à l'intégralité du volume. Si ce sont des contrôles de sécurité sur le volume qui interfèrent avec l'exécution (par exemple, une
noexec
option peut être spécifiée pour un volume dans lefstab
fichier Unix , qui dit de ne pas autoriser l'exécution pour les fichiers du volume), alors vous pouvez remonter le volume avec des options pour permettre l'exécution. Cependant, la copie du fichier sur un volume local peut être une solution plus rapide et plus facile.la source
/tmp
. Il s'avère que mon tmpfs/tmp
souffre du même problème, et je dois copier le fichier exécutable dans un vrai volume natif, c'est-à-dire mon dossier personnel ~ dans une partition ext4.chmod
apporte un changement durable. Si les autorisations changent une fois que vous les avez utiliséeschmod
pour les activer, quelque chose d'autre les modifie. (Cela peut inclure la suppression et la recréation du fichier ou le volume sur lequel le fichier est démonté et remonté. Si le volume est remonté, il existe des moyens de spécifier des autorisations par défaut pour les fichiers sur des volumes externes, mais cela dépasse la portée Je peux répondre maintenant.)Essaye ça:
la source
sudo
n'est généralement pas nécessaire, sauf si le programme se trouve dans un répertoire où vous n'avez pas la permission d'écrire (dans ce cas, comment l'avez-vous installé là-bas en premier lieu?)On dirait que vous n'avez pas le drapeau d'exécution défini sur les autorisations de fichier, essayez:
la source