Ik loop Ubuntu op computer 1 en computer 2. Ik heb een C++ -programma op de computer 1 gecompileerd en ik kan het uit de terminal uitvoeren met ./program_name
. Het loopt goed.
Wanneer ik dit echter probeer te doen op Computer 2, zegt het: bash: ./program_name: permission denied
Wat is er aan de hand en wat kan ik eraan doen?
Antwoord 1, Autoriteit 100%
chmod u+x program_name
. Voer het vervolgens uit.
Als dat niet werkt, kopieert u het programma van het USB-apparaat naar een native volume op het systeem. Dan chmod u+x program_name
op de lokale kopie en voert u uit.
Unix en Unix-achtige systemen zullen in het algemeen geen programma uitvoeren, tenzij het met toestemming is gemarkeerd om uit te voeren. De manier waarop u het bestand van het ene systeem naar een ander hebt gekopieerd (of gemonteerd een extern volume) heeft mogelijk toestemming (als een veiligheidsfunctie) uitgeschakeld. De opdracht chmod u+x name
Voegt toestemming toe voor de gebruiker die het bestand bezit om het uit te voeren.
Die opdracht verandert alleen de machtigingen die zijn gekoppeld aan het bestand; Het verandert de beveiligingscontroles niet in verband met het gehele volume. Als het beveiligingscontroles is op het volume dat interfereert met uitvoering (bijvoorbeeld een noexec
-optie kan worden opgegeven voor een volume in de UNIX fstab
-bestand, die zegt niet Sta toestemming uit voor bestanden op het volume), dan kunt u het volume opzoeken met opties om uitvoering mogelijk te maken. Kopiëren van het bestand naar een lokaal volume kan echter een snellere en eenvoudiger oplossing zijn.
Antwoord 2, Autoriteit 8%
Probeer dit:
sudo chmod +x program_name
./program_name
Antwoord 3, Autoriteit 3%
Het klinkt alsof je de vlag execute niet hebt ingesteld op de bestandsrechten, probeer:
chmod u+x program_name