web-dev-qa-db-ja.com

Ubuntuは「bash:./program Permission denied」と言っています

私はコンピューター1とコンピューター2でUbuntuを実行しています。コンピューター1でC++プログラムをコンパイルし、./program_nameを使用して端末から実行できます。それはうまく動きます。

しかし、私がコンピュータ2でこれをやろうとすると、それは言う:bash: ./program_name: permission denied

何が問題なのですか。

155
Kian

chmod u+x program_name。それを実行します。

それでもうまくいかない場合は、USBデバイスからシステム上のネイティブボリュームにプログラムをコピーします。それからローカルコピーにchmod u+x program_nameを付けて実行します。

UnixやUnix風のシステムは一般的に、プログラムが実行許可を与えられていない限りプログラムを実行しません。あるシステムから別のシステムにファイルをコピーした(または外部ボリュームをマウントした)方法が、(安全機能として)実行許可をオフにしている可能性があります。コマンドchmod u+x nameは、ファイルを所有するユーザーにそれを実行するための許可を追加します。

そのコマンドは、ファイルに関連付けられている権限のみを変更します。ボリューム全体に関連付けられているセキュリティ管理策は変更されません。実行を妨げているのがボリュームのセキュリティ制御である場合(たとえば、UNIXのnoexecファイル内のボリュームにfstabオプションを指定すると、ボリューム上のファイルに対する実行権限を許可しないように指定できます)、再マウントできます。実行を許可するオプションを含むボリューム。ただし、ファイルをローカルボリュームにコピーすると、より早くより簡単な解決策になる場合があります。

306

これを試して:

Sudo chmod +x program_name
./program_name 
26
Vitor Villar

ファイル許可に実行フラグが設定されていないようですが、試してみてください。

chmod u+x program_name
10
Sam Roberts