/ mnt/extは、外付けハードドライブであるext2ファイルシステムにマウントされます。何らかの理由で、そこからスクリプトを実行できません。以下のセッションをご覧ください。
luntain@plato /mnt/ext $ echo "echo success" > k.sh
luntain@plato /mnt/ext $ chmod 777 k.sh
luntain@plato /mnt/ext $ ./k.sh
-bash: ./k.sh: Permission denied
126luntain@plato /mnt/ext $ ll k.sh
-rwxrwxrwx 1 luntain luntain 13 Jan 23 15:08 k.sh*
luntain@plato /mnt/ext $
エラーが表示される理由を知りたいです。
おそらく、ファイルシステムがマウントされたときにnoexec
属性が設定されていました。多分それはあなたのディストリビューションの「機能」です。
これを確認するには、マウントオプションを括弧内に表示するmount
を実行し、noexec
フラグを削除するには、ルートの下でmount -o remount,exec /mnt/ext
を使用します。
また、ユーザーオプションの後にexecオプションを配置してください。そうしないと、システムはドライブをnoexecとしてマウントします。
noexec
がマウントされたファイルシステムは、スクリプトの実行を防止するだけです(つまり、マジックナンバーまたはShebang行に基づいてカーネルにスクリプトを適切に実行するように要求します)。 exec
がマウントされた別のファイルシステムでインタープリターを呼び出して、スクリプトを引数として(またはstdinで)インタープリターに渡すことを妨げるものではありません。エルゴ、ルートでない場合は、sh k.sh
。
ファイルシステムはnoexecオプションでマウントされます。