[Armadillo:06174] Re: (Armadillo-220)flatfsd -s が終了しない
mizo
email@hidden
2010年 11月 17日 (水) 11:51:52 JST
溝渕です。
あまり関係が無いかもしれませんが、cgiを実行しているユーザはrootになって
いますか?もし違う場合は、flatfsdの実行権限が無い場合があります。
at-cgiでもflatfsdを使用しています。at-cgiでは次のようにしています。
#define SUDO_PATH "/usr/bin/sudo"
#define FLATFSD_PATH "/bin/flatfsd"
char *flatfsd_args[] = {SUDO_PATH, FLATFSD_PATH, "-s", NULL};
ret = cgi_exec(flatfsd_args[0], flatfsd_args);
Armadillo-220.Recoverの場合は、/etc/sudoresに以下の記述があり、パスワー
ド無しでsudoが実行可能です。
Cmnd_Alias CGIADMIN = /bin/cp, /sbin/ifdown, /sbin/ifup,
/sbin/avahi-daemon,\
/etc/init.d/bridges, /bin/flatfsd, /sbin/ifconfig,\
/bin/rm, /bin/cat, /bin/htpasswd, /sbin/reboot,\
/bin/touch, /bin/hostname, /bin/netflash,
/bin/cat, \
/bin/ledctrl, /etc/init.d/firewall,
/etc/init.d/snort, \ /bin/kill, /usr/bin/crontab,
/bin/mail
www-data ALL= NOPASSWD: CGIADMIN
at-cgiのソースは、
atmark-dist-[version]/user/at-cgi/
です。必要があれば確認してみてください。
以上です。
Tsutomu Ando wrote:
> こんにちは、安藤と申します。
>
> Armadillo-220 で CGI から flatfsd -s を実行しようとしているのですが、
> flatfsd -s が終了しない現象で悩んでいます。時々、10 秒程度で終了する場
> 合も有るのですが、10 回に 9 回は終了しない (もしくは、40 分程度かかる)
> です。
>
> どなたか、flatfsd -s を CGI から実行させている方でこの問題の回避策を
> 御存知の方、いらっしゃらないでしょうか。
>
>
> 尚、シリアルコンソールから
> [email@hidden (ttyAM0) ~]# flatfsd -s
> と実行すると、5 秒もかからず終了します。
>
> また、使用している HTTP サーバは thttpd です。
>
> プログラムは以下の通りで、index.html から flat.cgi を呼び出します。
>
> index.html --- ここから
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
> "http://www.w3.org/TR/html4/strict.dtd">
> <html>
> <head>
> <title>flatfsd test</title>
> <meta http-equiv="Content-Type" content="text/html">
> </head>
> <body>
> <h1>flatfsd test</h1>
>
> <form method="post" action="/cgi-bin/flat.cgi">
>
> <hr>
> <p>
> <table border="0">
> <tr>
> <td align="center" valign="middle"><input type="submit" name="button" value="FlatFsd"></td>
> </tr>
> </table>
> </p>
> <hr>
>
> </form>
>
> </body>
> </html>
> --- ここまで
>
> flat.c(flat.cgi) --- ここから
> #include <stdio.h>
> #include "simple-cgi-app-io.h"
>
> int main()
> {
> char *args[] = {"/bin/flatfsd", "-s", NULL};
> int ret = 0;
>
> /* cgi_exec() */
> printf("Content-type: text/html\n\n");
> printf("Start flatfsd at cgi_exec()<br>\n");
> ret = cgi_exec(args[0], args);
> if (ret < 0) {
> printf("500 cgi_exec() error.<br>\n");
> } else {
> printf("200 cgi_exec() success.<br>\n");
> }
> printf("Complete flatfsd.<br>\n");
>
> /* system() */
> /* printf("Content-type: text/html\n\n"); */
> /* printf("Start flatfsd at system()<br>\n"); */
> /* system("flatfsd -s"); */
> /* printf("Complete flatfsd.<br>\n"); */
>
> return 0;
> }
> --- ここまで
>
> ps で実行プロセスを確認すると
>
> [email@hidden (ttyAM0) ~]# ps ax
> PID Uid VmSize Stat Command
> 1 root 588 S init
> 2 root SWN [ksoftirqd/0]
> 3 root SW< [events/0]
> 4 root SW< [khelper]
> 5 root SW< [kthread]
> 10 root SW< [kblockd/0]
> 14 root SW [khubd]
> 48 root SW [pdflush]
> 49 root SW [pdflush]
> 51 root SW< [aio/0]
> 50 root SW [kswapd0]
> 606 root SW [mtdblockd]
> 618 root SW< [pegasus]
> 627 root SW< [krfcommd]
> 759 root 608 R syslogd -m 0 -L
> 769 root 596 S klogd
> 853 root 560 S inetd
> 871 root 1504 S /sbin/sshd -f /etc/ssh/sshd_config
> 881 root 912 S thttpd -C /etc/thttpd.conf
> 894 root 612 S /bin/cron
> 910 root 728 S -ash
> 911 root 564 S /sbin/getty -L 115200 ttyAM1 vt102
> 923 root 324 S N flat.cgi
> 925 root 912 S thttpd -C /etc/thttpd.conf
> 926 root 672 R N /bin/flatfsd -s
> 928 root 640 R ps ax
> [email@hidden (ttyAM0) ~]#
>
> となり、flatfsd -s は優先度が低く設定された状態ですが実行されている様
> です。
>
> 上の flat.c にて cgi_exec() ではなく system() を用いた場合でも同じく、
> flatfsd -s が終了しません。
>
> 使用しているカーネル:
> linux-a220-1.10.bin.gz
>
> 開発環境:
> Debian GNU/Linux Squeeze 上の Virtualbox で動作させた
> Debian GNU/Linux Etch-And-A-Half に、a220-development-environment や
> atde-essential-arm などの開発パッケージを入れたもの。
>
> 以上、よろしくお願いします。
--
**************************************************
株式会社アットマークテクノ 開発部 溝渕大輔
〒060-0035 札幌市中央区北5条東2丁目AFTビル6F
TEL:011-207-6550 / FAX:011-207-6570
http://www.atmark-techno.com/
e-mail:email@hidden
**************************************************
armadillo メーリングリストの案内