web-dev-qa-db-ja.com

実行許可ビットが設定されているファイルを実行できません

ええと、私はLinuxにはあまりにも環境に配慮していますが、知っておくべきことで立ち往生しています。私のファイルには、次のパーミッションビットセットがあります。

-r-xr-xr-x

rootによって所有されています(ただし、-xはどのユーザーでもアクティブであるため、問題ではありません)書き込み可能ではなく、CD-ROMとしてマウントされた仮想ISOであってもCDROMに存在します。問題ないように聞こえますが、実行できません。「アクセスが拒否されました」と表示されます。マウント自体に実行権限があるので、実行する必要がありますが、なぜ実行しないのですか?

[〜#〜]編集[〜#〜]

bash ./autorun.shを明示すると機能するので、問題は解決しましたが、疑いはありません。とにかく、中身にはrootアカウントが必要ですが、機能します。

4
Felice Pollano

最も可能性の高い説明は Patrick's :ファイルシステムはnoexecオプションでマウントされているため、すべてのファイルの実行許可ビットは無視され、このファイルシステムにあるプログラムを直接実行することはできません。 noexecマウントオプションは、/etc/fstabuserオプションによって暗示されることに注意してください(おそらくセキュリティ上の理由から、nodevおよびnosuidオプションとは異なり、noexecは実際にはセキュリティを提供しません)。 userを使用していて、実行可能ファイルが必要な場合は、user,execを使用します。

スクリプトの Shebang 行が、存在するが実行可能ではないファイルを指している可能性もあります。その場合、 エラーメッセージは紛らわしいことにスクリプトを参照しています エラーはインタプリタにあります。ただし、Shebangが間違った既存のファイルを指している可能性はほとんどありません(エラーが「見つからなかった」場合は、ぶら下がっているShebangの方が妥当です)。