shスクリプトの実行:実行可能ビットとroot権限にもかかわらず、「権限が拒否されました」

shスクリプトの実行:実行可能ビットとroot権限にもかかわらず、「権限が拒否されました」

Debianをインストールしました。仮想ボックス(一般的に私のシステムを損傷するさまざまな実験の場合)VirtualBoxゲストプラグインスクリプトを始めました。 rootとしてログインして起動しようとしましたが、autorun.sh「権限が拒否されました」というメッセージが表示されました。ls -lスクリプトに実行権限があることを示します。

申し訳ありません。出力をコピーできません。 VirtualBoxはプラグインなしではまったく役に立ちません。共有ディレクトリや共有クリップボードが機能しないためです。しかし、確実にするために私は直接権利をコピーしました。

#ls -l ./autorun.sh
-r-xr-xr-x 1 root root 6966 Mar 26 13:56 ./autorun.sh

最初は、スクリプトがエラーを引き起こすものを実行していると思いました。/bin/shこのようなものに置き換えようとしましたが、#/pathtorealsh/sh -xv出力はありません。スクリプトが実行されないようです。

私はその原因が何であるかさえ知りません。

答え1

おそらく、ファイルシステムがnoexecオプションセットとしてマウントされ、実行可能ファイルを実行できない可能性があります。 ~から文書:

実行されない

マウントされたファイルシステムではバイナリを直接実行することはできません。 (最近まで、/lib/ld*.so /mnt/binaryなどのコマンドを使用してバイナリを実行することが可能でした。このトリックはLinux 2.4.25/2.6.0以降は失敗します。)

努力する:

mount | grep noexec

次に、ファイルシステムが出力にリストされていることを確認します。

その場合は、次のオプションを使用してファイルシステムを再マウントしてこの問題を解決できますexec

mount -o remount,exec filesystem

答え2

bash -x ./filename.filetype動作する必要があります。 rootユーザーとして権限が拒否されたときに私に効果的でした。

答え3

この問題に対する私の解決策は、以下を使用することです。源泉。非常に重要なデータを保存しています。ボリュームが noexec モードでマウントされました。実行できる単純なシェルスクリプトがありますが、権限の問題が発生します。

./fixsamplesheet.sh # this guy is executable
-bash: ./fixsamplesheet.sh: Permission denied

source fixsamplesheet.sh # worked fine

私のUbuntuでのみテストされました。

答え4

Virtual BoxのDebian Busterのコピーにゲストアドインをインストールするときも同じ問題が発生しました。

回避策として、ファイルをVBoxLinuxEditions.runDebianホームディレクトリにコピーし、sudoを使用して実行しました。これはスクリプトが機能しないという解決策ではありませんが、少なくともゲスト追加をインストールすることはできました。

興味深いことに、MX LinuxはDebianベースですが、Virtual BoxにインストールされているMX LinuxバージョンにGuest Additionsをインストールするのに問題はありませんでした。

関連情報