[リストへもどる]
一括表示
タイトルUserDirの変更
記事No8433
投稿日: 2012/04/11(Wed) 20:43
投稿者青鯖
始めまして。個人でLinuxでの非公開サーバーをしている者です。
実は、apache2.2のUserDirの変更でつまづき投稿させて頂きました。

ユーザーディレクトリを標準の「 /home/*/public_html」から一層置いて、「 /home/*/web/public_html」へ変更したいと思い以下のように設定しました。
しかし、WEBページは開く事が出来たのですが、何故かCGIはエラー500が表示されてしまいます。
(変更前は「html」「cgi」とも表示されます)
私の設定の仕方が変なのか調べてみても何が変なのか特定できませんでした。
「DocumentRoot」などは設定の変更は出来ますが、まったく出来ないとは考えにくいですが、やはり「UserDir」の変更は難しいのでしょうか?

ご伝授のほどを宜しくお願いいたします。


UserDir /home/*/public_html

<Directory /home/*/public_html>
     AllowOverride FileInfo AuthConfig Limit Indexes
    Options Includes FollowSymLinks ExecCGI
    <Limit GET POST OPTIONS>
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET POST OPTIONS>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>


↓↓↓↓↓変更↓↓↓↓↓


UserDir /home/*/web/public_html

<Directory /home/*/web/public_html>

    AllowOverride FileInfo AuthConfig Limit Indexes
    Options Includes FollowSymLinks ExecCGI
    <Limit GET POST OPTIONS>
        Order allow,deny
        Allow from all
    </Limit>
    <LimitExcept GET POST OPTIONS>
        Order deny,allow
        Deny from all
    </LimitExcept>
</Directory>

タイトルRe: UserDirの変更
記事No8434
投稿日: 2012/04/12(Thu) 13:11
投稿者stranger
参照先http://ja.528p.com/
> 始めまして。個人でLinuxでの非公開サーバーをしている者です。
> 実は、apache2.2のUserDirの変更でつまづき投稿させて頂きました。
>
> ユーザーディレクトリを標準の「 /home/*/public_html」から一層置いて、「 /home/*/web/public_html」へ変更したいと思い以下のように設定しました。
> しかし、WEBページは開く事が出来たのですが、何故かCGIはエラー500が表示されてしまいます。
> (変更前は「html」「cgi」とも表示されます)
> 私の設定の仕方が変なのか調べてみても何が変なのか特定できませんでした。
> 「DocumentRoot」などは設定の変更は出来ますが、まったく出来ないとは考えにくいですが、やはり「UserDir」の変更は難しいのでしょうか?

httpd.confでsuexecモデュールが有効になっていませんか

suexecの組み込み設定は
端末で
suexec -V
で表示できます
組み込み設定を守らないと、CGIを実行できないと思います

一度suexecモデュールを無効にしてhttpdを再起動し
テストしてみてください

タイトルRe^2: UserDirの変更
記事No8435
投稿日: 2012/04/12(Thu) 18:47
投稿者青鯖
> > 始めまして。個人でLinuxでの非公開サーバーをしている者です。
> > 実は、apache2.2のUserDirの変更でつまづき投稿させて頂きました。
> >
> > ユーザーディレクトリを標準の「 /home/*/public_html」から一層置いて、「 /home/*/web/public_html」へ変更したいと思い以下のように設定しました。
> > しかし、WEBページは開く事が出来たのですが、何故かCGIはエラー500が表示されてしまいます。
> > (変更前は「html」「cgi」とも表示されます)
> > 私の設定の仕方が変なのか調べてみても何が変なのか特定できませんでした。
> > 「DocumentRoot」などは設定の変更は出来ますが、まったく出来ないとは考えにくいですが、やはり「UserDir」の変更は難しいのでしょうか?
>
> httpd.confでsuexecモデュールが有効になっていませんか
>
> suexecの組み込み設定は
> 端末で
> suexec -V
> で表示できます
> 組み込み設定を守らないと、CGIを実行できないと思います
>
> 一度suexecモデュールを無効にしてhttpdを再起動し
> テストしてみてください

stranger様。返信ありがとうございます。

suexecモデュールは無効になっていないみたいです。
suexec -Vをコマンド入れましたが、
「-bash: suexec: コマンドが見つかりません」と表示されました。

きっと何か見落としたミスがあるのかもしれませんね。
どうもありがとうごいます。

タイトルパスを変更する意味は?
記事No8436
投稿日: 2012/04/13(Fri) 05:42
投稿者おやじ
> suexecモデュールは無効になっていないみたいです。
> suexec -Vをコマンド入れましたが、
> 「-bash: suexec: コマンドが見つかりません」と表示されました。

普通、suexecがないとは考えにくいのでが、デストリは何ですかね?
suexecがPATHが通っていないところにあるとも考えにくいのですが・・・。

