hiromasa.zone : o)

2006/8/12 Saturday 投稿時の月齢:18.3  月名:寝待月  潮汐:中潮 Moon:18.3[寝待月]今日の心技体 : 低調期低調期好調前不安定期

セーフモードの束縛 このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 曇時々晴 ひろまさ @ 13:18

WordPress ユーザの間ではおなじみ「セーフモードの束縛」。 WP のプラグインを動かすと、

Warning: fopen() [function.fopen]: SAFE MODE Restriction in effect. The script whose uid is 10358 is not allowed to access cache-phase2.php on line 79

なーんてでちゃって、げんなりという例のアレです。 有名なサーバでは XREA さんがこの PHP のセーフモードに対応しています。

これってなにがセーフなのか、いれてないと何がやばいのか、あほな言葉で解説しているサイトもあまりなさそうなので、おばかな hiromasa.zone でそっと書いてみます。 🙂

セーフモードを説明をするには、まずはファイルパーミッション (FTP で777 とか 666 とかするあれ)のことを書かねばなりません。

時は戻り、インターネット・アンダーグラウンド全盛期。(←戻ってばっか

2000 年より前のインターネット。 「ホームページ」全盛期で、Perl / CGI なんかつかって掲示板とか自前でもっているとちょっとおしゃれな時。 CGI プログラマもレンタルサーバ会社も手探り状態、試行錯誤。 CGI が動く無料サーバを探して一生懸命作った掲示板システムを設置。 パーミッション?よぉくわからないから、とりあえず 777 でいーやみたいな。  動くし。

次の日みたら、何者かの連続投稿で埋め尽くされ、その次の日みたさっぱりした感じに全部消えていた orz

懐かしいね。 連続投稿はともかく、なぁんでログが消え去ったのでしょう? これ、あらかたは同一サーバにいる悪意のユーザに消されたのが原因です。

PHP のセーフモードの存在意義は、上のログ削除のような「共有サーバ上で同じサーバの他人のファイルを勝手に書き換える」ことを防ぐことにあります。 そうです、セーフがはいっていなくて、ある条件がそろうとこれができてしまうのです。

なぜそんなことが起こせるのか。 これには UNIX のパーミッションと PHP の動作が深く関わってきます。

まずは、設置した「ホームページ(html) /CGI/ PHP」がどうやって、ブラウザに表示されているかということろから。

Web で公開されるファイルは一般的に UNIX というオペレーティングシステム上に置かれます。 パーミッションという考え方は UNIX のファイル管理の考え方です。

UNIX 上のファイルを見るには、必ずそのオペレーティングシステムにログインする必要があります。 え、ブラウザでアクセスするとき UNIX にログインなんかしてないじゃん…。 もうその通りで、実際のところは間に Web サーバというソフトウェアが UNIX サーバで動作していて、Web サーバソフトが「UNIXログインの仲介」をしてくれます。 このWeb サーバソフトで一番有名なのが、よくきく Apache というソフトです。

Apache は、ブラウザからのアクセスをうけると、指定された URI (アドレスね) に従って UNIX サーバ上のファイルを抽出し、ブラウザに返してくれます。 Apache が UNIX に常にログインしていて、ブラウザとの間を受け持つイメージです。

次に、パーミッションのお話。

UNIX のパーミッションは、「自分」「グループ」「他人」という3つの登場人物に対して、「読み込み」「書き込み」「実行」という権限を組み合わせてつけることができます。 FTP で数字が3つ並んでいるのは、左から「自分」「グループ」「他人」に対して、「読み込み」「書き込み」「実行」の組み合わせた数字です。 この辺はみなさんご存じでしょう。

また、ファイルには所有者の考え方があり、誰のファイルであるか、どこのグループのファイルであるか。 という情報が付与されます。

FTP でファイルをアップロードするということは、自分のユーザID で UNIX にログインしてファイルを作成していることになりますので、そのファイルの所有者にはそのユーザID(自分)が付与されます。(FFFTP などでみることができるでしょう)

適切にファイルのパーミッションを設定することで、他の人から見えないファイルやグループで共有したいファイルを設定することができ、さらに読み込み、書き込み、実行、の権限をつけることができるわけです。 UNIX はひとつのマシンをみんなで使おうという、マルチユーザ OS ですのでこういった制御が必要になります。

しかしここで話がややこしくなるのが、Apache を介してアクセスしてくる不特定多数の”ユーザ”。

このユーザが誰になるのかってーと、Apache が UNIX 上で動作するのに使っているユーザになります。 詳しくはあれですが、よくあるのは apache とか www って名前のユーザ。 ブラウザからの閲覧者はこの apache とか www とかって名前のユーザに全員なります。(もちろんサイトマスターも、ブラウザでアクセスした場合は apache さんになります)

FTP でアップロードしたファイルの視点からみると、apache とか www ユーザへのアクセス制限は三桁数字一番右の「他人」が適応されます。

そしてもっと話がややこしいのが、 .php などの「動作するファイル」の場合。 ブラウザからアクセスされたとき、だれがプログラムを動作させたことになるのかって話ですが、これも apache さんになります。

たとえば、動作させた PHP の中でプログラムが自動的にディレクトリを作った場合、この所有者は apache さんになります。 動作させた人が、apache さんなのでそうなってしまうのです。

ここまでは、セーフモードとは関係なく、Apache(mod_php) と UNIX の仕様です。

さぁ、PHP セーフモードの束縛の原因がなんとなく分かってきました(?)。

ここで PHP のセーフモードの仕様を読んでみます。 たとえば、ファイル読み書きに使われる fopen 関数。

処理を行うディレクトリが実行するスクリプトと同じ UID を有しているかどうかを確認します。

UID というのは所有者だと思ってください。

FTP で作成した PHP ファイルの UID は、まぎれもなく「あなた」です。 しかしながら、PHP の中で自動的に作られたディレクトリは apache さんになります。 この自動的につくられたディレクトリの中で「あなたがアップロードした」プログラムがファイル操作をしようとすると、これはセーフモードの制約にかかってしまうのです。 ファイルをアップロードした人と、アクセス先のディレクトリの所有者が違うからです。

この所有者のミスマッチこそがセーフモードの”束縛”です。

「あなた」と apache の関係だけみると、これはとても都合が悪いのです。 しかし、共有サーバにはいろいろなひとがいっしょにはいっています。「あなた」と「同じ共有サーバの他のユーザ」の関係もあります。

例えば他の人のファイル/ディレクトリ(当然FTP ログインアカウントが違うので UID もちがう)へのアクセスの場合はいい方向(セーフモードの存在意義通り)に”制約”が働き、共有サーバ内どうしのユーザでファイルを書き換えたり(改ざん)することを防ぐことができます。 これがセーフモードの役割です。

よくセーフモードの制約を回避するために、apache 所有者でできちゃったディレクトリを削除して、FTP で作り直すのは、PHP とディレクトリの所有者を合わせるためにあります。

さて、セーフが入っていないサーバで、なぜ「改ざん」ができてしまうかというと、データファイルにはファイルパーミッションの「他人」に書き込み権限をつける必要があるからです。 なぜならば、PHP の動作ユーザは apache さんになるから。 しかし「他人」に権限をつけた瞬間、共有サーバの「他のユーザのプログラム」(これも同じく apache さん)からも、同じように(時には悪意の)書き込みできてしまうことになります。

まぁ実際のところ改ざんをするには、URI ではなく “UNIX 的な”ファイルのありか(フルパス)を知る必要があったり、そのフルパスを調べる行為に別のセキュリティがかかっていたりしますので、そうそう簡単にはできなくはなっています。(みれちゃうサーバもいまだあるみたいだけど…) ただ、エラーメッセージにはフルパスがでてしまうので、この点は注意が必要です。 エラーログを掲示板などにはるときは、フルパスは隠したほうが良いでしょう。 たとえばこんなのね。

/home/******/public_html

****** にはユーザID とかはいるので、これは隠し通してください。 🙂

全ては、PHP(mod_php)  の動作ユーザが全て apache になってしまう仕様に起因していて、これをなんとかしようとしたのが PHP のセーフモードです。 PHP のマニュアルにも、

PHP のセーフモードは、共有サーバでのセキュリティの問題を解決するための試みです。 この問題を PHP のレベルで解決しようとするのはアーキテクチャ上正しくありません。 しかし、Web サーバや OS レベルでの代替策はあまり現実的ではないため、 多くのユーザ、特に ISP ではセーフモードが現在使用されています。

と書かれていて、また PHP 6.0 では削除される予定とのことです。

Perl のCGI 動作などでは、suExec と呼ばれる Apche ラッパーにより、スクリプト所有者 = スクリプト動作ユーザにするという理想的な環境をつくることができます。 もちろん、PHP でも CGI 動作できるサーバではこの方式を使うことが出来ます。 この場合、パーミッションを「700」とかに設定できますので、「他人」からのアクセスは一切出来なくなり、セキュリティ的には一番高くなるでしょう。

2000 年より前くらいのホスティングサーバ(主に無料)は、この suExec もはいっていないところが多く、同一サーバ間で書き換え戦争していて笑っちゃった時期もありました。 で、日本で suExec が入っている数少ないサーバがここだったのです。 なのでみんな使っていたんですね。 :-) まぁPHP は関係ない話ですが。

