web-dev-qa-db-ja.com

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

VirtualBox に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のようなものに置き換えようとしましたが、何も出力されません。スクリプトを実行することさえできないようです。

何が原因なのかもわかりません。

18
Hi-Angel

ファイルシステムがnoexecオプションセットでマウントされている可能性があるため、実行可能ファイルを実行できません。 mount ドキュメントから:

noexec

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

試してください:

mount | grep noexec

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

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

mount -o remount,exec filesystem
31
cuonglm

bash -x ./filename.filetypeは動作するはずです。 rootユーザーとして拒否された許可を得たとき、それは私のために働きました。

2
Stephen Howe

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

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

source fixsamplesheet.sh # worked fine

私のUbuntuでのみテストされています。

1
Kemin Zhou