マウントされたWindowsパーティションにある小さなスクリプトは直接実行を拒否しますが(shebangは実行)、興味深いことに/を#!/bin/bash
使用して呼び出します。スクリプトは単にコマンドバーです。bash
sh
grep
sed
ドライブがフル権限でマウントされました。
defaults,windows_names,rw,auto,user
だから私たちが得るファイルについて
-rwxrwxrwx 1 root root
このファイルの場合。
そこで何が起こったの?
答え1
おそらく、Windowsパーティションはnoexec
このフラグが設定された状態でマウントされているでしょう。出力でこれを確認できます。
mount
出力の行末(rw,noexec)
に、次の内容が表示されることがあります。このnoexec
フラグはデフォルトではないため、この方法でインストールするように明示的に構成すると通常発生します。
この場合、スクリプトを実行するのではなく、引数で指定されたスクリプトを解釈するを実行するため、スクリプトを実行するとbash /path/to/script.sh
機能します。bash
追加の注:
しかし興味深いのは、shで呼び出すとうまくいくということです。
スクリプトにはshebangがあるため、実行するのではなく#!/bin/bash
使用する必要があります。スクリプトの作成者はこの理由でこのshebangを使用できますが、一部の実装(またはシステムに接続されているすべて)は特定のBash機能をサポートしていない可能性があります。bash
sh
sh
最後にスクリプトを直接実行するにはできるexec
代わりにフラグを使用してドライバをマウントしてみてくださいnoexec
。しかし、これが本当に良い考えなのかまず考えてみてください。noexec
信頼できないソースから潜在的に有害なファイルが誤って実行されるのを防ぐためのセキュリティ機能のためにデフォルトでインストールされています。私はこれを変えてはいけないと思います。ただ実行してくださいbash
。