最近はこの手のはやりもなくなって、やるひともいなくなった、、と思いきやアジア圏ではいまだこの手のお遊びが流行っているようです。 というわけでみなさん、セキュリティには気をつけましょう。

以上、セーフモードの説明でした。(変なところあったら教えてください)

2006/8/10 Thursday 投稿時の月齢:15.8  月名:満月  潮汐:大潮 Moon:15.8[満月]今日の心技体 : 低調期低調期低調期

タンブルランブル このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 晴時々曇 ひろまさ @ 0:14

M’s さん「We Love WordPress」。 スタバのタンブラー。

うん!、これほしー。 ということで、実は風邪ひいて調子が悪い中、お昼休みにスタバに向かってふらふら・・・。

We Love WordPress #02@M’s Life

スターバックスタンブラーバージョン。ずっと前からぴー君タンブラーを作りたかったのですがこんな形であっちゅー間にできてしまうなんてやっぱり動機ですね。

歩いている途中で、

げ。

おれ1000円しかもってないじゃん

すさまじい現実にフェイストゥーフェイス。 orz

(若干ネタゲットとおもったことは内緒。)

しかし神は見捨てませんでした。 なんとトラックバックすると、ご本人からいただけると! ありがとう、M’s さん、ありがとう WordPress の神様。 🙂

