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


17

DebianをVirtualBoxにインストールし(通常はシステムを破壊するさまざまな実験のために)、VirtualBoxゲストアドオンスクリプトを起動しようとしました。rootとしてログインして起動しようとしましたがautorun.sh、«Permission denied»になりました。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が、出力がありませんでした。スクリプトを実行することさえできないようです。

何がそれを引き起こすのかさえ私には分かりません。


2
動作するはずです。bashを使用して明示的に実行してみてください: `bash -x ./autorun.sh"。これにより、さらに手がかりが得られるでしょう。
nobar 14

2
の出力はmount | grep noexec何ですか?
cuonglm 14

1
@Gnouc、あなたは正しい、マウントされた«cdrom»にnoexecセットがあります。おそらくあなたはそれを答えとして投稿するかもしれません。その間、私はexec権限で再マウントしようとしています。ええと、ファイルシステムにそのような属性があることさえ知りませんでした。
ハイエンジェル14

そして、あなたはsh ./autorun.sh何が起こるかを経由してそれを実行しようとすると?
修正

回答:


29

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

noexec

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

試してください:

mount | grep noexec

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

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

mount -o remount,exec filesystem

私にはうまくいきませんでした。アンマウントしてから、通常どおりに再マウントする必要がありました。それからそれはうまく働きました。
-datakid

@datakid:あなたのfsは何ですか?
cuonglm

私はDebian 9でこの問題を抱えています、スクリプトがルートとして実行されている場合、一部のファイルは許可されていませんが、Windowsの動作のように... = [
Luciano Andress Martini

noexec「sh:75:script.sh:許可が拒否されました」
-tmm1

2

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


いいえ、最終的に問題はnoexecマウントオプションであることが判明したため、実行する必要のあるファイルがさらにある可能性があるため、これは機能しません。すなわち、filename.filetype同じファイルシステムから他のファイルを実行しようとするでしょう。簡単なテストで簡単に確認できます。「hello」を出力する2行のスクリプトを作成し、再度自分自身を呼び出しますが、実行権は設定しません。を使用して実行すると-x、「hello」が出力されますが、再帰呼び出し行はエラーをトリガーします。
ハイエンジェル

1

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

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

source fixsamplesheet.sh # worked fine

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.