マウントされた外部ドライブでスクリプトを実行できません


23

/ 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 $ 

エラーが表示される理由を見つけたいです。

回答:


22

おそらくnoexec、ファイルシステムがマウントされたときに設定された属性がありました。多分それはあなたのディストリビューションの「機能」でしょう。

それを確認するにはmount、括弧内にマウントオプションを表示するコマンドを実行し、ルートの下でnoexec使用できるフラグを削除しますmount -o remount,exec /mnt/ext

また、ユーザーオプションの後にexecオプションを配置してください。そうしないと、システムはドライブをnoexecとしてマウントします。



3

マウントされたファイルシステムnoexecは、スクリプトの実行のみを防止します(つまり、マジックナンバーまたはシバン行に基づいて適切に実行するようカーネルに要求します)。マウントされている別のファイルシステムでインタープリターを呼び出し、そのインタープリターにexec引数として(またはstdinで)スクリプトを渡すことを妨げません。エルゴ、ルートではない場合、あなただけでこれを回避することができますsh k.sh

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.