[Armadillo:03577] Re: lighttpdでcommand not foundになる

林田 平馬 email@hidden
2008年 10月 23日 (木) 00:42:16 JST


竹之下様
お忙しいところすいません。
お世話になります。

林田です。

早速ですが、こちらの環境をお伝えします。
Armadillo220を、RTC付NANDモジュール(OP-NF256MRTC-10)とセットで利用させてもらっています。

環境は
カーネル :linux-2.6.12.3-a9-15
Atmark-dist:atmark-dist-20080617
Armadillo-220.Recoverベース
になります。
開発を行っているのはat-cgiベースの管理画面になります。ベースの処理系は
そのままにページの追加や項目の追加等で利用させていただいてます。

lighttpdの設定は少し長くなりますが

# httpdサーバが使うモジュールの選択
server.modules = 
("mod_fastcgi","mod_cgi","mod_rewrite","mod_userdir","mod_access","mod_auth","mod_setenv" 
 )

# ドキュメントルート
server.document-root = "/home/www-data/"

# indexファイルネームパターン
index-file.names = ( "index.php", "index.html","index.htm", 
"default.htm","index.cgi", "index.pl" )

# mimetype
mimetype.assign = (
".pdf" => "application/pdf",
".sig" => "application/pgp-signature",
".spl" => "application/futuresplash",
".class" => "application/octet-stream",
".ps" => "application/postscript",
".torrent" => "application/x-bittorrent",
".dvi" => "application/x-dvi",
".gz" => "application/x-gzip",
".pac" => "application/x-ns-proxy-autoconfig",
".swf" => "application/x-shockwave-flash",
".tar.gz" => "application/x-tgz",
".tgz" => "application/x-tgz",
".tar" => "application/x-tar",
".zip" => "application/zip",
".mp3" => "audio/mpeg",
".m3u" => "audio/x-mpegurl",
".wma" => "audio/x-ms-wma",
".wax" => "audio/x-ms-wax",
".ogg" => "application/ogg",
".wav" => "audio/x-wav",
".gif" => "image/gif",
".jpg" => "image/jpeg",
".jpeg" => "image/jpeg",
".png" => "image/png",
".xbm" => "image/x-xbitmap",
".xpm" => "image/x-xpixmap",
".xwd" => "image/x-xwindowdump",
".css" => "text/css",
".html" => "text/html",
".htm" => "text/html",
".js" => "text/javascript",
".asc" => "text/plain",
".c" => "text/plain",
".cpp" => "text/plain",
".log" => "text/plain",
".conf" => "text/plain",
".text" => "text/plain",
".txt" => "text/plain",
".dtd" => "text/xml",
".xml" => "text/xml",
".mpeg" => "video/mpeg",
".mpg" => "video/mpeg",
".mov" => "video/quicktime",
".qt" => "video/quicktime",
".avi" => "video/x-msvideo",
".asf" => "video/x-ms-asf",
".asx" => "video/x-ms-asf",
".wmv" => "video/x-ms-wmv",
".bz2" => "application/x-bzip",
".tbz" => "application/x-bzip-compressed-tar",
".tar.bz2" => "application/x-bzip-compressed-tar"
)

# サーバサービスポートの設定
server.port = 80

# ErrorDocument 404設定
server.error-handler-404 = "/404.html"

# pidファイルパス
server.pid-file = "/var/run/lighttpd.pid"

# lighttpd ユーザ
server.username = "www-data"

# lighttpd グループ
server.groupname = "www-data"

cgi.assign = ( ".sh"  => "/bin/sh",".cgi" => "" )

です。


エラーになる部分ですが例えばindex.cgiの画面表示部のソース(overview_display.c)の
display_overview(void)関数内で

    system("sudo uname -a | sudo cut -d \"_\" -f 2 > 
/tmp/at-admin/kernelversion");

のような感じで、sudoを介してシェルコマンドを呼んでいる部分で

sudo: uname: command not found
sudo: cut: command not found

のエラーがプロンプトに出力されます。

また元のat-cgiのままであるパスワード変更画面でも更新ボタンを押した際に
sudo: htpasswd: command not found
が出力されます。ネットワーク設定の更新などもエラーは出力されませんが更新が
できてないようです。これらはずべてthttpdの環境では動作しておりましたものを
Webサーバをlighttpdに変更した際に初めて発生したものです。

上記unameとcutを使用したコードはsudoを削除すると正常に動作しましました。
やはり、SUDOのSECURE_PATHが関係してるのでしょうか。コンパイルオプションで
外すようにあるのですが外し方がわからず、試せていません。
先のメールでも書きましたとおりフルパスで指定するとsudo付でも動作いたします。


時間の方ですがまず
TZ=JST-9
export TZ
を起動スクリプトのrcスクリプトの先頭で行っています。

また、cgi実行時に現在時間を表示させるために
    ct  = time(NULL);            /* 暦時間 */
    now = localtime(&ct);        /* ローカル時間 */
で時間の取得を行ってますが、その直前に
    system("TZ=JST-9");
    system("export TZ");
も記述(こちらは効いているのかどうか?)してまして
thttpdの時はこれで時間はJST-9で取得できておりました。
単純に9時間分加算すれば良いだけの話でもありますが・・・。

SUDOの設定の方は、/etc/sudoersファイルの方で
www-data        ALL=(ALL) NOPASSWD: ALL
に書換え、全てのコマンドをパスワード無しで実行できる
状態にしてテストしております。

というような状況です。
何かお気づきの点がありましたら、ご指摘よろしくお願いいたします。



> 竹之下です。
>
> 1. シェルコマンドの実行(system関数で呼び出すとcommand not foundになる)
> lighttpdの設定と、system関数を呼んでいるところのソース、
> エラーメッセージを(省略しないで)見せていただけますか?
> sudoを介さないで実行するコマンドは成功しますか?
>
> 2. 時間取得(UTC時間になる)
> Armadillo-MLの下記のスレッドで紹介されている方法は試されましたか?
> http://lists.atmark-techno.com/pipermail/armadillo/2006-November/001364.html
> http://lists.atmark-techno.com/pipermail/armadillo/2007-November/002326.html
>
> ※一応、使用しているArmadilloとatmark-distのバージョンも教えていただけますか?
>
 




armadillo メーリングリストの案内