ということで、明らかにみんな遠慮している中、勇気を持って・・・、

トラックバック。

2006/8/9 Wednesday 投稿時の月齢:15.8  月名:満月  潮汐:大潮 Moon:15.8[満月]今日の心技体 : 低調期低調期低調期

フルデジタル化 このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 晴れ ひろまさ @ 23:39

フル? なわけではないのですが、鳴り物入りでデジタル化しました。

  1. インターネット・光回線化
  2. テレビ・地上波デジタル化

両方とも大して計画していたわけでもないのですが、何かタイミングが良かったので導入してみました。

インターネットは Bフレッツになり、・・・なにがよくなったって電話がきても切れなくなりました。(笑) うち NTT回線の保安器が古かったんですね。

もともと ADSL が速かったので、速度的には Web みるぶんには体感差はないようです。 ダウンロードは相手先にもよりますが速くなったと思います。(←あんまり試してない

せっかくなのでADSL がなくなるまえに、ADSLモデムのキャリアチャートを採っておきました。

キャリアチャート

基地局から 100m 以内という理想的な ADSL の図。 きっちりアマチュア無線帯域をさけて、波形が出ています。

でもってもーいっこの地デジ・テレビですが、これもなかなか良い!

特にスポーツ観戦。 16:9 のハイデフ(?)画像は、スタジアムの広さが分かったり、降る雨が見えたり臨場感があります。 16:9 リソースがゲーム機以外にも増えたので、嬉しいです。 バレーボールとか横長だといい感じかも。 バボビジョンもびっくり。 🙂

というわけで、しばらくTVッ子と思ったんですが・・・、そんな時間はないようです。 わーん。

2006/8/6 Sunday 投稿時の月齢:11.9  月名:十二日月  潮汐:中潮 Moon:11.9[十二日月]今日の心技体 : 低調期低調期低調期

We Love WordPress in Japan! このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 晴れ ひろまさ @ 3:03

みなさん趣向を凝らしたものが多かったので、ぼくもかなり考えました。。 せっかくなので、日本風ということで…うんうんうなる…

ぴこん。

団扇、浴衣!! そうだ、お祭りに行こう

ということで、遅ればせながら、「We Love WordPress」! 🙂

We Love WordPress

撮影に協力してくれたススキノ住民のみんな、ありがとう!!。 😛

We Love WordPress@Cafelog.net

よかったら We Love WordPress キャンペーンやりませんか?

2006/8/5 Saturday 投稿時の月齢:11.3  月名:十二日月  潮汐:中潮 Moon:11.3[十二日月]今日の心技体 : 低調期低調期低調期

マウスだこ このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 晴れ ひろまさ @ 13:13

kohaku さんとお話ししていたら、、なんと kohaku さんにもあるという「マウスだこ」。 もしかして、結構メジャーですか?

マウスを持つ方の手の、マウスの支点となるぶぶんにできると思われます。

マウスだこ

さすがにちょっと写真では分かりづらいですが、矢印の部分がかたくなって、おまけにマウスが動かしやすい(?)ように支点化しています。 :-P これはもはや進化!?

どのくらいのユーザ数なのか気になるところです。

いざゆかん このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 晴れ ひろまさ @ 11:40

夏と言えばお祭り。 といってもここは札幌、北海道。 さほど伝統的なお祭りがあるわけではありません。

雪祭りはちょっと違うし(←冬)、YUSAKOI ソーランは企画ものだし、、花火は終わったし、というわけで札幌地元民本命お祭りはこれだ!!(←うそかも 🙂

すすきの祭り@すすきの観光協会

クラブ、キャバレー、スナックから寿司、焼鳥、居酒屋まで、参加300店の中から指定された5店舗を2時間以内に走破する苛酷(?)なイベント。

なんて恐ろしいイベントもある「すすきの祭り」。

なんとなくすすきのというといかがわしいイメージがあるかもしれませんが・・・、普通(?)の歓楽街です。

札幌 |すすきの – e-んでないかい北海道 -iタウンページ

ススキノの特徴はその店舗の数もさることながら、高層化したビルの群の中で立体的に広がった状態にもあります。ひとつのビルの中に飲食店もあれば風俗営業店もあり、隣にはホテルや関連施設があったりとおよそ考えられる業種がすべてひしめきあっています。

さぁ、今日は最終日。 小道具準備完了。

いざゆかん。

うちわ

2006/7/31 Monday 投稿時の月齢:6.7  月名:七日月  潮汐:小潮 Moon:6.7[七日月]今日の心技体 : 低調前不安定期好調期低調前不安定期

使いやすいキーボード このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 晴れ ひろまさ @ 22:21

Amazon のギフト券 (2000円) をゲットしたので、なにをかおうかな~とかなり長考。 :-) コンピュータ書籍はなかなか高いもので、2000円だと買えないし…、、そうだ!なにかのデバイス!ということでキーボードを購入してみました。

この手のグッズ(?) 、実は Microsoft 製品が大変頑丈で優れもの。 うちの Intelli Mouse にいたっては5年も使っています。 壊れないおかげで、いまだボールマウス(笑)。 今回も Microsoft 製にしようということで「Microsoft Comfort Curve Keyboard 2000」にしてみました。

Microsoft キーボード

写真じゃあんまり分かりませんが、キートップが手の向きに合わせてカーブしていて打ちやすいようになっています。 ぼくは小さい頃が我流でキーボード覚えてしまったため、タッチタイプができません。 ホームポジションが怪しいので、このカーブには一抹の不安がありましたが使ってみたら、これいい!

  • 深さはないもののしっかりとした打鍵感覚があり、逆に深いものよりも疲れなくて良い
  • タッチ音が静か
  • 安っぽくなくしっかり出来ている

あ~いっぱい文章打ちたい!(←目的と手段の逆転

2000円くらいで買えますので、普段のPCにちょっと飽きた方は購入してみてはどうでしょうか。 😛

2006/7/27 Thursday 投稿時の月齢:2.4  月名:三日月  潮汐:中潮 Moon:2.4[三日月]今日の心技体 : 好調期好調期好調期

札幌だって… このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 晴れ ひろまさ @ 15:14

札幌だって暑いときは暑い。 😡

しかもです、ふつーの家には、

クーラなんかない!

持っていたとしても、壁に

そんな穴ない! orz

というわけで、

扇風機

親かめ子がめ、親子関係なし。 このありさまです。 orz

せっかく tegaki のバージョンあげようと思っていたのに暑くて進まない。。 あ~、小さい部屋でPC三台もついているのが最大の原因か…

2006/7/23 Sunday 投稿時の月齢:28.3  月名:二十九日月  潮汐:大潮 Moon:28.3[二十九日月]今日の心技体 : 好調期好調期好調期

夏休みプラグイン wp-otenki リリース! このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 晴のち曇 ひろまさ @ 22:47

え、もう夏休みは始まっている!? というわけで、遅くなってしまいましたが WordPress プラグイン wp-otenki をリリースします。 🙂

ダウンロード:

WordPress Plugins/JSeries > wp-otenki

WordPress のエントリにLWWSから取得したお天気情報を付加します。

何であるかは見たほうがはやいってわけで、

wp-otenki

というプラグインです。 本日のお天気をもらってきて、本日のエントリのカスタムフィールドに追加してくれます。 一応、画像とか温度とか表示する関数もつけていますので、エントリに表示するもよし、こっそり記録だけして行くもよし、という感じです。 インストール・使い方は上のダウンロード URL に書きました。

人によって使い方が違うと思いましたので、コードは修正しやすいようにしたつもりです。(取得処理はポストが遅くならないように非同期にしているので、ここだけちょっと特殊です。コード見る方は気をつけて…)

表示を変更するもよし、他の Web サービス用に変えるもよし、夏休みの自由研究に WordPress、いかがでしょうか。 🙂

wp-otenki 試験エントリー このエントリをはてなブックマークに追加このエントリをdel.icio.usに追加

日記 - 晴のち曇 ひろまさ @ 21:21

wp-otenki 試験エントリーです。 上↑にお天気がでるハズ・・・。

日中帯だと温度も取得できるようです。 🙂

このサイトについて

このブログは引っ越しを行いコンテンツはフリーズしています。hiromasa.anotherへどうぞ。

Powerd By WordPress

We (Heart) WordPress

WordPressME Logo
WordPress Plugins

ブログ内検索

Todays Popular

WordPress Ring

はてなリング - WordPress -

情報

19 queries. 0.116 seconds.

このページの先頭へ