CentOS Linux を含む ISO イメージと、それと一緒に構築された企業アプリケーションを作成するコマンドを非技術者が簡単に作成して実行できるようにするためのフォーム (JavaScript、jQuery、PHP、および HTML を使用) を作成しました。サンプル変数を使用した実際のコマンドを次に示します。
./test.pl --verbose --output tvmTEST.iso --virtual --isv 4.1.5.1.4147.8.0 --64bit --netproto static --hostname tvmTEST --address 192.168.5.235 --netmask 255.255.255.0 --gateway 192.168.5.252 --nameserver 192.168.5.21,192.168.5.2
この正確なコマンドは、root としてログインし、ISO が正常に作成されているときにシェルから起動すると正しく機能します。ただし、GUI では機能しません。フォームはコマンドを適切に構成し、perl プログラムを呼び出している PHP コードに渡します。PHP プログラムで構成されたコマンドをシェルでテストしたところ、ISO が作成されました。ISO イメージをビルドするperl プログラムを次に示します。フォームから起動すると、ユーザー apache として実行されます。しかし、次のように記述されている 665 行目で停止します。
system("sudo mount -o loop $c{centosiso} $mp") and die;
上記に渡された文字列を印刷しようとしましたが、system()
印刷されました:
sudo mount -o loop /tmp/test.pl-cache/CentOS-5.4-x86_64-bin-1of7.iso /mnt/CentOS
そこで、シェルからこのコマンドを実行してみたところ、実際に ISO がマウントされました! ただし、 の権限は に/mnt/CentOS
変更されました755
。なぜ私には明らかではないのですか?上記の行の有無にかかわらずテストしたことに注意してくださいsudo
。
そして、これに先立って、 のパーミッションは/mnt/CentOS
に設定され777
、所有者はapache
!に設定されました。これらの権限がフォームが機能しない理由ですか? 私は正しい軌道に乗っていますか?