[Armadillo:07254] Re: Armadillo-440:guest起動したユーザアプリでsocketを使用

Masakazu Itoh email@hidden
2011年 5月 23日 (月) 19:15:03 JST


竹之下様

お世話になっております。伊藤です。

以下の方法を追加することでguest(一般ユーザ)で起動したアプリでも
socketシステムコールが使用できるようになりました。

linux-2.6.26-at-android直下にある「.config」に定義されている
CONFIG_ANDROID_PARANOID_NETWORKを

CONFIG_ANDROID_PARANOID_NETWORK=n

としてカーネルをビルドしなおす。


いろいろとご教示ありがとうございました。
以上、ご報告まで。
よろしくお願いいたします。


>竹之下様
>
>お世話になっております。伊藤です。
>早速のご回答、まことにありがとうございます。
>
>提供する情報が不足していて申し訳ありませんでした。
>推察していただいたとおりの環境でしたので
>
>>Android on Ubuntuで一般ユーザでのsocketシステムコールがPermission deniedにな
>>>>http://blog.kmckk.com/archives/3022557.html
>ご教示いただきました、こちらのサイトを参考にさせていただき
>net/Kdonfigを
>config ANDROID_PARANOID_NETWORK
>	bool "Only allow certain groups to create sockets"
>	default n
>と設定してカーネルをビルドしなおしました。
>
>今回、
>mount /dev/mmcblk0p2 /mnt でmicroSDカードをマウントして
>ターミナルから
>su -l guest -c /mnt/"ユーザアプリパス"と入力して
>microSDカード上のユーザアプリを実行してみましたが
>socketシステムコールはエラーでPermission deniedでした。
>(sudo /mnt/"ユーザアプリパス"であればエラーは発生しません)
>
>
>何か他にお心当たりがございましたら
>ご教示いただければ幸いです。
>よろしくお願い申し上げます。
>
>以下、失礼ながらインラインでコメントさせていただきます。
>
>>竹之下です。
>>
>>エラーが発生したときは、動かした環境や、実際何をやったのか、
>>表示されたエラーは何だったのか、などを詳しく書いていただけると
>>ありがたいです。
>失礼いたしました申し訳ありませんでした。
>
>>
>>今回の場合、環境は以下という認識で良いでしょうか?
>>- ハードウェア: Armadillo-440
>>- カーネル: linux-a400-android-20110419b.bin.gz (Android用カーネル)
>>- ユーザーランド: 通常のユーザーランドで起動したあと、Androidユーザーランド
>>>>chroot
>>
>はい、その環境です。
>
>
>>> guest(uid:500)で起動したユーザアプリでsocketを使用したいのですが
>>> 現状socketのリターン値が-1となりsocketが生成できません。
>>socket()は、どのようにして呼んでいますか?
>>抜粋で良いので、実際のコードを見せていただくことはできますでしょうか?
>
>    bzero((char *)&Addr, sizeof(Addr));
>    Addr.sin_port = htons(SRCPORT);//SRCPORT:10000
>    Addr.sin_family = AF_INET;
>    Addr.sin_addr.s_addr = INADDR_ANY;
>
>    Fd = socket(AF_INET, SOCK_STREAM, 0);
>    if (Fd < 0){
>      perror("");
>      printf("socket: %d",Fd);
>    }
>です。
>
>
>>
>>また、エラーコードは何になっているでしょうか?
>>socket()がエラーになった直後に、perror()などを実行すると、
>>エラーコードを調べることができます。
>>
>エラーコードは
>Permission denied
>です。
>
>
>>今回の問題は、
>>- Android用カーネルを使っている(多分)
>>- 特権ユーザでは問題ない
>>- 一般ユーザでエラーになる
>>とのことですので、Android用カーネルに含まれる機能である"paranoid network"
>>の制限に引っかかっているのではないかと、思います。
>>
>>京都マイクロコンピュータさんのブログで、丁寧に説明されていますので
>>参照してみてください。
>>
>>Android on Ubuntuで一般ユーザでのsocketシステムコールがPermission deniedにな
>>>>http://blog.kmckk.com/archives/3022557.html
>>
>>-- 
>>Koyo Takenoshita
>>
>>_______________________________________________
>>armadillo mailing list
>>email@hidden
>>http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
>_______________________________________________
>armadillo mailing list
>email@hidden
>http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo



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