「suexecモデュールを無効」するというのは、「LoadModule suexec_module modules/mod_suexec.so」をコメントアウトして再起動することですよ。
ログを見ましたか? error_logで内容がわかるかも? suexec_logがある(あることでsuexecが動いている証拠にも)なら、これも。

後は、CGIの改行コードが気になります。パスが変わったのでFTPでCGIを上げられていないのでは?
CGIの頭のところで、「#!/usr/bin/perl --」と「--」を入れて直れば改行コードの問題。
この問題を解決するのも手ですが、そもそもパスを変更する意味は何なのですか? そちらを考えるほうが先かも?

タイトルRe: パスを変更する意味は?
記事No8439
投稿日: 2012/04/13(Fri) 15:46
投稿者青鯖
> 普通、suexecがないとは考えにくいのでが、デストリは何ですかね?
> suexecがPATHが通っていないところにあるとも考えにくいのですが・・・。
>
> 「suexecモデュールを無効」するというのは、「LoadModule suexec_module modules/mod_suexec.so」をコメントアウトして再起動することですよ。
> ログを見ましたか? error_logで内容がわかるかも? suexec_logがある(あることでsuexecが動いている証拠にも)なら、これも。
>
> 後は、CGIの改行コードが気になります。パスが変わったのでFTPでCGIを上げられていないのでは?
> CGIの頭のところで、「#!/usr/bin/perl --」と「--」を入れて直れば改行コードの問題。
> この問題を解決するのも手ですが、そもそもパスを変更する意味は何なのですか? そちらを考えるほうが先かも?

おやじ様。お返事ありがとうございます。

Linuxは「VineLinux6」を使用しております。
本当は「centOS」か「SuSE」にしたかったのですが、PCのチップセットがディストリの相性が悪くインストールも出来なかった為、「Vine」にしました。

> suexecモデュールは無効になっていないみたいです。
とコメントしましたが、「無効になっているみたいです」の誤りでした。
おっしゃるように「「LoadModule suexec_module modules/mod_suexec.so」」「#」にてコメントアウトして再起動はしております。

CGIに「#!/usr/bin/perl --」も試しましたが、依然と状況は変わっていない状況で少々頭を痛めております。
無論のこと、「test.cgi」でパーミッションは「705」と「755」に設定しております。
FTPソフトは「FFFTP var1.98」
「/home/test/web/public_html」フォルダ内にFTPソフトにて「アスキーモード」「バイナリモード」ともに転送して試しましたが効果はありませんでした。

おやじ様に言われ、ハッと気づきログを見ましたところ、
「[error] [client 192.168.1.14] suexec policy violation: see suexec log for more details」
「[error] [client 192.168.1.14] Premature end of script headers: test.cgi

と表示され何処かに「suexec」が存在しているらしいですね。

「suexec_log」も何処にあるかも解らず、「find」コマンドで検索したのですが見つける事が出来ませんでした。

パスを変更する理由は「ユーザーを追加」した場合、「public_html」以外にユーザー追加のさいに作られる初期フォルダフォルダが一緒に表示されてしまい、FTP転送時に「public_html」を探すのに戸惑ってしまいます。
ならばサーバーのFTPデーモン(ProFTPD)で「DefaultRoot ~」で制御を掛ければ良いのですが、「CGIやPHPテストとバックアップ用にサーバーを立てたい」と思って立てましたので、「public_html」フォルダ以外も使用しています。
それで、思ったのが「/home/*/public_html/」から一層下にフォルダを作って「/home/*/「任意フォルダ/public_html/」に「ProFTPD」で「DefaultRoot ~/任意フォルダ/」としてしまえば良いのではないか?と考えた次第です。

最初は簡単に設定出来るだろうと思っていたのですが、凄く苦戦するとは思っても居ませんでした。
今のところ、インターネットワーク上に公開する予定も誰かに貸し出す予定もない(こんな私の力量では怖くて出来ません)ので、今のまま設定を戻し、一般的な方法で、新たにユーザーの追加で必要フォルダ以外を削除するしかないかな? と思っている所です。

色々とお手数をお掛けしております。
申し訳ありません。

タイトルFFFTPの設定でどうにかなりませんか
記事No8440
投稿日: 2012/04/13(Fri) 16:44
投稿者stranger
参照先http://ja.528p.com/
FFFTPのホストの設定で

ホストの設定名 webページ用の特別な名前
ホストの初期フォルダ public_html

のように設定すれば良いのでは?

ローカルの初期フォルダも設定しておけば
さらに便利だと思う

設定値を変えて
ホストの設定名を変えれば
同一のユーザでも複数の設定ができるはず

FFFTPは開発が終了したらしく
filezillaも一つの選択
filezillaはwindows,linux両方ありますし

