「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



昨日、ようやく回避策が見つかったと思って、ホッと
していたのもつかの間…。
いまひとつ、回避が難しい事態に遭遇。

今やっているのは、Raspbianの初期設定に外付けの
パッケージを極力使わず、設定周りも基本的に
弄らず、使用する言語はPython縛りで、CGI経由で
GPIOをオン/オフするって言う実験。


何が難しい事態かというと…


とりあえず昨日までのあらすじ。

apacheを標準でインストールしておいて、/cgi-bin/
に放り込んだPythonのCGIにPCのブラウザからアクセス
して、GPIOに繋いだ3つのLEDを個別にオン/オフする
って言うスクリプトはどう書いたらいいのかで四苦八苦。

Raspberry Pi上のPythonで、押されたボタンをCGIで
入力してhtmlに編集して表示するのも簡単。GPIOに
ぶら下がったLEDをオン/オフするのも簡単。この場合
のGPIOを弄りに行く処理は、標準で入っているGPIO
ライブラリを使用。(ファイル入出力でもいいんだけど)

問題は、GPIOはroot権限じゃないとアクセスできない
ってこと。
apache配下で起動されるCGIのスクリプトは、root
じゃないユーザで実行されるので、CGIは直接GPIO
叩くことが出来ない。

なので、rootを使わなくてもGPIOを叩きにいける
ライブラリか何かをインストールするか、モロモロ
設定を弄って無理やりアクセス出来るようにしちゃうか、
そんな対応が必要。

セキュリティー上、後者はいやだし、出来るだけ
何らかのパッケージには偏りたくないので前者も
避けたい。

とりあえず最初に考えたのは、set user idを
スクリプトのファイル属性につけちゃう方法。
(実行時のユーザが実行者じゃなく、ファイル
 所有者…例えばrootで実行できるので)

どうかな?と思ってやってみると…どうやらPython
に限らず、Raspbianでもスクリプトは全般的に
set user idが無効になっているみたい。

まぁ、セキュリティーを考えれば、スクリプトの類を
自動的にroot権限で実行させるのは危険極まりない
のでI(特にCGIなんて)、まぁどのディストリビューション
でも今は実行できないようになってるんだろうな。
Raspberry Piだって一人前のlinux機なんだし。


んで、次に考えたのが、I/O部分だけをCで書くこと。
これならchmodでset user id付けられるし。
…これやっちゃえば簡単なんだけど、色々アレな
事情があるのでひとまず他の方法を探す。

アブナイとされているジャイルブレイクsystem
のコマンド実行をあえて試す。CGIのスクリプト
から外部のスクリプトをsudoで実行させて、
そっちでGPIOの処理を済ますっていう作戦。

当然ながら、スクリプトインジェクション対策
とかそれなりにとった上でのこと。

やってみる…

とりあえず、CGI用のスクリプトをコマンドライン
から実行かけてみると、無事GPIOを叩くスクリプト
がrootで実行されて、LEDを点灯/消灯できること
がわかった。
(実は、パスワード不要なユーザでもsudoをキック
 する際に、ttyからの起動じゃない場合はパスワード
 入力に失敗してしまうなので、パスワードを標準入力
 から食わせる必要があると判って、一苦労)

http://brown.ap.teacup.com/nekosan0/1871.html
昨日はここまで。


んで、今日はその続きから。

いざ、apacheのCGI用ディレクトリ/cgi-bin/に
CGIスクリプトを放り込んでみると…なぜか動かない。
sudoでスイッチさせてるところが上手く行ってない
みたいだなぁ…

コマンドラインではちゃんと動くのに、なんで
CGIで動かすと上手く行かないんだろう?

理由が分らずしばし考え込む。エラーメッセージを
眺める。


…判った。apacheから実行されるスクリプトの
ユーザは「pi」じゃなくて「www-data」だから、
piのパスワードでsudoが掛からないんだな。

うーーーーーーん。suEXECか?Apacheの設定を
色々弄り倒すか?   …とか考えたんだけど、
色々調べてたら、Pythonに簡易型のCGIサーバ機能
が入ってて、2~3行のスクリプトを書けば簡単な
CGIサーバが起動できるって判ったので、そっちを
試す。

http://yife.hateblo.jp/entry/2012/01/25/054210
↑ここ参考。

