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
のようなものに置き換えようとしましたが、何も出力されません。スクリプトを実行することさえできないようです。
何が原因なのかもわかりません。
ファイルシステムがnoexec
オプションセットでマウントされている可能性があるため、実行可能ファイルを実行できません。 mount ドキュメントから:
noexec
マウントされたファイルシステムでバイナリを直接実行しないでください。 (最近まで、とにかく/lib/ld*.so/mnt/binaryのようなコマンドを使用してバイナリを実行することが可能でした。このトリックはLinux 2.4.25/2.6.0以降失敗します。)
試してください:
mount | grep noexec
次に、ファイルシステムが出力にリストされているかどうかを確認します。
はいの場合、exec
オプションを使用してファイルシステムを再マウントすることにより、この問題を解決できます。
mount -o remount,exec filesystem
bash -x ./filename.filetype
は動作するはずです。 rootユーザーとして拒否された許可を得たとき、それは私のために働きました。
この問題に対する私の解決策はsourceを使用することです。私は非常に重要なデータのストレージボリュームにいた。このボリュームはnoexecとしてマウントされます。実行可能な単純なシェルスクリプトがありますが、権限の問題が発生しました。
./fixsamplesheet.sh # this guy is executable
-bash: ./fixsamplesheet.sh: Permission denied
source fixsamplesheet.sh # worked fine
私のUbuntuでのみテストされています。