[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 メーリングリストの案内