私はコンピューター1とコンピューター2でUbuntuを実行しています。コンピューター1でC++プログラムをコンパイルし、./program_name
を使用して端末から実行できます。それはうまく動きます。
しかし、私がコンピュータ2でこれをやろうとすると、それは言う:bash: ./program_name: permission denied
何が問題なのですか。
chmod u+x program_name
。それを実行します。
それでもうまくいかない場合は、USBデバイスからシステム上のネイティブボリュームにプログラムをコピーします。それからローカルコピーにchmod u+x program_name
を付けて実行します。
UnixやUnix風のシステムは一般的に、プログラムが実行許可を与えられていない限りプログラムを実行しません。あるシステムから別のシステムにファイルをコピーした(または外部ボリュームをマウントした)方法が、(安全機能として)実行許可をオフにしている可能性があります。コマンドchmod u+x name
は、ファイルを所有するユーザーにそれを実行するための許可を追加します。
そのコマンドは、ファイルに関連付けられている権限のみを変更します。ボリューム全体に関連付けられているセキュリティ管理策は変更されません。実行を妨げているのがボリュームのセキュリティ制御である場合(たとえば、UNIXのnoexec
ファイル内のボリュームにfstab
オプションを指定すると、ボリューム上のファイルに対する実行権限を許可しないように指定できます)、再マウントできます。実行を許可するオプションを含むボリューム。ただし、ファイルをローカルボリュームにコピーすると、より早くより簡単な解決策になる場合があります。
これを試して:
Sudo chmod +x program_name
./program_name
ファイル許可に実行フラグが設定されていないようですが、試してみてください。
chmod u+x program_name