• ベストアンサー

Apache2 - CGIで出力されたファイルの所有者を変更するには?

Gentoo LinuxでApache2を動かしています。 Apache2の質問です。 UserDirで実行された(mod_userdirで処理される)CGIまたはPHPスクリプトが出力するファイル/ディレクトリの所有者を、リクエストされたユーザディレクトリのuid, gid へ自動的に変更する方法を教えてください。 レンタルサーバーではこのような動作を見掛けるし一般的だと思うのですが設定方法がわかりません。 よろしくお願いします。

  • gmac
  • お礼率60% (3/5)

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

  • ベストアンサー
  • mflow
  • ベストアンサー率63% (42/66)
回答No.2

多分参考URLにあるようなものを探しているのだと思うのですが、これはWebDAV用なので使えませんね。 CGIの方からの対処しかアドバイスできませんが、suidperlからchownを操作、もしくはperl→sudo→chownを操作する方法が考えられます。

参考URL:
http://webdav.todo.gr.jp/download/experimental/diskquota.txt

その他の回答 (1)

noname#39970
noname#39970
回答No.1
gmac
質問者

補足

mod_suexecだとユーザ毎にSuexecUserGroup ディレクティブを指定しないといけないと認識しています SuexecUserGroup ディレクティブに固有のUser Groupを記述する必要がない方法かSuexecUserGroupとは違う設定方法を探しています。 <IfModule mod_userdir.c> UserDir public_html <Directory /home/*/public_html> [このあたりで設定する方法] </Directory> </Ifmodule>

関連するQ&A

  • apacheのCGI設定について教えてください。

    CGIの勉強のために、古いパソコンに fedora core 4 をインストールしてapache でローカルのテスト用サーバーにしようとしています。 /var/www/html に設置した簡単な perl CGI は動くのですが、同じものをユーザーのホームディレクトリに設置すると、internal server error になってしまいます。 ***** 以下 httpd.confの抜粋です。***** #UserDir disable UserDir public_html <Directory /home/*/public_html> AllowOverride All Options Includes ExecCGI FollowSymLinks SetHandler cgi-script </Directory> AddHandler cgi-script .cgi .pl ************************************** サーバーのエラーログを見ると Premature end of script headers: test.cgi となっています。htmlをprintしているだけのスクリプトで、/var/www/html では動くので、apache の設定の問題かと思っています。 ちょっとカテゴリーが違うかもしれませんが、よろしくお願いします。

    • ベストアンサー
    • Perl
  • apacheでCGIを動かす

    apacheでCGIを動かそうと思っていますが、どうしても出来ません。 環境は以下の通りです。 apache:1.3.35 OS:Windows2000 httpd.confの設定は 1.ScriptAlias /cgi-bin/ の行をコメントアウト 2.Alias /cgi-bin/ "E:/hoge/cgi-bin/"に変更してDirectoryタグを追加 3.AddHandler cgi-script .exeを追加 以上の3点をしましたが、新しく設定したディレクトリのcgiは動作しませんでした。 apacheのmodulesディレクトリの中にmod_alias.soというファイルが有りませんがそれは関係有るのでしょうか? また、apacheとtomcatの連携ということを以前行ったのですが、動かない事と関係あるのでしょうか? 文字数の関係で見づらい説明になっているかと思いますがよろしくお願い致します。

  • apache2とPHP5について

    環境はDebian etchで、これにapache2とPHP5をインストールしてみました。libapache2-mod-php5とphp-pear php5-cgi php5 php5-gdなどをインストールして、さあ、PHPのCGIを動かそうというところでつまずきました。 ユーザディレクトリのモジュールを導入してUserdir.confでOptions ExecCGI(+なし)を指定してやりましたがこのCGIを起動しようとするとダウンロード画面になって、ダウンロードができませんと表示されます。ちなみにperlはちゃんと動きます。そして、ドキュメントルートである、/var/wwwのほうにもCGIを設置して起動してみましたが、同じ症状に見舞われます。 エラーログを見てみるとユーザディレクトリのほうに設置しているCGIはPermission deniedになっていました。権限はちゃんと設定してあるのにです。 /var/wwwのほうに設置したCGIはExecCGIが指定されていないと書いてありました。設置方法はよくわからないのですが。 このような場合、どうすれば解決できますでしょうか?

  • apacheによるCGIの使用について

    極めて初歩的な質問かも知れませんが、ご回答頂けると幸いです。 現在、私は玄箱(非HG)を使用して、apache1によるホームページを開いています。OSはMontaVista LinuxとDEBIANの二種類を使用しているのですが、MontaVistaLinuxの方で稼動しているapacheでは、正常にCGIが使えるのに対し、DEBIANの方では、MontaVistaLinuxと全く同じバージョンのapacheを使用し、CGIの設定も全く同じ状態であるにも関わらず、何故かCGIが使用できません。必ずInternalServerErrorとなってしまいます。何度もCGIの設定を見直したのですが、どうしてもDEBIANにインストールしたapacheではCGIが使えませんでした。DEBIANでapacheは使用できないのでしょうか? 現在のCGIに関する設定は以下のようになっています。 <IfModule mod_alias.c> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ # # "/usr/lib/cgi-bin" could be changed to whatever your ScriptAliased # CGI directory exists, if you have that configured. # <Directory /usr/lib/cgi-bin/> AllowOverride None Options None Order allow,deny Allow from all </Directory> </IfModule> また、AddHandler cgi-script .cgiの行はコメントアウトしています。 参考サイト:http://www5.plala.or.jp/vaio0630/apache/apache_cgi.htm DEBIANでapacheが使用できないとは思えないのですが、現実に使用できず、とても悔しいです。 もしDEBIANにインストールしたapacheでCGIを使える方がいましたら、どのような設定をすればCGIが動くのかを教えていただけると幸いです。 どうぞ宜しくお願い致します。

  • ディレクトリーの所有者変更

    環境:レンタルサーバー safe_modeはonになっています。 phpから作成したディレクトリーの所有者がapacheになってしまうので、所有者をuserに変更したいのですが出来ません。 chown()を使っても無理でした。 回避する方法はありませんでしょうか? 宜しくお願いします。

    • 締切済み
    • PHP
  • apacheでcgi

    AddHandler cgi-script .cgiを有効にして.htaccess の中にOptions +ExecCGIAllを記述してhttpd.confのowOverride Options としてcgiを実行しようとしたら下記エラーになりました。 [Thu Nov 15 11:16:54 2001] [error] (13)許可がありません: exec of /home/jin/WWW/cgi-bin/tslbbs.cgi failed [Thu Nov 15 11:16:54 2001] [error] [client 192.168.0.9] Premature end of script headers: /home/jin/WWW/cgi-bin/tslbbs.cgi それで、 #AddHandler cgi-script .cgi として、 <Directory /home/*/WWW> Options ExecCGI </Directory> にしたら cgiのソースが見えてしまいます。 cgiのPermissionsは755になっております。 ScriptAliasで/cgi-bin/ /home/*/WWW/cgi-bin/を記述してOptions ExecCGIにしてもソースが見えてしまいます。 cgiを実行させるのにはどうすればいいのでしょうか?? (以前Linuxを良くわからないときに(今でも解っていませんが・・)同じような質問をここに挙げてその時は単純な自分の間違いで動かなかったのですが単純なソースのミスでした。それで今度はLinuxをインストールをしなおしたら動かなくなったのです。 http://apachetoday.com/news_story.php3?ltsn=2000-06-05-001-10-NW-LF-SW 等覗いてそれをやっても動かないのです。 多分単純なことなのかもしれませんが行き詰まって困っております。 昨日の質問でユーザーのHTMLが見れないのはURLの指定で最後に'/'をつければ問題なく見れました。今はイントラネットでLinuxを動かしているのですが、実際のインターネットでは最後の/は入れたり入れなかったりでも問題なく見れるのですが、正しくは最後に/を入れるみたいですね。)

  • ファイル所有者を「apache」へ変更する理由は?

    ■現状 ・VPS(CentOS 6.x)に、phpMyAdminを入れている最中です ■質問1 ・所有者をapacheへ変更する理由は? ・ネットを見ていたら、「phpMyAdmin」ディレクトリの所有者をapacheへ変更しているサイトがあるのですが、どうしてrootから変更するのでしょうか? そうしなければいけない? あるいはそうした方が良い? ■質問2 ・サイトによって書き方に違いがあるのですが、何が違うのでしょうか? ・chown apache:apache /★★/phpmyadmin/config.inc.php ・chown -R root.apache /★★/phpmyadmin/ ■質問3 ・yumを利用してインストールした場合、リンク先のようになったのですが、この2つにはそれぞれどういう役割の違いがあるのでしょうか? ・また、一般的に「yumを利用してインストール」する場合、このような感じで設定ファイルは自動作成されるものなのでしょうか?(質問趣旨としては、出来れば事前に、もしくは事後にでも、コマンド打つことにより何らかのファイルが自動生成されるなら知りたいです) ・慣れの問題でしょうか? ▽【Linux】【phpMyAdmin】メモ -- config.inc.phpの場所について - zhuweichenの日記   http://d.hatena.ne.jp/zhuweichen/20130228/1362044999

  • apache1.3でのUserDir設定について

    apache1.3.37を使用してます。 httpd.confを下記のようにして、UserDirを有効にしてます。 <IfModule mod_userdir.c> UserDir /home/*/public_html/index.html <Directory /home/*/public_html> AllowOverride All </Directory> </IfModule> ※UserDir関連では上記以外変更してません。 この設定で、http://www.xxxx.jp/~useridを開き /home/userid/public_html/index.htmlは表示されるのですが、 画像ファイル等だけ、DocumentRootに指定したディレクトリを 見に行ってしまいます。(エラーログにて確認) 当然、画像はDocumentRootで指定したディレクトリではなく 、/home/userid/public_htmlに入ってるので表示されず ×マークになります。 画像ファイル等も/home/userid/public_html直下から参照したいのですが どのようにすれば良いでしょうか? 設定が不足してるのでしょうか? また、/home/userid/public_html配下にcgiと言うディレクトリを 作成し、CGIを動作させたいのですが、その場合どのような設定を 追加すればよいのでしょうか? よろしくお願いします。

  • CGI版PHPについて

    一般的なPerlのCGIが実行可能な状態のApache(Linux上)にCGI版のPHPを追加インストールした場合、ApacheはスクリプトがPerlであるかPHPであるかの違いをどう認識するのでしょうか? 方法1 スクリプトはどちらも*.cgiとして作成し、スクリプト内先頭行のperlやphpへのパスの記述で認識する 方法2 perl→*.cgi php→*.php のようにhttpd.confや.htaccessで設定する 初心者のためこの二つくらいしか思い浮かばないのですが、どちらかが正解だったりしますか??

    • ベストアンサー
    • PHP
  • ディレクトリの所有者をXAMPPのapacheに

    Linux初心者です。 現在、CentOS5.4でLinuxサーバ構築の勉強をしています。 ディレクトリの所有者をXAMPP for Linux1.7.4のApacheに変更したいのですがイマイチやり方がわかりません。 変更したいディレクトリは book_picture というフォルダで /opt/lampp/htdocs/book_picture にあります。 ディレクトリの所有者を変更するにはchownコマンドというのを使うのは調べていてわかりましたが book_picture のファイル名が /opt/lampp/htdocs/book_picture だと上手くいきませんし、 XAMPP for Linux1.7.4のApacheのユーザー名もわかりません。 よろしくお願いします。 ちなみにディレクトリの所有者を変えてクライアント側からファイルのアップロードがしたいのです。 パーミッションを777にする方法ではできました。