タイトルRe: FFFTPの設定でどうにかなりませんか
記事No8441
投稿日: 2012/04/13(Fri) 19:36
投稿者青鯖
> FFFTPのホストの設定で
>
> ホストの設定名 webページ用の特別な名前
> ホストの初期フォルダ public_html
>
> のように設定すれば良いのでは?
>
> ローカルの初期フォルダも設定しておけば
> さらに便利だと思う
>
> 設定値を変えて
> ホストの設定名を変えれば
> 同一のユーザでも複数の設定ができるはず
>
stranger様 再びのお返事ありがとうございます。

FTPソフト側で設定するのも一つの手でしたね。

出来ない事を可能するのに、色々と試行錯誤しましたが、「PHP」や「html」は表示されますが「CGI」だけが表示されず、やはり上手く動いてはくれないようです。
結局、あきらめて以前の設定に戻してクライアントPC側で制御していこうと思います。

また、万が一でも可能になったらご報告させて頂きますね。

> FFFTPは開発が終了したらしく
> filezillaも一つの選択
> filezillaはwindows,linux両方ありますし

余計な話ですが、FTTTPの元の開発者さんがバージョン止めをしましたけど、実は有志の方々でヴァージョンアップはされているんですよ^^。
UTF-8にも対応したので手軽さの理由でこちらを使わせてもらっております。

filezillaはLinuxでも使用できるんですね。
興味が出てきましたので浮気してみようかと思います。

お返答頂いた方々に大変感謝しております。
凄く良い参考になりました。
解らない事や疑問に思った事があって行き詰ったら、またお世話になるかと思います。
この度は本当にありがとうございました。

タイトル上手く行きました。
記事No8442
投稿日: 2012/04/14(Sat) 02:17
投稿者青鯖
お世話になっています。
先ほど、偶然にもLinux側での操作で上手く行きましたのでご報告に来ました。

stranger様。おやじ様。のアドバイス通り色々と調べてみました結果、
「/usr/lib/apache2」に「suexec」ファイルがあるのを偶然、見つける事が出来ました。
どうやら「VineLinux」ではコマンドでsuexecへのリンクはされていないようです。
(もしかしたら私がVineの認識不足なのかもしれませんが)

いずれにしても、「suexec」の削除で無事にCGIが動く事を確認できました。
心から感謝いたしております。
本当にお世話になりました。

タイトルモジュールをどうこうしても駄目でしたね
記事No8443
投稿日: 2012/04/14(Sat) 07:05
投稿者おやじ
> stranger様。おやじ様。のアドバイス通り色々と調べてみました結果、
> 「/usr/lib/apache2」に「suexec」ファイルがあるのを偶然、見つける事が出来ました。
> どうやら「VineLinux」ではコマンドでsuexecへのリンクはされていないようです。
> (もしかしたら私がVineの認識不足なのかもしれませんが)

確かに変わったところにありますね。パスが通っていなので「/usr/lib/apache2/suexec -V」で内容は表示できます。

> いずれにしても、「suexec」の削除で無事にCGIが動く事を確認できました。

おやじも暫くsuEXECで悩んでいなかったので忘れていましたが、suEXECは"wrapper"なのでsuexecがあれば動いてしまうので、モジュールをどうこうしても駄目でしたね。
ちなみに、renameではなく本当に削除してしまったのですか? 戻すとしたらインストールしなおしですか?
確かに、suEXECは面倒で、おやじもVirtualHostでいろいろなドメインを動かしているので、SuexecUserGroupでCGIが実行されるユーザとグループを指定しないとうまく動きません。
更に言えば、suEXECはPHPには効かないので中途半端な気もしますが、保険ということでおやじは動かしています。

因みに、おやじはいざという時のバックアップ用に別サーバを置いて、現用コンテンツをバックアップコピーしています。テストは万が一のことを考え、このバックアップ側でやっています。(バグでサーバを壊すこともあるので・・。実はやったことがあるので、現用機は極力触らないようにしています。)これなら、テスト中に外部からアクセスされることもないですし。(現用機でやる場合なら、.htaccessで規制する方法がありますが)テストは正に、テストユーザを作って必要なファイルを現用データからコピーしてやっています。これは、ディレクトリ階層等をそのまま保つためです。

> パスを変更する理由は「ユーザーを追加」した場合、「public_html」以外にユーザー追加のさいに作られる初期フォルダフォルダが一緒に表示されてしまい、FTP転送時に「public_html」を探すのに戸惑ってしまいます。

これなら、「/etc/skel」の中身をどこかにバックアップして全て削除(public_html以外)してしまえば、余計なものは作成されませんよ。

