コンピューター 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
は、ファイルを所有するユーザーがファイルを実行するためのアクセス許可を追加します。
このコマンドは、ファイルに関連付けられたアクセス許可のみを変更します。ボリューム全体に関連付けられているセキュリティ制御は変更されません。実行を妨げているのがボリューム上のセキュリティ制御である場合 (たとえば、ボリューム上のファイルの実行許可を許可しないというnoexec
オプションが Unixfstab
ファイルのボリュームに指定されている可能性があります)、ボリュームを再マウントできます。実行を許可するオプション付き。ただし、ファイルをローカル ボリュームにコピーする方が、より迅速で簡単な解決策になる場合があります。
これを試して:
sudo chmod +x program_name
./program_name
ファイルのアクセス許可に実行フラグが設定されていないようです。試してください:
chmod u+x program_name