
もう一度私はシステムの奇妙な動作を発見しました。私はDebian 6.0.6を実行していますが、CD / DVDから直接スクリプトを実行するのに問題があります。最後に、以下を使用する必要がありました。
sh /media/cdrom/command
それを実行します。 shに頼らなければならないのは何がそんなに大きいのですか?スクリプトがbash関数に依存している場合はどうなりますか?私の考えは本当に迷惑であり、セキュリティにはあまり役に立ちません。
この行動の正当な理由を知っている人はいますか?
PS:./...を使用して直接実行しようとすると、問題の手がかりを提供しないエラーが発生します(ファイルシステムはnoexecとしてマウントされます)。
bash: ./media/cdrom/command: No such file or directory
bash /media/cdrom/commandで実行すると、同じエラーが発生します(コマンドラインから引数として渡されたコマンドの場合でも、インストールオプションの検証はbashでも確認されます)。
永続的な解決策は、/etc/fstabのマウントオプションにexecを追加することです。たとえば、次のようになります。
/dev/scd0 /media/cdrom0 udf,iso9660 user,noauto,exec 0 0
答え1
ファイルシステムは通常noexec,nosuid
、セキュリティ強化のためにデフォルトでマウントされています。したがって、ファイルセットに実行可能なビットが表示されても、カーネルはそれを実行することを拒否します。interpreter path/to/script
これをシステムへの要求として呼び出して実行すると、システムは引数を受け取り、解析してファイルシステムinterpreter
によってpath/to/script
課される制限をバイパスします(コンパイルされた実行ファイルを使用して同じ効果を得ることができます)/lib/ld-linux.so.1 path/to/executable
。
だから1つのオプションですmount -o exec ...
。/etc/fstab
通常、defaults
オプションをに置き換えてオプションを配置できますdefaults,exec
。ただし、実際に行っていることを知らない限り、これを行わないことをお勧めします。
BASHの詳細については。としてbash
実行されてもsh
。bash path/to/script
答え2
これはゲームに少し遅れましたが、私が持っている質問に対する答えを探している間にこれを見つけ、他の人が検索するのに役立つと思いました。私たちのシェルスクリプトは、Windows PCでCDに焼かれ、Redhatボックスにインストールされていますrw-rw-r--
。r-xr-xr-x
ターゲットコンピュータにインストールすると、権限が同じように見えるので、単に実行します。/mnt/cdrom/install.sh