おぉ。なんと簡単な! たった2行。

んで、さんざんApache用に作ってきたCGIスクリプト
をこっちに持ってきてみる。

…ちょっとばかりアレコレあったけど…



とりあえず希望してた機能は一通り盛り込めた。
(return value = の右に何も書いてないのは、
 エラーが何も帰ってきてないって印)

機能的には3つのボタンのどれかを押すと、対応する
LEDが1個だけ光るっていうだけの代物。

あぁ、こんな簡単なことなのに、意外に苦戦したな。
CGI本体部分じゃなく、GPIOがroot権限周りだけ
っていう1点で。
セキュリティーホールを作りまくってもいいなら
もっと簡単なのかも知れないけど、いくらなんでも
ある程度は安全にしておかないと、やっぱアブナイ
からなぁ。Raspbianもそういう設計になっている
みたいだし。

でもまぁ、systemのコマンド実行自体が大きな地雷
なんだけどな。


この後、どうするかな…

コイツの穴をふさぐのか、大人しくwiringPiを使うのか、
https://projects.drogon.net/raspberry-pi/wiringpi/

それともwebIOPiか、
http://code.google.com/p/webiopi/
http://www.raspberrypi.org/phpBB3/viewtopic.php?t=15257

もしくは自分でc言語の外部単機能プログラム作って、
chmodでset user idつけるか。

いずれにしても、Pythonのスクリプト中に文字列で
パスワード書いたままにしておくのはイヤだな。
せめて、他の見えにくいディレクトリにテキスト
ファイルで置いておいて、そいつを読み出して使う
方がいいよな。そこだけは必須だな。

なんかの拍子にエラーが起こって、エラー行を
ブラウザに表示しちゃったりしたら怖いからな。
…っていうか、エラーが起きた途端に表示しちゃう
のが今の仕様だからな。

まぁ、何か1個方法が見つかれば、あとは少しずつ
いいものに乗り換えていけばいいか。ってことで
今日はここまで。





コメント ( 4 )




昨日さんざん悩んでた件の原因はようやく
わかった。

なるほど。セキュリティホールになるから
普通はふさがれてるってことなんだな。まぁ、
真っ当な話だな。

んで、そこからどうしたものか…

出来るだけ簡易的で、わかり易く、陳腐化せず、
かといってセキュリティも無視しない方法…


とりあえず、最初に思いついた抜け道が使えるのか、
ちょっとだけ実験をしてみる。
…出来そうだな。

問題は、どのくらいの穴が残っているのか。
一応、ふさげる部分はふさいだはずなんだけど、
ちょっと弄っただけで危険な代物に変わる
よなぁ…スクリプト言語はそこがメンドイ。

うーーーん。ちょっと悩ましい…


http://makezine.jp/blog/2013/03/raspberry-leaf-a-simple-reference-for-raspberry-pi-pins.html
Raspberry Piのこのピン配置表。便利だな。


http://toragi.cqpub.co.jp/Portals/0/support/junior/index.html
ラプラス変換と周波数応答か。読みたいな。


http://jp.reuters.com/article/oddlyEnoughNews/idJPTYE92500F20130306
上空1万メートルからなら、天候に影響されずに
眺められそうだな。東京付近では見れるのか
どうか…見れるといいな。


http://www.indiegogo.com/projects/mu-thermal-camera-the-greatest-tool-to-eliminate-energy-waste
このサーマルカメラ。結構高解像だな。300ドル
でこれはかなりクル。


http://headlines.yahoo.co.jp/hl?a=20130307-00000237-yom-soci
これは胸に刺さるな。


http://headlines.yahoo.co.jp/hl?a=20130306-00000002-fliv-moto
ホンダのターボ、どうなのかな。昔の栄光を、と
なるのかどうか。
ホンダのターボ車が圧倒したのは、「出力の大きい
エンジンが作れた」からじゃなくて、「燃費のいい
エンジンだったから出力を上げても走りきれるエンジン」
だったからなんだよな。後藤さんのころのMP4/4。

今はネコも杓子も燃費エンジンの開発に明け暮れてる
から、難しいかもな…





コメント ( 0 )




http://akizukidenshi.com/catalog/g/gI-06517/

