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

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

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

OSがUNIX・Apache2の環境下で以下の事が実施出来るのか ご教授頂きたいと思います。 内容的には、webドキュメントフォルダ配下に以下の様な 状態のファイルを格納しておき、プログラム(cgi等)にて ファイル一覧を表示し、閲覧(参照)したい。  ・ ファイル名 owner group パーミッション    aaaaa.xls saitou user 700    bbbbb.xls suzuki user 700    ccccc.xls satou user 700 想定しているプログラムは、 Apacheのbasic認証を利用し、ログインしたユーザ名と ファイルのownerが一致した際に、print文でリンク(ドキュメントフォルダ/ファイル名)を 表示し閲覧をする。 様な事を考えてみたのですが、この内容が本当に良い事なのか? ファイルの所有者がApacheユーザではないのでファイル操作する事も 出来ないのではないか?と言う疑問点があり (ApacheユーザのGroupでアクセスをすれば可能?)、 上記の様に、1つのディレクトリ内にユーザに参照させても良い ファイルを操作する際、どのような対処方法が好ましいか ご教授頂けましたら幸いです。 初心者的な話で申し訳ありません。

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

  • ベストアンサー
回答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

  • Apacheの実行権限について

    Apacheがユーザーディレクトリに、ディレクトリを作成したり画像を(アップロードして)作成したりする場合、以下のように設定していますができません。 httpd(子プロセス)の実行ユーザー/グループはそれぞれapacheです。 親プロセスはrootになっています。 以下のディレクトリは次のようになっています。 (ドキュメントルートはwordpressです) /var/www/html/projectName/wordpress/wp-content/uploads drwxrwxr-x(775) owner=yamada group=apache このように、group(apache)に書き込み権限を与えているのですが、uploads以下にディレクトリやファイルの作成ができません。このディレクトリのownerをapacheにするとできるようになります。 apacheユーザーはapacheグループに属しているので、書き込み権限(w)をもってディレクトリの作成やファイルの作成ができるはず、という認識だったのですがなぜかできません。私の認識が間違っているのでしょうか。

  • FTPでapacheドキュメントルートへ転送できない?

    RHL7.0で、apacheをインストールしました。 そのドキュメントルート(デフォルトの/var/www/html配下)にwindowsPCからFTPであるユーザでログインし、アップロードを試みたのですが、できません。 下記の事もしてみました。 (1)apacheドキュメントルートのファイル所有者をあるグループに全て変更  chgrp -R グループ名 /var/www (2)ドキュメントルートのディレクトリ/var/wwwのパーミッション変更  chmod 2775 /var/www(これでwwwはdwxdwsr-xとなった) (3)ドキュメントルートへFTPログインでアップロードするユーザを、(1)のグループへ加える。 このユーザ名でFTPログインできますが、/var/www/html/index.htmlを変更しようとすると fxfer、アクセス件がありません、と出ます。 (2)の事は本に書いてあった事をそのまま実行したのですが、-Rオプションも付けるべきなのでしょうか? chmod 2775 /var/www/htmlとすべきなのでしょうか? 細かく考えすぎなのでしょうか? すみませんが宜しくお願いします。

  • Win2003Server アクセス権の移動

    Windows 2003 serverを使用しています。 各部署ごとに各共有フォルダがあり、部署員はそこに必要な書類を 読み書きすることで業務を進めています。 例 フォルダ名「営業部」 ユーザーグループ「eigyoubu」 ユーザー「suzuki」「satou」「tanaka」「yamada」 4名の営業所員はユーザーグループ「eigyoubu」に所属し 「営業部」フォルダに「フルコントロール」のアクセス権を設定し使用しています。 人事異動でユーザー「suzuki」「satou」が別部署の 「広報部」に移ることになりました。 広報部も同様の構造なため「kouhoubu」に「suzuki」「satou」を 移動させる必要が出てきました。 この作業をbatファイルで実行したのですがどのように記述すればよいのでしょうか? 単にフォルダに対してユーザーのアクセス権の移動であれば cacls c:\営業部 /e /r suzuki cacls c:\営業部 /e /r satou cacls c:\広報部 /e /g suzuki:f cacls c:\広報部 /e /g satou:f 権限の削除+付与で問題ないのですが、グループ間の移動がわかりません。 ご存知の方いらっしゃいましたら どうぞご教示ください。 よろしくお願いします。

  • 共有ドキュメントとOwnerのドキュメントについて

    マイコンピュータを開くと、共有ドキュメントとOwnerのドキュメントが出てきますが、その違いについて教えてください。(フォルダのアドレスが一部OwnerとかAllとかなっているので保存するフォルダが違うことは分かります。)共有ドキュメントフォルダに保存すればすべてのユーザから参照可能ということなのでしょうか? 私の感覚ではOwnerのドキュメントに保存したファイルを共有化すれば、すべてのユーザから、共有ドキュメントとして利用できるのではないかと考えていますが、間違っているでしょうか? もし正しければOwnerのドキュメントのファイルの共有化の方法を教えてください。(やっぱり共有ドキュメントに保存するためドラッグアンドドロップでファイルをOwnerのドキュメントから、共有ドキュメントへ、いちいち移動しなければならないのでしょうか?)

  • Apacheの設定(ドキュメントルート関連)

    Apacheを使用したサイト構築で以下のことが可能か、可能であれば方法、参考となるサイト等お教え願います。 ■やりたい事 公開したいドキュメントが次のように2つのフォルダに格納されています。 (1)/var/www/html/hoge1 (2)/var/www/html/hoge2 ブラウザから、それぞれ次のように参照することは可能でしょうか。 (1)http://ホスト名/ (2)http://ホスト名/hoge2/ ■私の考え ドキュメントルートを「/var/www/html/hoge1」にすれば(1)は可能だと認識していますが、(2)はhoge2がドキュメントルートの上位フォルダになるので、「http://ホスト名/hoge2/」のような参照は出来ないと思っています。 しかし、何らかの設定で可能であればその方法をお教え願います。 よろしくお願い致します。

  • ファイルのアクセス制限について教えてください。

    サーバーの共有フォルダにあるpptファイルを開こうとすると、 「このドキュメントを保存、または開くことができませんでした。ドキュメントの読み取り、または書き込みの権限があるかどうか、およびドキュメントが暗号化されていないことを確認してください」とメッセージがでて、開けません。 共有フォルダのセキュリティタブを見ると Administrators CREATOR OWNER SYSTEM Users Aさん(←個人です)   とあり Administrators、CREATOR OWNER、SYSTEMはフルチェックで、 Users は、フォルダの内容一覧表示のみチェックがあり、 Aさんは特殊なアクセス許可のみにチェックがあります。 開こうとするpptファイルは、Bさんが作成したもので、 pptファイルのプロパティ→セキュリティを見ると  Administrators SYSTEM  Aさん        フルコントロールチェックが入っています。 Bさんが作ったファイルをBさんも閲覧、変更できるようにしたいのですが、 どのようにしたらいいでしょうか。  サーバーを管理していた人が退職してしまい、 私は、サーバーに関して知識がないので、どのようにしたらいいのか 教えてください。よろしくお願いいたします。

  • apacheの入ったフォルダを動かしたい

    apacheの入ったフォルダを動かしたい apacheの入ったフォルダを動かしたいのですが、うまくいきません。おそらく何かをしていないのだと思うのですが、一体どうすればいいのかわかりません。私が認識している、apacheの入ったフォルダを動かすために必要なことは、「(1)httpd.confの設定を変える。(2)ファイルを動かす。(3)apacheを再起動する。」です。しかしこれだとhttpd.confの参照先が移動前の位置になっていてうまく動きません。他のファイルも覗いてみたり、confフォルダの中のoriginalフォルダの中のhttpd.confも同様にいじってみたりしたのですが、よくわかりません。他に何をすればいいのでしょうか? apacheは2.2を使用しています

  • フォルダアクセス 許可 拒否

    2つのグループAとBがあるとします。 ユーザXはAとB両方に属しており、ユーザYはBのみに属しています。 あるフォルダFに対するアクセス許可設定で、グループAのみがアクセスできるようにしたいです。 このとき、グループBはファイルの操作はもちろん、フォルダの閲覧も出来ないようにしたいです。 デフォルトでは全てのユーザはファイルの閲覧が可能で、これを削除することは出来ません。 なのでグループBに対して拒否設定をしようと考えましたが、それではAとB両方に属するXもアクセスできなくなってしまいます。 XはアクセスできるがY(というかB)はアクセス出来ない、という状態にするにはどうすればいいでしょうか。 ちなみにFは共有フォルダ内のフォルダで、共有は必要です。

  • apacheのデフォルトWEBの管理は誰がする?

    現在WINでApacheにて会社のWEBを出しています。 WINの場合FTPサーバー側でフォルダを指定できています。 今回VINE+Apacheでやろうとしています。 ドメインが2つあり xxx.co.jp と aaa.com xxx.co.jpがドキュメントルート aaa.comがヴァーチャルホスト で動かそうと思っています。 しかしxxxとaaaというアカウントでともども /home/xxx/html /home/aaa/htmlに公開用HPを置いていますが conf内の /home/httpd/htmlから/home/xxx/htmlに変更すると Forbiddenが出てしまいます。 共にxxxとaaaのユーザーで管理させたいのですが これはFTP(ProFTPd)の問題かApacheの問題か切り分けが出来ない状況です。 Apache側の設定でデフォルトページがユーザーのhomeで出来るか FTPd側でRoot権限を持つフォルダをユーザーに開放するか… 分かりにくい文章ですが助けてください。

  • Apacheのドキュメントルート

    現在、PCにApacheをインストールしておりWeb公開しております。 Apacheのドキュメントルートを c:\xampp\htdocs\public_html に設定しておりFTPソフトにてこのpublic_htmlにファイルをアップロードしようとすると エラーになり 「c:\xampp\htdocs\public_html に対する許可されていない操作です。」 というエラーメッセージが出ます。 ちなみにpublic_html配下にサブフォルダを作成するとそこにはFTPソフトでアップロードできる 状態です。 Apacheのドキュメントルートってファイルの書き込みはできないのでしょうか。