• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:UNIX+Apache構成でのWEBアクセスについて)

UNIX+Apache構成でのWEBアクセスについて

このQ&Aのポイント
  • UNIX・Apache2の環境下でのWEBアクセスについて質問があります。特定の状態のファイルをプログラムによって閲覧したいのですが、所有者がApacheユーザではないため操作ができないか疑問です。
  • Apacheのbasic認証を利用してファイルを閲覧する方法を検討していますが、所有者がApacheユーザではないため、ファイル操作ができない可能性があります。一つのディレクトリ内でユーザに閲覧させるファイルを操作する場合、どのような対処方法が良いのでしょうか?
  • UNIX・Apache2の環境下でwebドキュメントフォルダ配下に格納された特定のファイルをプログラムによって閲覧したい場合、所有者がApacheユーザではないため、ファイル操作ができないか心配です。一つのディレクトリ内でユーザに閲覧させるファイルを操作する場合、対処方法を教えてください。

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

  • ベストアンサー
回答No.1

結果的にお望みと思われる事は出来ますが 質問の文面どおりの事は出来ません。 何故なら.cgiの実行IDは一人のユーザーIDもしくはApache(等)の いずれかですが 例えば.cgiの所有者がsatouであれば cccc.xlsは読めますが aaaaとbbbbはアクセスできませんので ##以下、仮に全てユーザーsatouとして書きます## *1.Suexecの場合に利用可能な方法  全てのxlsと.cgi =owner:satou パーミッション:700  SuexecのCGIは実行ID:satouですので全てのxlsが読めます  CGI以外の普通にアクセスする場合の実行IDはApache(等)ですので.xlsに直接アクセスは出来ません *2.Suexecではないが.htaccessの機能が自由に使える場合  全てのxls=owner:satou パーミッション:704 (または604)  .cgi=owner:satou パーミッション:705  .htaccessに <Files ~ "\.xls$"> Order allow,deny Deny from all </Files>  などと記述する。  これは通常.htaccess自体にはアクセス出来ないようになっていますがその方法をxlsに対して使うものです  CGIからのfile読み込みはこれの影響を受けません  但し、同じサーバー内の他のユーザーのCGIからも同様に読めます *3. .htaccessも自由には使えないが拡張子.cgiはCGIアプリケーションとしてどこでも置ける  パーミッションなどは2.と同様  拡張子.xlsを.cgiに変えればaaaaなどに直接アクセス  すれば当然サーバーエラーになりますので読めません  以下は2.と同じ

ts1227
質問者

お礼

ご返信が大変遅くなり申し訳ありませんでした。 umasikajiro様の詳細なご回答で理解できました。 本当にありがとうございました。

その他の回答 (3)

回答No.4

#2の補足に対する返信ですが 結論から言えば、専用サーバー(自宅サーバーも含む) 等でroot権限をあなたがお持ちで有れば、それも可能でしょう ただ効率的かどうかとなると、、、 xlsを置くたびに、いちいちrootになってchownコマンドで ownerとgroupを書き換えなくては行けませんのでねえ $ENV{'REMOTE_USER'} が 例えばsaitouであっても owner:saitouのfileに対し owner権限でアクセス出来る分けではないことは理解されましたよね? 私がやるとしたら例えば    saitou-aaaaa.xls    suzuki-bbbbb.xls    satou-ccccc.xls 等と言うように ユーザー名-希望のfile名 と言うfile名にして CGIプログラムの中で$ENV{'REMOTE_USER'} がsaitouの場合は 頭にsaitou-がつくfileだけを読み込み対象として、 CGIの画面に表示するfile名は- から後ろの aaaa.xls とすれば良いのではないかと思いますね

ts1227
質問者

お礼

丁重なご解答ありがとうございます。 確かにGroupの変更を随時するのは面倒ですので、 umasikajiro様のユーザ名-ファイル名.拡張子での 処理をメインに実施したいと思います。 初心者的な質問に詳細な情報を頂き本当にありがとうございます。 自分自身にも大変ためになりました。

回答No.3

しつこく書いて済みませんが、自分への覚書も兼ねて、、 #1の*2について .htaccessでBASIC認証をするためにはhttpd.confの  AllowOverride に AuthConfig が必要 <Files ~ "\.xls$"> Order allow,deny Deny from all </Files> を記述するためには AllowOverride にLimit が必要 従って*2を実現するためには AuthConfigとLimitの両方が許可されていないと無理 AllowOverride All でも勿論OK

回答No.2

あ、で、肝心の > Apacheのbasic認証を利用し、ログインしたユーザ名 ごとに対応したfileを読み込むには下記1,2,3、のいずれかを設定の上でCGIの中で ユーザー名と対応fileのデータベースが出来る用にしてから (Perlなら)環境変数 $ENV{'REMOTE_USER'} を読んで if分岐などして表示させれば出来ますね

ts1227
質問者

補足

umasikajiro様 丁重なご回答ありがとうございます。 ユーザでの概念はこの内容で理解できたのですが、 逆にcgiと各ファイルのGroupでの処理は実現出来るのでしょうか? 以下、例ですが...  ・Apacheのユーザ   ・www/www(owner/Group)  ・利用者ユーザ   ・saitou/user(owner/Group)   ・suzuki/user(owner/Group)   ・satou/user(owner/Group)  ・ ファイル名 owner group パーミッション    aaaaa.xls saitou www ***    bbbbb.xls suzuki www ***    ccccc.xls satou www *** とした場合、上述の3つのファイルのGroupはapacheになり cgiとしてはapacheのwww(owner?Group?)でアクセスすると 思いますが、このapacheでファイルを参照し cgiで$ENV{'REMOTE_USER'} とファイルのownerと一致したのも を対象に処理をする。と言う事が出来れば、特に大きなConfig変更が なく動作出来るのかな?と思われますが、初心者的なご質問で 申し訳ありませんが宜しくお願い致します。

関連するQ&A