人間には不幸か、貧乏か、勇気が必要だ。
でないと 人間はすぐに思いあがる。 = ツルゲーネフ

« 海だ!青春だ!沈没だ! | メイン | ミンボーの女 »

2007年8月30日

パーミッションについて(コメント希望)

パーミッションがよくわからないので勉強しております。

Q1.なんでCGIのパーミッションは「700」推奨だったり「705」推奨だったり「755」推奨だったりするのか

A1.「700」と「705」の違いは、どーやら管理者の設定の違いっぽい?

サーバ管理をする場合を除き、簡単なCGIを設置して稼動させるにおいて、設定するパーミッションはだいたい限られています。

■UNIX + Apache サーバで nobody権限の場合
UNIXのApacheは通常 nobody権限で実行され、ファイルの読み書きもnobody権限しかありません。なので、パーミッションでも第三者に対する許可が必要です。

通常のディレクトリ ==> 705
CGIがファイルを作成するディレクトリ ==> 707

拡張子が .cgi や .pl の CGI 実行ファイル ==> 705
拡張子が .cgi や .pl でも直接実行されないライブラリファイル ==> 604
拡張子が .txt や .dat や .log などの読まれるだけのデータファイル ==> 604
拡張子が .txt や .dat や .log などCGIで読み書きされるデータファイル ==> 606
拡張子が .html などの HTML ファイル ==> 604
拡張子が .css や .xml などのファイル ==> 604

■UNIX + Apache サーバで SuExec環境の場合
SuExec環境では、Apacheがユーザ(オーナ)権限で実行されます。したがって、ファイルの読み書き実行はオーナー権限さえあれば大丈夫です。ただし、パーミッションを与えすぎると動かないこともあります。

通常のディレクトリ ==> 701
CGIがファイルを作成するディレクトリ ==> 701

拡張子が .cgi や .pl の CGI 実行ファイル ==> 700
拡張子が .cgi や .pl でも直接実行されないライブラリファイル ==> 600
拡張子が .txt や .dat や .log などの読まれるだけのデータファイル ==> 600
拡張子が .txt や .dat や .log などCGIで読み書きされるデータファイル ==> 600
拡張子が .html などの HTML ファイル ==> 600
拡張子が .css や .xml などのファイル ==> 600


(引用元:技林 yori パーミッションについて

 SuExec環境というのは、

suEXEC 機能により、Apache ユーザは Web サーバを実行しているユーザ ID とは 異なるユーザ ID で CGI プログラムや SSI プログラムを実行することができます。CGI プログラムまたは SSI プログラムを実行する場合、通常は web サーバと同じユーザで実行されます。

適切に使用すると、この機能によりユーザが個別の CGI や SSI プログラムを開発し実行することで生じるセキュリティ上の危険を、 かなり減らすことができます。しかし、suEXEC の設定が不適切だと、 多くの問題が生じ、あなたのコンピュータに新しいセキュリティホールを 作ってしまう可能性があります。あなたが setuid root されたプログラムと、それらから生じるセキュリティ上の問題の管理に 詳しくないようなら、suEXEC の使用を検討しないように強く推奨します。


(引用元:The Apache Software Foundation yori suEXEC サポート

 だそうで、この環境については、難しそうなので今後サーバーを自分で立ててみるときにまた勉強しよう。

●新たな疑問●
しかし、「705」と「755」の違いがよくわからないのであった。705を推奨するサイトが多いようではあるけれど・・・。いいじゃんね、一般に許可してるんだからグループにも許可すれば。

Q2.そもそも4のreadってどの程度の権限?ファイルのソースを読むことも出来る?出来ないとしたら1の実行との違いがわからん。

A2.

読取
-ファイル:catなどでファイル内容を参照できるかどうか。
-ディレクトリ:lsなどでディレクトリ内ファイル一覧を表示できるかどうか。
書込
-ファイル:ファイルを編集できるかどうか。ファイルの書込権限とファイル自体の削除とは無関係です。
-ディレクトリ:ディレクトリ内のファイルを作成/削除できるかどうか。
実行
-ファイル:コマンドとして実行できるかどうか。
-ディレクトリ:ディレクトリ内のファイルへアクセスできるかどうか

(引用元:Stackasterisk yori Linux資格 LPICを受けようLV1第04回:デバイス、ファイルシステム、FHS編

 catってコマンドは、行番号をつけて出力したりするコマンドのようで。つまりコレを使うと、
●新たな疑問●
cgiとかもソースモロばれなのかな!?
 でも普通にパスワード書いてるcgiとかに、読み込み可能の権限与えてるしなぁ・・・。むぅ

トラックバックURL

このエントリーのトラックバックURL:
http://www.intriguing.biz/mtype/mt-tb.cgi/120

コメント

>705と755の違い・・・

705推奨になってるのは,
 ・レンタルサーバーでかつターミナルが使えるような場合
じゃない?
レンタルサーバーで間貸しする時に同じGIDで管理してたりするからね…
ただ、忘れちゃならんのは、基本サーバー上のデータなんてルートさんがその気になればいくらでもみにいけるよん・・・ってことかな.
いくらパーミッションをゴニョゴニョしてもね・・・

>cgiはソースモロバレ?
うーん、post/getでパラメータを送ってる段階でアウトな気がするけど・・・
perlとかphpならハッシュ関数用意されてるし,それら使ったほうが良いのでは?

コメントありがとうございました。

> レンタルサーバーで間貸しする時に同じGIDで管理してたりするからね…

 そんなターミナルのようなものを介したで他人にのぞかれる筋合いはない!って所ですかね。

> 基本サーバー上のデータなんてルートさんがその気になればいくらでもみにいけるよん・・・ってことかな.

 こーいうのは自作サーバーしか意味がないって極論になるわけですかね。しかもしっかりとセキュリティーの知識を身につけた上で。
 このあたりにビジネスチャンスはあるかもしれませんね。

> うーん、post/getでパラメータを送ってる段階でアウトな気がするけど・・・

 これについては、勉強してみますm(__)m

> perlとかphpならハッシュ関数用意されてるし,それら使ったほうが良いのでは?

 なるほど。そうすれば防げるわけですねぇ。

 コメントして頂いたおかげで(かつ検索しながら)結構いろいろな点を理解して、かつ知るべき論点も見えてきたようです。
 ありがとうございました!

コメントする