> ならばサーバーのFTPデーモン(ProFTPD)で「DefaultRoot ~」で制御を掛ければ良いのですが、「CGIやPHPテストとバックアップ用にサーバーを立てたい」と思って立てましたので、「public_html」フォルダ以外も使用しています。
> それで、思ったのが「/home/*/public_html/」から一層下にフォルダを作って「/home/*/「任意フォルダ/public_html/」に「ProFTPD」で「DefaultRoot ~/任意フォルダ/」としてしまえば良いのではないか?と考えた次第です。

やはり一層下にする意味がわからないですね。そもそも1ユーザしかいないならわざわざUserDirでやらなくても、DocumentRootでもいいような気もしますし・・・。

タイトルRe: モジュールをどうこうしても駄目でしたね
記事No8445
投稿日: 2012/04/14(Sat) 23:48
投稿者青鯖
おやじ様。本当にお世話になっております。

>ちなみに、renameではなく本当に削除してしまったのですか? 戻すとしたらインストールしなおしですか?
>確かに、suEXECは面倒で、おやじもVirtualHostでいろいろなドメインを動かしているので、SuexecUserGroupでCGIが実行されるユーザとグループを指定しないとうまく動きません。
>更に言えば、suEXECはPHPには効かないので中途半端な気もしますが、保険ということでおやじは動かしています。

>因みに、おやじはいざという時のバックアップ用に別サーバを置いて、現用コンテンツをバックアップコピーしています。テストは万が一のことを考え、このバックアップ側でやっています。(バグでサーバを壊すこともあるので・・。実はやったことがあるので、現用機は極力触らないようにしています。)これなら、テスト中に外部からアクセスされることもないですし。(現用機でやる場合なら、.htaccessで規制する方法がありますが)テストは正に、テストユーザを作って必要なファイルを現用データからコピーしてやっています。これは、ディレクトリ階層等をそのまま保つためです。

綺麗サッパリと削除致しましたが、リネームして別の所へバックアップを取っておいたので、もし不具合が生じれば元に戻すことが出来るようにしております。
ファイルやフォルダの削除の危険性は知っておりますので、その辺は大丈夫です。
ただ、suEXECの事は眼中になく今回の事で非常に勉強になりました。

公開サーバーは2台(公開用とバックアップ兼テスト用)以上ないと不安と言うのを良くお聞きしますね。
私は将来的に公開したいと思っておりますが、今の所は公開する事は滅多に無いので、どうしようもない重大なシステムエラーに陥ってしまったとしても「OSを再インストすればいいや」的な考えで行っております。
勿論、公開するならばもう一台は無いと不安ですが・・・。


>これなら、「/etc/skel」の中身をどこかにバックアップして全て削除(public_html以外)してしまえば、余計なものは作成されませんよ。

もし、出来なければ、そうしようかとも思っておりました。
出来上がっている「追加ユーザーディレクトリ」に対してはstranger様のご提案を採用しようと考えていましたが、本当に今回は偶然に助けられましたね。

>やはり一層下にする意味がわからないですね。そもそも1ユーザしかいないならわざわざUserDirでやらなくても、DocumentRootでもいいような気もしますし・・・。

そうですね。「誰かにサーバーを提供していますがセキュリティー面で一層下にフォルダを置きたい」とかなら解る話かもしれませんね。
わざわざ難しいやり方をしなくともにてフォルダで「php」「cgi」などで区切れば済む話だったかもしれません。
ただ、個人的ではありますが「ユーザーディレクトリの一層下に移すことが出来る」事が行えたのは嬉しいです。

お手数をお掛けしましたが本当にありがとうざいます。

タイトルRe: 上手く行きました。
記事No8444
投稿日: 2012/04/14(Sat) 08:53
投稿者stranger
参照先http://ja.528p.com/
わたしの場合
proftpd専用ユーザ apache でhtmlファイルのアップロードをしています
ftpasswdコマンド(proftpdに含まれる)で設定します
ftp専用なのでapacheでログインはできません

apacheのファイルは全て apache 所有 に変更しているので
一般ユーザでアップロードしてログインしてapacheに変更する手間を省きます 

そういうやり方もあるということで

タイトルRe^2: 上手く行きました。
記事No8446
投稿日: 2012/04/14(Sat) 23:56
投稿者青鯖
> わたしの場合
> proftpd専用ユーザ apache でhtmlファイルのアップロードをしています
> ftpasswdコマンド(proftpdに含まれる)で設定します
> ftp専用なのでapacheでログインはできません
>
> apacheのファイルは全て apache 所有 に変更しているので
> 一般ユーザでアップロードしてログインしてapacheに変更する手間を省きます 
>
> そういうやり方もあるということで

stranger様。お返事ありがとうざいます。

そのようなやり方もあるんですね。
大変参考になりました。
1つの事をするのにも、サーバー側の設定やクライアント側の設定などで色々あるんですね。

本当に勉強になりました。
ありがとうございます。