秋月の光センサーのリニア特性が凄くイイカンジ
だな。
しかも計測できるレンジが結構広い。60円。こいつは
買占めだな。


相変わらずRaspberry Piを弄って遊んでいるんだけど、
なんかパーミッションの設定どおりに動いてくれない
事象で足止め状態。オイラ職業プログラマではない
から、こういうとき最大の弱点なんだよな。

プログラマーさんにちょこっと「これよろしく」って
頼めば1秒で出来ちゃうようなことを、ネットを
あちこち彷徨ってもこのザマ。

多分、単純な話のはずなんだよな…


知識として知ってるのと、実際に出来ることの間の
ギャップは、超巨大戦艦並みだよな。
そうだ。YAMATO2199のvol2を借りてあったんだった。
返す前にタンノウしておかないと。





コメント ( 0 )




http://www.astroarts.co.jp/special/c2011l4/index-j.shtml
astroarts社の情報では、南半球ではもう見え初めて
いる…っていうか、もうあと1週間もせずに近日点
なのか。花粉のひどい季節三月の中旬が見ごろ
らしい。

4月になるとさすがに暗くなってっちゃうんだろうな。
グラフから読み取ると、3月中が吉と出てるんだけど、
もしかしたら、太陽に接近した拍子に、複数に分裂
して増光…ってなことにならないかなぁ。

2007年11月のホームズ彗星は、急激に増光して、肉眼
でも見えるレベルになったんだよな。あんなのを
期待したいところ。


http://headlines.yahoo.co.jp/hl?a=20130305-00000174-jij-spo
東京オリンピックねぇ…。今回は、なんとなく賛成に
傾きつつあるな。観光立国としてやっていくとして、
リピーターを増やすためのきっかけとしてはヨサゲ
な気がする。


http://headlines.yahoo.co.jp/hl?a=20130306-00000003-jij-bus_all
みんなのシャープ。サムスンは無いだろう…
ぺんぺん草1本残らないぞ。きっと。知財を全部
持っていかれちゃって…
何か他の手段は無いの?


http://www.nicovideo.jp/watch/sm20248447
洗車の入さん、サクサクと3作目。速い。135フィルム
とAPSねぇ…。APSは、出た瞬間に絶対失敗すると
思ったな。まさかデジタル時代になって、「サイズ」
だけが生き残るとは…


http://headlines.yahoo.co.jp/hl?a=20130305-00000108-mai-soci
あれから2年を目前に、溜まり続ける汚染水はなぜ
フィルター通して排出できないんだろう?って
思ってたんだけど… トリチウムなのか…

トリチウムはさすがに遠心分離とかでしか処理
出来ないだろうし、大規模には出来ないよな…
難しいな…


というか、アクチニウム系列の分裂過程では
トリチウムなんて出て来ないんじゃん?って
思ったんだけど、窒素とか酸素とかが宇宙線に
あたっても出来るくらいだから、崩壊時に出る
放射線と重水でも発生するってことなんだろうな。
難しいな…

あれかな。大量の電力を使って、電気分解で水素に
して大気に放出したら、勝手に宇宙空間に逃げて
いくんじゃね?


http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1382550793?fr=rcmd_chie_detail
この「東京ドーム何個分」って言うのがツボッタ。
ベストアンサーもグー。



コメント ( 0 )




しばらく使ってきたutf8対応版teratermが、
どうやらscp対応じゃなかったので、新しい
バージョンを使ってみることにした。
http://www.forest.impress.co.jp/library/software/utf8teraterm/

とりあえず、Raspberry PiからPCへのダウンロード
は簡単に出来た。

アップロードはファイルのd&dでもっと簡単。

改行コードがなぁ…。自動変換がないから、windows
の改行コードとは親和性が低いかな。まぁ、windows
側のエディタが対応してればいいんだけど。


http://sengoku-akb.jugem.jp/?eid=400
便利かも。


http://headlines.yahoo.co.jp/hl?a=20130304-00000073-zdn_n-sci
へぇ。こういう話だったのか。


http://www.nicovideo.jp/watch/sm20234745
洗車の入さん、あっという間に2作目。ライカか。
カメラねたは嫌いじゃないんだけど、やっぱ
GGTVの新作作って欲しいな。



コメント ( 0 )



« 前ページ 次ページ »