• ベストアンサー

public_htmlについて

turbolinux server7.0でapacheの設定をしているんですが、ユーザwebuserのホームディレクトリにpubulic_htmlを作成し,適当なindex.htmlを置きました。 /home/webuser/public_htm/index.html です。 srm.confに UserDir public_html を追加すると http://ホスト名/~webuser/index.html でアクセスできますよね。 (ここまではよくすることですよね) ここから質問なんですが、 /home/webuser フォルダのアクセス権に その他 → “入る"のアクセス権をチェックしないとブラウザからアクセス権なしのエラーが返ってきます。 他人へは /home/webuser/public_htm/以下のみにアクセス権を与えたいのに、/home/webuser/の段階で“入る"のアクセス権の許可をしないといけないんでしょうか? NTや2000ならこんなこと無いのに・・・ これってLinuxの仕様ですか? ※ちなみに“入る”のアクセス権の意味を正確に理解できていません。(Linuxは初心者です)

質問者が選んだベストアンサー

  • ベストアンサー
  • selenity
  • ベストアンサー率41% (324/772)
回答No.5

どうやらIISはカレントディレクトリのパーミッションしか見ていない様子ですね。 失礼しました、、、というより非常にびっくりでした、、、 ただ、基本的には上位ディレクトリにアクセス権が無ければ下位ディレクトリに移動できないのが普通のアクセスコントロールに対する考え方だと思います。 これは「Linuxの仕様」というよりも「UNIX一般のアクセスコントロールの考え方」といったほうが正しいでしょう。 NTFS+IISならディレクトリ名さえ分かっていれば(既知ならば)、途中のディレクトリのアクセス権に関らず、目的のファイルにアクセスできるという事を意味します。かなり危険な気がしますよ。 (注:もちろん対象のファイルにアクセス権が無ければ開けませんが、そのディレクトリには移動可能です) 個人的に言えば「IISの挙動の方が非常に変」といった所でしょうか、、、 IISは、通常[IUSR_XXXX]というアカウントでアクセスしています。もし、アクセス権が無いディレクトリ/ファイルへアクセスしようとした際は、クライアント側のブラウザがIEなら、パスワード入力ダイアログボックスを開いてきます(ApacheのBasic認証のようなダイアログボックスです)。このダイアログボックスにNT/W2k上(IIS上)の実在するアカウント名を入力すれば、今度はその入力されたユーザ権限でアクセスするという奇妙な仕様になっています。 > できるとすれば根本的にIIS(NT)とApache(linux)は > 考え方が異なるという事になると思います。 そうですね。両者は明らかにアクセス権に対する考え方は異なりますね。 まぁ、この件は良い悪いの問題では無いので「どちらの挙動が普通か?」と問われれば「UNIXの挙動の方が普通だ」という回答をします。

holydevil
質問者

お礼

そうですよね。 やっぱりIISとApacheは考え方違いますよね。 なんかホッしました。 今思うのは、apache(UNIX)の考え方のほうがシンプルで管理しやすいということです。IISアクセス権の考え方はMSの共有フォルダの考え方を引きずっているからでしょうか。(きっとそうでしょうね) ありがとうございました。

その他の回答 (4)

  • Fooky
  • ベストアンサー率71% (59/82)
回答No.4

> このIISの実行ユーザの変化によってクライアントからアクセスが > できたりできなかったりする事はない ほんとうにそうですか?それはIISを自分のユーザアカウントで 実行してもAdministratorしかアクセスできないフォルダが 公開されてしまうということですよ。これは重大なセキュリティ設計上の 欠陥ですから、さすがにあの会社でもそれはないと思うんですがねぇ。 もしそうなら、Apacheはデフォルトではそうなっていないので、 この点は違いますね。ただ、Linuxでもそのようなアプリケーションを つくることは可能です。 あと、先程の最後にも書きましたが、ApacheはHTTPのサーバなので、 クライアントがどのユーザか、ということは関知しません。これは、 HTTPに関して言えば、IISも同じはずです。だってユーザ名を 送るようになってない同じブラウザでIISにもApacheにも接続できるん ですから。 例えばwww.goo.ne.jpに接続してユーザ名を聞かれないのは、 anonymousログインをしているのではなく、そもそもログインという 行為がないのです。 ただ、一部のホームページにユーザ認証がかかっていることがありますが、 これはシステムに存在するユーザアカウントとは独立のパスワードデータ ベースを使って認証が行われます。したがって、ディレクトリの所有者とは 関わりがなく、相変わらず実行ユーザであるnobodyがアクセスできる とこしかアクセスできません。 IISで、HTTPでのユーザ認証にOSに登録されてるのと同じアカウントが 使われるのか、という点は知りません。 クライアントのユーザ名が重要になるのは、FTPのときです。これは Linuxでは全く別のプログラムで管理されています。したがって、 相違点の2つ目としては、apacheはIISのようにHTTPとFTPを一緒に サービスするということはしない、ということですね。 あと、もちろん、DocumentRoot(このディレクトリより下の ディレクトリだけを公開する)は設定するので、実行ユーザを rootにしたとしても、DocumentRoot以下が全て見えるというだけで、 それより上の階層のディレクトリは見えません。

holydevil
質問者

お礼

