• ベストアンサー
  • 困ってます

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

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

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数141
  • ありがとう数0

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

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

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

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

共感・感謝の気持ちを伝えよう!

関連するQ&A

  • 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が指定されていないと書いてありました。設置方法はよくわからないのですが。 このような場合、どうすれば解決できますでしょうか?

  • apache2でユーザーディレクトリが

    apache2でユーザーディレクトリを使いたいんですが ただのapacheではデフォルトでユーザーディレクトリがつかえるんですが 403でパーミッションを直して使えて apache2でいろいろ apache2.confなどにuserdir.cなどのモジュールを読み込ませたり sites-avalias/defaultに /home/*/public_htmlなど試してみたいんですが ダメみたいです ちょっと省略していますが ちなみにバージョンはApache/2.2.3です エラーは http://xxxxx/~ユーザー名 にアクセスすると 403ではなく404エラー フォルダが無いということは sites-avalias/defaultかapache2.confの設定がおかしいんでしょうか? ちゃんと /home/xxxx/public_htmlも作ってありますし パーミッションもあっています しかし <Directory /home/xxx/public_html>などの設定をしたいんですが sites-avalis/defaultに書くのか それともapache2.confに書くのかまぎらわしくて defaultのほうには<Directory /var/www>など書いてあって apache2.confにはmoduleなどいろいろ書いてあります apache2がhttpd.confではなくてまぎらわしくてよくわかりません それとバージョンなど古かったりなど違ったりして できないみたいです Apache/2.2.3でユーザーディレクトリを使っているかた 詳しく教えて下さいお願いします

  • apache2を再インストール時に

    apache2で*.conf関係を編集していたのですが、VIコマンドを誤って、内容を全部削除してしまいました。 そのため、apache2をアンインストールしたところ、関連付けされてそうなディレクトリ(/etc/apache2など。これがそもそものトラブルかと)が残っていたので削除してしまいました。 その後、apache2を再びインストールしなおしたのですが、/etc/apache2以下の*.conf群がすべて復元されていませんでした。 復元方法もしくは、それぞれのファイル(初期状態)の入手先などを教えていただけないでしょうか?

その他の回答 (1)

  • 回答No.1
noname#39970
noname#39970

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

関連するQ&A

  • apache2の削除

    環境:RedHat9 apache2.0.46 apache2を ./configure make make install の手順でインストールした後に、apache2を削除するには apache2の解凍ディレクトリ(/usr/local/src/httpd-2.0.46)と /usr/local/apache2ディレクトリーを削除するだけで良いのですか?

  • CentOS 5のApache2 UserDir

    さくらインターネットでCentOS 5の入った専用サーバを借りて勉強中です。 Apache2をインストールし、ユーザーディレクトリの設定をして、各ユーザーのホームディレクトリにあるpublic_htmlの中のディレクトリを参照するよう設定しました。 当初、下記サイトを参考に http://httpd.apache.org/docs/2.0/ja/mod/mod_user … 以下のように設定ファイルで設定したのですがうまくいきませんでした。(コメント部分は省略しています)。 --- <IfModule mod_userdir.c> UserDir public_html </IfModule> --- 上記設定で、http://○○○.com/~ユーザー名/にアクセスすると、ファイルが見つからない旨のエラーが表示されていました。 ログを確認すると以下のようになっていました。 --- [Sun Jul 31 20:56:19 2011] [error] [client ○○.××.△△.□□] File does not exist: /home/ユーザー名/\xe3\x82\xb3\xe3\x83\xa1\xe3\x83\xb3\xe3\x83\x88\xe5\xa4\x96 \xe3\x81\x97\xe3\x81\xbe\xe3\x81\x97\xe3\x81\x9f --- そこで、apacheの設定ファイルを以下のように書き直したところ --- <IfModule mod_userdir.c> UserDir /home/*/public_html </IfModule> --- 無事にサイトにアクセス出来るようになりました。 一応問題は解決したとはいえ、できれば --- <IfModule mod_userdir.c> UserDir public_html </IfModule> --- の方がなぜうまくいかなかったのかの原因も知りたいです。 原因と考えられるのは、さくらのサーバーを借りたときに最初のサーバーのデフォルトの文字が LANG=C だったのを、日本語を使うために LANG="ja_JP.UTF-8" に変更したことです。 が、英語名のディレクトリ名で問題が起こるか?と言う疑問と、文字コードが原因としてどうやればうまく行くんだ?という疑問があります。 どなたか原因が分かる方はいらっしゃいますでしょうか? よろしくお願いいたします。

  • Apache2でウェブサイトを公開しようとしていますが上手くできません

    ホームページビルダーで作成したフレームページ(ブラウザのプレビューでは問題なく機能しています)をftpサーバにアップロードをしてapache2の/var/www/apache2-default/index.htmlにウェブコンテントを入れたのですが、フレームページのウェブサイト画面ではなくコンテントのファイルを納めたアーカイブ(Index of  /apache2/index.htm)が現れます。どこに問題があるのか教えていただきたく筆をとりました。CUI使用で独立をしたパソコンにDebianのEtchにapache2 php5 mysql-server php5-mysql libapache2-mod-php5 php5-gdとwu-ftpサーバを入れています。尚、/var/wwwのディレクトリーにはapach2-default/とindex.html・phpinfo.phpファイルが収まっています。ここにmysite.htmlと新たなファイルを作成しても上記と同様にアーカイブしか現れません。宜しくおねがいます。

  • apache2のログの分け方について

    自宅サーバーでBBSのCGIを動かしています。 VineLinux3.2+Apache2 長すぎるリクエストのログを残さないように LogFormat "%h %l %u %t \"%!414r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined とhttpd.confに記入してうまく機能しています。 そのほかに不正なアクセス(主に海外から)をドメインやIPアドレスで 制限しているのですが、ログに403エラーがたくさん残ってしまいます。 上記の方法で"414"の部分を"403"に書き換えても機能せず 大量のログが残ってしまいます。 ログを残さないようにするために何か良い方法はないでしょうか?

  • Apache2.2の起動スクリプト

    Apache2.2の起動スクリプトは皆さんはどのように作成されていますでしょうか? ご存知の方、アドバイスをお願いします。

  • apache2+mod_ssl-apache2+OpenSSL

    apache2+mod_ssl-apache2+OpenSSLで、 /etc/apache2/conf/httpd.confに <IfModule mod_ssl.c> /ect/apache2/conf.d/ssl.conf </IfModule> を追記、 /ect/apache2/conf.d/ssl.confは <VirtualHost 192.168.1.21:443>などを環境に合った設定にしました。 そしてapache2を再起動したのですが、以下のようになりました。 [root@localhost root]# /etc/init.d/apache2 restart httpdを停止中: [失敗] httpdを起動中: [Wed Sep 07 20:39:37 2005] [warn] module ssl_module is already loaded, skipping [Wed Sep 07 20:39:37 2005] [error] (EAI 2)Name or service not known: Failed to resolve server name for 192.168.1.21 (check DNS) -- or specify an explicit ServerName [Wed Sep 07 20:39:37 2005] [warn] VirtualHost 192.168.1.21:443 overlaps with VirtualHost 192.168.1.21:443, the first has precedence, perhaps you need a NameVirtualHost directive [Wed Sep 07 20:39:37 2005] [error] (EAI 2)Name or service not known: Failed to resolve server name for 192.168.1.21 (check DNS) -- or specify an explicit ServerName (98)Address already in use: make_sock: could not bind to address 0.0.0.0:443 no listening sockets available, shutting downUnable to open logs [失敗] /ect/apache2/conf.d/ssl.confを0バイトにすると、apache2は起動できました。 どの設定が悪いか分かる方いらっしゃいませんか?

  • PHP5とApache2.2.2を選びましたが。。。

    現在、PHP5の設定で戸惑っています。 httpd.confファイルでの設定で、 LoadModule php5_module D:/php/php5apache2.dll AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps DirectoryIndex index.html index.php を追記しましたが、どうしても115行目の LoadModule php5_module D:/php/php5apache2.dll でアラーらしき症状が出てPHPが動作してくれません。 cgi,phpの動作ディレクトリは”D”で設定しています。 どなたかアドバイスの程、宜しくお願い致します。

    • ベストアンサー
    • PHP
  • Windows+Apache2.2で別ユーザー実行

    こんにちは。 Windows2000+Apache2.2でCGIを動かしています。 CGIの言語にはActivePerlを使っています。 CGIが実行される際のファイルやディレクトリのアクセスに制限をかけたいのですが、方法がわかりません。 CGIが実行されるユーザーを指定する方法としては、suExecというのがそれっぽい感じなのですが、Windowsでの使用方法がよくわかりませんでした。これはunix系の環境でしか使えないのでしょうか? 他の方法でも構いません。最終的にアクセス制限ができれば十分です。 なにか方法はないものでしょうか?

    • 締切済み
    • CGI
  • Vine Linux 2.15 ではApache2を動かせないのでしょうか。

    古い ノートパソコン(PentiumMMX 233Mhz メモリ64MB)にVine Linux 2.15 をインストールして学習しています。 ---------------------------------------- Vineに付属していたApache1.1は、削除方法が今ひとつ良く分からないのでそのままとし、Apache2(httpd-2.0.53.tar.gz)を解凍しインストールして共存させました。 # /usr/local/apache2/bin/apachectl  start   とすると、 (98)アドレスは既に使用中です:・・・・と出るので、Apache1.1の /etc/httpd/conf/httpd.confファイル中のポート番号を80番から8888番 に変更してrebootしました。そして、Apache2.0を起動してlocalhostにアクセスしましたが、「サーバが見付かりません」とのメッセージが出ます。 # /usr/local/apache2/bin/apachectl  stop   としてみると、 httpd (pid 1029?) not running となり、Apache2が動いていない様子です。 ----------------------------------------- # vi /usr/local/apache2/conf/httpd.conf で開いてみると、Listen80 になっています。しかし、 # netstat -ln | grep 80   とすると、 tcp 0 .00.0.0.0:5680 0.0.0.0:* LISTEN となっており、Port80は見当たりません。 # ps aux | grep http   とすると、FedoraCoreの解説本には、 [・・・・・・/usr/local/apache2/bin/httpd -k start] になると書いてありますが、 root 689 0.0 2.0 3712 1296 ? S 14:33 0 /usr/sbin/http となっています。 ------------------------------------ どこが不具合でApache2が動かないのでしょうか。どのように修正すれば良いでしょうか。 Apache2を起動できないのは、そもそも、パソコンの能力が不足しているからでしょうか? Vine Linux 2.15ではApache2を使えないのでしょうか? 何かお気づきの点があれば教えて頂ければ有難いです。よろしくお願いします。

  • DebinaのOSでapache2の設定の仕方

    LennyのOSにapache2(2.6.26.2-686)をインストールしたのですが、/etc/apache2/apache2.configの内容がetchの場合と少し違うようです。 EtchのOSの場合は 1. ServerTokens Full → ProductOnly 2. ServerSignature On → Off 3. LanguagePriority en ca cs da ・・・ → ja en ・・・・zh-TW または jaとen のみ 4 #AddHandler cgi-script .cgi → #アンコメントしてAddHandler cgi-script .cgi .pl  http://ameblo.jp/my-ameba/entry-10032177876.html のようですが、2.6.26.2-686には上記の記述がありません。 エラードキュメントで必要になるmod_alias, mod_include and mod_negotiationを始動させるときに30行をuncomentしろとの1行に LanguagePriority en cs de es fr it nl sv pt-br ro とあるが、Webサイトそのもの言語と言うわけでないような気がします。 上記の変更を、手打ちで適当な場所に打てば、解決するのか、それとも他のファイルで調整をするのか、わかる方ご教授をお願いします。

専門家に質問してみよう