Top過去ログ目次掲示板

作成日:2006年07月03日 作成:おやじ
掲示板で過去に質問された内容です。

No.6136 suExecでのドキュメントルートのCGI


No.6136 投稿時間:2006年07月03日(Mon) 23:42 投稿者名:tucker URL:
タイトル:suExecでのドキュメントルートのCGI

いつもお世話になります。
いま参考にsuExecを実験しています。
suexec -V で環境は/homeが有効になっています。
で、ユーザーディレクトリでのCGIは700などにして実行できますが、
httpd.confで設定したドキュメントルートは/home/htmlにして
います。そこで、ユーザーディレクトリと一緒でCGIを700や7001で
アクセスするとエラー500になります。
しかし、705にすると正常に実行できます。ドキュメントルートでの
CGIはユーザーディレクトリみたいな権限では実行できないもの
でしょうか?どこのサイトを調べてもユーザーディレクトリの
事には触れていますが、ドキュメントルートでのCGIには触れて
無いようで分かりません。
宜しくお願いします


No.6139 投稿時間:2006年07月04日(Tue) 21:28 投稿者名:おやじ URL:
タイトル:CGIのオーナやパーミッションがApacheの実行ユーザとあっていないからでは?

> いま参考にsuExecを実験しています。
> suexec -V で環境は/homeが有効になっています。
> で、ユーザーディレクトリでのCGIは700などにして実行できますが、
> httpd.confで設定したドキュメントルートは/home/htmlにして
> います。そこで、ユーザーディレクトリと一緒でCGIを700や7001で
> アクセスするとエラー500になります。
> しかし、705にすると正常に実行できます。ドキュメントルートでの
> CGIはユーザーディレクトリみたいな権限では実行できないもの
> でしょうか?どこのサイトを調べてもユーザーディレクトリの
> 事には触れていますが、ドキュメントルートでのCGIには触れて
> 無いようで分かりません。

おやじのコンテンツではバーチャルホストで書いてありますが、肝心なことは書いてあるつもりです。ドキュメントルートではApacheのユーザ権限で動かすことになります。デフォルトだとapacheとかnobodyですからコンテンツのFTP転送一発ではできないので、結構面倒ではないでしょうか?
従って、おやじはバーチャルホストでSuexecUserGroup ディレクティブを使ってログインできるUNIXユーザにして対応しています。
ところで、700では駄目で705でOKというのはSuEXECの考えからするとおかしな話ですよね。つまり、Apacheの実行ユーザ以外の権限を規制するということからすれば、700はOKで705はNG(実際はパーミッションとApacheの実行ユーザが一致していればどちらでも動作します。)なら話はわかりますが、その逆というなら、これは単にCGIのオーナやパーミッションがApacheの実行ユーザとあっていないので705の7ではなく5の部分で動作しているということではないですか?
同じことを多くの方に言ってますが、コンテンツでリンクしてあるようにApacheはドキュメントが完備しているので良く読まれると良いです。


No.6141 投稿時間:2006年07月05日(Wed) 00:06 投稿者名:tucker URL:
タイトル:Re: CGIのオーナやパーミッションがApacheの実行ユーザとあっていないからでは?

私もあれこれ考えて同じ事に気づきました。で、試にchownで
apacheに変更した所、実行できました。変更前は確かに705の5で実行
されているようでしたね。
所でバーチャルホストでSuexecUserGroupを設定すると全てのCGIは
指定のユーザー/グループになりますよね。
www.hogehoe.jpでアクセスできるように、バーチャルホストで
www.hogehoe.jpを指定しています。そこでSuexecUserGroupを
設定するとwww.hogehoe.jp/~xxxも同じ権限で起動となるのですよね


No.6145 投稿時間:2006年07月06日(Thu) 00:04 投稿者名:tucker URL:
タイトル:これで行こうと思っています

ドキュメントルートは自分のアカウントで、ユーザーディレクトリは
各ユーザーでと言う事はできないようなので、CGIの部分のみ
バーチャルホストを使用し,cgi.hoge.jpとしSuexecUserGroupを
設定し解決しようと思います。
所で、バーチャルホスト使用で気付いたのですが、おやじさんの
RedHatのsuExecでの説明ではVirtualHost内にDirectory設定が
ありますが、SuSEのApache説明では、VirtualHostの外にDirectory
設定があります。どちらでもOKだと思いますが、どちらが正解
なんでしょうか?


No.6149 投稿時間:2006年07月08日(Sat) 06:38 投稿者名:おやじ URL:
タイトル:何か勘違いされているような?

> ドキュメントルートは自分のアカウントで、ユーザーディレクトリは
> 各ユーザーでと言う事はできないようなので、CGIの部分のみ
> バーチャルホストを使用し,cgi.hoge.jpとしSuexecUserGroupを
> 設定し解決しようと思います。