非常に詳しくありがとうございました。 IISではDocumentRoot以外を公開する場合、 まず、公開するディレクトリを選択します。 で、そのディレクトリにAliasをつけます。 次に、そのディレクトリはanonymous接続許可するかどうかを選択します。 ■anonymous許可とした場合 IISはそのフォルダのアクセス権でIUSR_SEVERNAMEアカウントに読み込み権限があるか調べます。あった場合、全てのユーザは認証なしでアクセスが可能となります。 ■anonymous許可しないとした場合 IISはそのフォルダのアクセス権を調べます。クライアントがネットワークにログインしたとき(起動したとき)のID/PWが、アクセスされるフォルダに設定されたアクセス権と一致しておればパススルーでアクセスできます。もし、一致しなければ認証画面が出てきます。 この流れからみて、ApacheとIISはどう考えても仕様が異なると思います。 正直言ってIISよりApacheのほうが自然なアクセス制御だと思いますし、シンプルですね。

  • Fooky
  • ベストアンサー率71% (59/82)
回答No.3

IISはいじったことが無いし今後もいじるつもりも全く無いので推測ですが、 問題はサーバ(IIS or apache)の実行ユーザの問題ではないですか? > folder_Aを作成してAdministratorのみフルコン設定 というのは、他のユーザは全て読み取り禁止ってことですよね。 Administratorのみフルコンで後は読取りのみとかではないですね? (そうじゃないと、/home/webuserが他者に読み取り許可を 与えていない設定になっていることと比較する意味が無い) IISの実行ユーザがAdministratorsグループのメンバー(または Administrator自身)であるために、Administratorしか 読めないフォルダが読めてるだけじゃないですか? もちろん、apacheの実行ユーザを管理者(root)にすれば、どの ディレクトリでも読めるのでこの問題は発生しません。ただ、全く 推奨できる設定ではないです。万一セキュリティホールによって apacheが乗っ取られた場合、apacheがroot権限を持っていれば システム領域の破壊が簡単にできてしまいます。こういうことを 防ぐために、apacheはデフォルトで単なる一ユーザよりもさらに 制限されたユーザ(nobody)で実行されるようになっています。 IISでも同じことが言える、というかセキュリティホールの発見 頻度から見てさらに危険で、IISをAdministratorsグループで 実行するのは致命的でしょう。 > これだと、ブラウザからは誰でも接続できます。 認証はまた別の問題で、FTP認証はFTPサーバがやります。HTTPの 認証はapacheがやりますが、それはLinuxのユーザとは全く独立で、 ファイルのアクセス権とは無関係です。

holydevil
質問者

補足

> >folder_Aを作成してAdministratorのみフルコン設定 >というのは、他のユーザは全て読み取り禁止ってことですよね。 もちろんそうです。 IISの実行ユーザはデフォルトでは“system”アカウントを使用します。ただ、このIISの実行ユーザの変化によってクライアントからアクセスができたりできなかったりする事はないと思います。 LINUXの場合、apacheの実行ユーザを管理者(root)にした場合、どのユーザ(ブラウザ)からも全てのディレクトリにアクセスできるのですか?できるとすれば根本的にIIS(NT)とApache(linux)は考え方が異なるという事になると思います。

  • selenity
  • ベストアンサー率41% (324/772)
回答No.2

基本的に上位ディレクトリにアクセス権が無ければ、いくら下位ディレクトリにアクセス権があってもアクセスできないのは、普通だと思いますよ。 apacheは通常[nobody]ユーザとして動いているのでアクセス権的には「その他」に分類されます。 > NTや2000ならこんなこと無いのに・・・ Win2kでもNTFSを使っていれば同じことです。 "入る"のアクセス権はディレクトリに対しては「サブディレクトリへの移動の権利」を表しており、ファイルに対しては「そのファイルを実行する権利」を意味しています。

holydevil
質問者

補足

ありがとうございます。 ただ >> NTや2000ならこんなこと無いのに・・・ >Win2kでもNTFSを使っていれば同じことです。 の部分は納得行かないです。 NTやW2Kの場合、以下のように folder_Aを作成してAdministratorのみフルコン設定 folder_Aのサブディレクトリにfolder_BをEveryoneフルコン設定 folder_Bの中にindex.htmlを作成 folder_BをIISで公開 IISではfolder_BにAnonymous接続許可する これだと、ブラウザからは誰でも接続できます。 だから,NTやW2Kとは考え方が異なると思うのですが・・・。(少なくともブラウザからのアクセスに関しては)

  • Fooky
  • ベストアンサー率71% (59/82)
回答No.1

そりゃそうでしょう。 ディレクトリは階層構造になってるんですから。 /home/webuserに入れないってことは、 そこから下の階層には一切、入れません。 例えば会社という組織を考えると、「企画部第一庶務課」という 部屋に行きたい人は、その会社のビルの入り口の立ち入り許可を もらって、さらに企画部のフロアの立ち入り許可をもらって、 としないと、その課まではたどり着けないでしょう。窓から 縄梯子でも下ろさない限り。 このケースでも縄梯子を下ろす手があると言えばあるんですけどね。

holydevil
質問者

お礼

早速のご回答ありがとうございます。 やっぱりそうなんですか。 これだと、NT、2000に比べるとアクセス権のしくみは非常にシンプルですね。 その代わり、複雑なアクセス制御は基本的にはできないということでいいのでしょうか?

関連するQ&A