Ubuntu zegt: “Bash :./programm toestemming geweigerd”

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_nameop 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 nameVoegt 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

Other episodes