何か勘違いされているような? 上記の自分?というのが何のことかわかりませんが、単純にあるユーザ(hoge)のホームディレクトリをドキュメントルートにして、SuexecUserGroupでhogeを指定してあげれば良いだけですよ。 Userdirは各ユーザで動作します。
おやじのところが、この状態です。

> 所で、バーチャルホスト使用で気付いたのですが、おやじさんの
> RedHatのsuExecでの説明ではVirtualHost内にDirectory設定が
> ありますが、SuSEのApache説明では、VirtualHostの外にDirectory
> 設定があります。どちらでもOKだと思いますが、どちらが正解
> なんでしょうか?

共通なら外に、特定のVirtualHostだけならその中に、明確に管理するなら同じものでもそれぞれに書いたほうが、何かの都合で変更したときに他のVirtualHostに影響しないので安全と思います。


No.6169 投稿時間:2006年07月09日(Sun) 22:43 投稿者名:tucker URL:
タイトル:というと?

こん・・は

> 何か勘違いされているような? 上記の自分?というのが何のことかわかりませんが、単純にあるユーザ(hoge)のホームディレクトリをドキュメントルートにして、SuexecUserGroupでhogeを指定してあげれば良いだけですよ。 Userdirは各ユーザで動作します。
とありますが、
「SuexecUserGroup ディレクティブを使用すると、そのホスト配下
の UserDir がここで指定したユーザ権限になってしまうという問題
があり、結果として SuexecUserGroup でユーザ/グループを指定する
と個別ユーザで CGI が動作しなくなってしまいます。」
とRedHat9でのsuExecの説明がありました。
なのに、SuexecUserGroupで指定すれば、ドキュメントルートは
この権限で動作し、UserDirは個別の権限で動作になるのですか?

今したいことは、以下の感じです。
suExec -Vでは
DOC_ROOTは/home
HTTPD_USERはapache

httpd.confでは
ServerNameはwww.hoge.jp
ルートディレクトリは/home/html
ルートCGIは/home/cgi
ユーザーディレクトリは/home/*/public_html
ユーザーCGIは/home/*/public_html/cgi-bin/
バーチャルホストは
NameVirtualHost *:80
ルート/ユーザーはsuExecと同様
ServerName www.hoge.jp
で、ルートのCGI権限はtuckerで起動で、ユーザーは各ユーザー
の権限で起動

何か情報が足りなければ追記します。
宜しくお願いします。

> > ドキュメントルートは自分のアカウントで、ユーザーディレクトリは
> > 各ユーザーでと言う事はできないようなので、CGIの部分のみ
> > バーチャルホストを使用し,cgi.hoge.jpとしSuexecUserGroupを
> > 設定し解決しようと思います。
>
> 何か勘違いされているような? 上記の自分?というのが何のことかわかりませんが、単純にあるユーザ(hoge)のホームディレクトリをドキュメントルートにして、SuexecUserGroupでhogeを指定してあげれば良いだけですよ。 Userdirは各ユーザで動作します。
> おやじのところが、この状態です。
>
> > 所で、バーチャルホスト使用で気付いたのですが、おやじさんの
> > RedHatのsuExecでの説明ではVirtualHost内にDirectory設定が
> > ありますが、SuSEのApache説明では、VirtualHostの外にDirectory
> > 設定があります。どちらでもOKだと思いますが、どちらが正解
> > なんでしょうか?
>
> 共通なら外に、特定のVirtualHostだけならその中に、明確に管理するなら同じものでもそれぞれに書いたほうが、何かの都合で変更したときに他のVirtualHostに影響しないので安全と思います。


No.6172 投稿時間:2006年07月10日(Mon) 21:57 投稿者名:おやじ URL:
タイトル:できない理由はないので、前レスを参考にやってみてください。

> > 何か勘違いされているような? 上記の自分?というのが何のことかわかりませんが、単純にあるユーザ(hoge)のホームディレクトリをドキュメントルートにして、SuexecUserGroupでhogeを指定してあげれば良いだけですよ。 Userdirは各ユーザで動作します。
> とありますが、
> 「SuexecUserGroup ディレクティブを使用すると、そのホスト配下
> の UserDir がここで指定したユーザ権限になってしまうという問題
> があり、結果として SuexecUserGroup でユーザ/グループを指定する
> と個別ユーザで CGI が動作しなくなってしまいます。」
> とRedHat9でのsuExecの説明がありました。
> なのに、SuexecUserGroupで指定すれば、ドキュメントルートは
> この権限で動作し、UserDirは個別の権限で動作になるのですか?

紛らわしい記述がありますね。ただ、1.3系ではこの問題は出ないとも書いてあるほか、下記でも触れてますが、おやじが前に書いたとおり動作してます。ドキュメントを見てもそういう制限があるとは一切記述がありませんので、恐らく当時の2.xのバグではないかと思います。

