bash権限が拒否されましたが、shは機能します。

bash権限が拒否されましたが、shは機能します。

マウントされたWindowsパーティションにある小さなスクリプトは直接実行を拒否しますが(shebangは実行)、興味深いことに/を#!/bin/bash使用して呼び出します。スクリプトは単にコマンドバーです。bashshgrepsed

ドライブがフル権限でマウントされました。

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機能をサポートしていない可能性があります。bashshsh

最後にスクリプトを直接実行するにはできるexec代わりにフラグを使用してドライバをマウントしてみてくださいnoexec。しかし、これが本当に良い考えなのかまず考えてみてください。noexec信頼できないソースから潜在的に有害なファイルが誤って実行されるのを防ぐためのセキュリティ機能のためにデフォルトでインストールされています。私はこれを変えてはいけないと思います。ただ実行してくださいbash

関連情報