http://www.aconus.com/~oyaji/suse/suse_vs_redhat.htm


> 今したいことは、以下の感じです。
> suExec -Vでは
> DOC_ROOTは/home
> HTTPD_USERはapache
>
> httpd.confでは
> ServerNameはwww.hoge.jp
> ルートディレクトリは/home/html
> ルートCGIは/home/cgi
> ユーザーディレクトリは/home/*/public_html
> ユーザーCGIは/home/*/public_html/cgi-bin/
> バーチャルホストは
> NameVirtualHost *:80
> ルート/ユーザーはsuExecと同様
> ServerName www.hoge.jp
> で、ルートのCGI権限はtuckerで起動で、ユーザーは各ユーザー
> の権限で起動

できない理由はないので、前レスを参考にやってみてください。
具体的な問題がでたらご質問ください。
頭の中でいくら考えても、やらないことには始まりません。
たこさんのように、いろいろトライしていけば自分のスキルとして残りますし。


No.6175 投稿時間:2006年07月11日(Tue) 23:56 投稿者名:tucker URL:
タイトル:TESTしてみました

SuexecUserGroupを使用するとUserDirも同じ権限になる
と言うのは昔の話だったのですね。あちこち調べても皆おやじさん
と同じ事しか書かれていないか、触れないように説明があるので
てっきり今現在もそうなのかと思いました。
どの権限で動作しているかを知る手立てが無かったので、単純に
chown変更して試してみました。UserDirは各ユーザー権限でしか
CGIは動作せず、変えると500エラー。ドキュメントもSuexecUserGroup
で指定した権限で起動し、chownで変更すると500エラーでした
これで、無事解決です。有難うございます。

ちょっと話しずれますが、今時のLinuxはyumが多いですが、
定期的な自動アップデートを設定していると、カスタマイズした
apacheなんかは、アップデートされてしまうと大変ですね。
/etc/yum.confに「exclude=httpd*」とかしてやると除外されるよう
でいいらしいです。

では


No.6178 投稿時間:2006年07月12日(Wed) 20:10 投稿者名:おやじ URL:
タイトル:インターネット上の情報はすぐ腐ります。

> SuexecUserGroupを使用するとUserDirも同じ権限になる
> と言うのは昔の話だったのですね。あちこち調べても皆おやじさん
> と同じ事しか書かれていないか、触れないように説明があるので
> てっきり今現在もそうなのかと思いました。
> どの権限で動作しているかを知る手立てが無かったので、単純に
> chown変更して試してみました。UserDirは各ユーザー権限でしか
> CGIは動作せず、変えると500エラー。ドキュメントもSuexecUserGroup
> で指定した権限で起動し、chownで変更すると500エラーでした
> これで、無事解決です。有難うございます。

自分で書いておいて何ですが、インターネット上の情報はすぐ腐るので、何とかしたいと思ったら自分が納得いくまで追い込んでみることですね。

> ちょっと話しずれますが、今時のLinuxはyumが多いですが、
> 定期的な自動アップデートを設定していると、カスタマイズした
> apacheなんかは、アップデートされてしまうと大変ですね。
> /etc/yum.confに「exclude=httpd*」とかしてやると除外されるよう
> でいいらしいです。

おやじが使用しているSuSEはYaSTというもので行いますが、このあたりは非常にしっかりしていて、SRPMから自分がリビルドしただけのものも識別し、警告を出して上書きはしません。明示的に書き換えしない設定にすることも当然簡単です。
YaSTのパッケージ管理は、他のデストリにはない最高の出来ではないでしょうか?後、ハードの認識率も非常に高いですね。


No.6183 投稿時間:2006年07月14日(Fri) 19:50 投稿者名:tucker URL:
タイトル:YaSTはすばらしいですね

> > ちょっと話しずれますが、今時のLinuxはyumが多いですが、
> > 定期的な自動アップデートを設定していると、カスタマイズした
> > apacheなんかは、アップデートされてしまうと大変ですね。
> > /etc/yum.confに「exclude=httpd*」とかしてやると除外されるよう
> > でいいらしいです。
>
> おやじが使用しているSuSEはYaSTというもので行いますが、このあたりは非常にしっかりしていて、SRPMから自分がリビルドしただけのものも識別し、警告を出して上書きはしません。明示的に書き換えしない設定にすることも当然簡単です。
> YaSTのパッケージ管理は、他のデストリにはない最高の出来ではないでしょうか?後、ハードの認識率も非常に高いですね。

YaSTって便利なものがあるんですね。私もちょっと調べて導入を
して見ます。貴重な情報を有難うございます。
いつもおやじさんの所は参考になるし、知識も豊富でとても参考にな
ります。若輩者で本当に頭が下がります。
これからも宜しくお願いします。



掲示板▲頁先頭