• 締切済み
  • すぐに回答を!

Apacheでのユーザーディレクトリ生成

現在fedora core4 -Apache- でサーバー構築を勉強中なのですが、どうしても解決できない問題が出ました。それはユーザーディレクトリを生成した後、そのディレクトリにアクセスできないという問題です。 ユーザー[testuser]を追加し、/home/testuser/public_htmlを作成後 /home/testuser/public_html/index.htmlを作成、 httpd.confの設定を <IfModule mod_userdir.c> #UserDir disable UserDir /home/*/public_html/ </IfModule> # # Control access to UserDir directories. The following is an example # for a site where these directories are restricted to read-only. # #<Directory /home/*/public_html> # AllowOverride FileInfo AuthConfig Limit # Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec <Directory /home/*/public_html> AllowOverride All Options IncludesNoExec ExecCGI FollowSymLinks <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> とし、ttp://www.testsrv.net/~testuserにアクセスしたところ、 You don't have permission to access /~user1 on this server. アクセス権が無いとはじかれました。 この場合、アクセスできるようにするにはどのようにすれば良いのでしょうか?

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

  • 回答数2
  • 閲覧数113
  • ありがとう数4

みんなの回答

  • 回答No.2
  • xjd
  • ベストアンサー率63% (1021/1612)

まず、UserDir の記述ですが、  UserDir public_html だけでOKです。 次に、ディレクトリ・ファイルの権限ですが、所有者(testuser)以外、つまり、 Apacheプロセスの所有者に、チェンジディレクトリの許可、ファイル読み込みの許可が 振られていますか? Apacheプロセスがチェンジディレクトリするためには、自分以外の所有者権にxが必要です。 Apacheプロセスがファイルを読むためには、自分以外の所有者権にrが必要です。 [/home/hoge/public_html/index.html] drwxr-xr-x  4 root root 1024 2月 19 17:09 home/ drwxr-xr-x 15 hoge hoge 1024 3月  9 22:13 hoge/ drwxr-xr-x  2 hoge hoge 1024 3月  9 22:13 public_html/ -rw-r--r--  1 hoge hoge  85 3月  9 22:13 index.html >とし、​www.testsrv.net/~testuser​にアクセスしたところ、 >You don't have permission to access /~user1 on this server. >アクセス権が無いとはじかれました ところで、testuser を作成したのに、user1 でアクセスしてるんですか? 何がしたいのでしょう?

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

質問者からのお礼

補足: xid様のご指摘どおり drwxr-xr-x  4 root root 1024 2月 19 22:00 home drwxr-xr-x 8 testuser testuser 1024 3月  9 22:00 testuser drwxr-xr-x  2 testuser testuser 1024 3月  9 22:00 public_html -rw-r--r--  1 testuser testuser  85 3月  9 22:00 index.html としましたが、状況は変わりませんでした。 どうすれば良いのでしょうか?

質問者からの補足

申し訳ありません。 記入ミスでした。正しくは、 ou don't have permission to access /~testuser on this server. でした。

  • 回答No.1

エラーログにはなんて書いてありますか?

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

質問者からの補足

error_logには (13)Permission denied: a ccess to /~testuser denied となっています。

関連するQ&A

  • Fedora Apache ユーザディレクトリの設定 /をつけないと表示されない!

    Fedora CoreのApacheでユーザディレクトリのコンテンツを公開するため、下記のように設定しました。 <IfModule mod_userdir.c> UserDir public_html </IfModule> <Directory /home/*/public_html> AllowOverride All Options IncludesNoExec ExecCGI FollowSymLinks <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> で、ばっちり見れるようになったんですが、下記のような問題が残っています。 http://ホストアドレス/~ユーザ名/ では正常に表示されるが、 http://ホストアドレス/~ユーザ名 のようにスラッシュを省略すると、表示されない。 ご存知の方おられましたらよろしくお願いしますー!

  • apacheのユーザーディレクトリの設定

    Fedora Core6のapacheのユーザーディレクトリの設定で悩んでいます。 設定ファイル(httpd.conf)には以下のように記述しています。 #UserDir disable UserDir public_html <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> ユーザー登録をして/home/ユーザ名/にpublic_htmlフォルダを作成して、index.htmlページを作り、http://localhost/~ユーザー名/index.htmlにアクセスしましたが、「403 Forbidden」となってしまいます。 http://127.0.0.1/~ユーザー名/でアクセスしても「403 Forbidden」になります。 フォルダやファイルのパーミッションをいろいろと変えてみましたが表示されません。 こちらはLinux勉強中の初心者です。 よろしくお願いします。

  • Redhat9のHTTPDでCGIがつかえない

    まずやりたい事はユーザーごとにWEBができるようにして、CGIをpublic_html以下のどこにでもCGIが使えるようにしたい思っています。 いろんなサイトを見てhttpd.confをいじってますが、どうしてもCGIを実行しても500エラーがでます。perlの場所はあっているんですが。 httpd.confのいじった所は、 <IfModule mod_userdir.c> UserDir public_html </IfModule> と <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Limit Options IncludesNoExec ExecCGI FollowSymLinks <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> と ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"をコメントアウトしました。もしよろしければご指導のほどよろしくおねがいします。

  • Apacheのユーザーディレクトリにアクセス不可

    こんにちは。 ここ最近、学習のためにCentOSでWebサーバの構築を行っていたのですが、 どうにも自力では解決できない問題に直面しているため、皆様のお力をお借りできればと思います。。 【現象】 ApacheによるWEBサーバに「http://サーバIP/~ユーザ名/index.html」でアクセスしようとすると、 「403 Forbidden」エラーでアクセスできない。 【環境】 ・CentOS 6.4 64ビット (VirtualBox上のゲストOSとして稼働) ・Apache - 2.4.6 (/usr/local/apache/ 以下に存在) 【既に確認済みの事項】 ・以下のディレクトリのパーミッションは755に設定されている(711も確認済み)  「/home」 「/home/ユーザ名」 「/home/ユーザ名/public_html」 ・SELinuxはDisabled(Permissiveも確認済み) ・「# restorecon -R /home」コマンドは一応実行済み ・「public_html」以下にはパーミッション644の「index.html」が存在している ・「http://サーバIP/~間違ったユーザ名/」は403でなく404エラーになる ・「http://サーバIP/~ユーザ名/存在しないファイル名」は404でなく403エラーになる ・htdocs以下のファイルには「http://サーバIP/~」で正常にアクセスできる。 (htdocs以下のフォルダのパーミッションは755で、711だと403エラーになった。) 【設定ファイル】 /usr/local/apache/conf/httpd.conf は以下の通り記述されている。 ・モジュールロード部分 LoadModule userdir_module modules/mod_userdir.so ・設定部分 <IfModule mod_userdir.c> # # UserDir is disabled by default since it can confirm the presence # of a username on the system (depending on home directory # permissions). # #UserDir disable # # To enable requests to /~user/ to serve the user's public_html # directory, remove the "UserDir disable" line above, and uncomment # the following line instead: # UserDir public_html </IfModule> <Directory /home/*/public_html> AllowOverride All Options IncludesNoExec ExecCGI FollowSymLinks <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> 同様の症状に困っている書き込み・記事等もたくさんあり、それらは確認しつくしたつもりですが、 全てパーミッション見直し・SELinuxの設定までで解決しているように見受けられます。 おそらく、自分では思いもつかない全く別の原因が存在するのではないかと思っており、 皆様のお力をお貸しいただければ幸いです。 なお、足りない情報等あればご指摘いただければと思います。 どうぞ余禄お願いいたします。

  • Apache2の設定について。

    Solaris10にてApache2.0.52使っていて、ユーザルート上でCGIの許可をしているのにユーザルート上のCGIにアクセスしようとすると403エラーが発生してしまいます。 CGI-BIN以外の場所でCGIを使おうとする場合はエイリアスも設定しないといけないのでしょうか? 下に設定箇所も載せておきますので、確認よろしくおねがいします。 # Control access to UserDir directories. The following is an example # for a site where these directories are restricted to read-only. <Directory /export/home/*/public_html> AllowOverride None Options IncludesNoExec ExecCGI FollowSymLinks <Limit GET POST OPTIONS> Order deny,allow Allow from 192.168.80.0/24 Deny from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory>

  • Apach2.0 ホームディレクトリでCGIが

    こんにちは。 CGIの勉強をしています。 わかる方がいらっしゃいましたら、おしえてください。 ソースは、poderosaでつないでviにて作成。 ブラウザからのアクセス http://XXX.XXX.XXX.XXX/~admin/cgi-bin/test.cgi (test.cgi)755 #!/usr/bin/perl print "Content-type: text/html\n\n"; print "Hello\n"; ./test.cgi にて、Helloと表示される (httpd.confに追加したもの) UserDir public_html <Directory /home/*/public_html> AllowOverride All Options IncludesNoExec ExecCGI FollowSymLinks <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> 以下を追加したこともあり↓ <Directory /home/*/public_html/cgi-bin/> AllowOverride None Options ExecCGI SetHandler cgi-script Order allow,deny Allow from all AddHandler cgi-script .cgi </Directory> よろしくおねがいします。

  • httpd.confを添削してください!!(長文)

    こんにちわ いろいろと調べながらhttpd.confを自分の理想の動作を得るたねに設定したつもりです。 添削をお願いします。 /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ DocumentRoot /var/www/html <Directory /> Options FollowSymLinks AllowOverride All </Directory> <Directory "/var/www/html"> #←home Options FollowSymLinks Includes AllowOverride All Order allow,deny Allow from all </Directory> #.htaccessを許可、cgiは不可、ssiは許可、シンボリックリンク許可 Order~略 <IfModule mod_userdir.c> UserDir public_html </IfModule> <Directory /home/*/public_html> AllowOverride AuthConfig Limit Options +ExecCGI +Includes </Directory> #ユーザー領域では.htaccessで認証、アクセス元などで制御の許可。 それ以外は不可。 homeでcgiが不可ですがここでは許可したいので+を付けた。 <Directory "/var/www/cgi-bin"> AllowOverride All Options ExecCGI Order allow,deny Allow from all AddHandler image .gif .jpg AddHandler text/html .htm .html </Directory> /_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ こんな感じなんですがどこかおかしいでしょうか?

  • .httpd.confの記述方法

    いつもお世話になります。 <!--#exec cmd="TEST.CGI"-->が使用できないため、httpd.confを 見直していたところ下記記述になっておりました。 371行目にOptions All、372行目にOptions Indexes MultiViews SymLinksIfOwnerMatchの記述があります。 2行続けてOptionsの記述がある場合動作はどうなるのでしょうか? どちらか削除した方がよろしいですよね。 お恥ずかしいのですが、ご回答お願いいたします。 -------------------------------------------- #<Directory /home/*/www> 357 # AllowOverride FileInfo AuthConfig Limit 358 # Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec 359 # <Limit GET POST OPTIONS PROPFIND> 360 # Order allow,deny 361 # Allow from all 362 # </Limit> 363 # <LimitExcept GET POST OPTIONS PROPFIND> 364 # Order deny,allow 365 # Deny from all 366 # </LimitExcept> 367 #</Directory> 368 369 <Directory /home/*/www> 370 AllowOverride All 371 Options All 372 Options Indexes MultiViews SymLinksIfOwnerMatch ExecCGI Includes 373 </Directory>

  • ユーザー毎のディレクトリでCGIを設置

    ユーザー毎のディレクトリでCGIを設置可能にしようとしているのですが、うまくいきません。 教えて下さい。 【環境】 Apache/2.0.40 Red Hat Linux 8.0 【httpd.confの設定抜粋】 DocumentRoot "/home/homepage/public_html" <Directory /home/homepage/public_html> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> <IfModule mod_userdir.c> UserDir public_html </IfModule> <Directory /home/*/public_html> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> #ScriptAlias /cgi-bin/ "/home/homepage/public_html/cgi-bin/" 【.htaccessの設定】 AddHandler cgi-script .cgi Options +ExecCGI 以上のような設定で #!/usr/bin/perl print "Content-type: text/html\n\n"; print "hello"; こんなCGIをつくって実行してみました。 /home/homepage/public_html/cgi-bin/においたものはうまくいくのですが /home/user/public_html/cgi-bin/においたものはエラーになってしまいます。 エラーの内容は↓のとおりです。 Server error! The server encountered an internal error and was unable to complete your request. Error message: Premature end of script headers: hello.cgi If you think this is a server error, please contact the webmaster Error 500 perlのパスは間違ってないし、パーミッションも755にしてあります。 どうすればいいのか分からず困っています。 どこを調べれみればいいのかだけでも教えていただけると助かります。 よろしくお願いします。

  • Apacheの.htaccessにおけるルート

    apacheの学習中です。 Apacheで、ユーザーディレクトリを有効にしました。 ユーザーディレクトリ内で、 <a href="/">トップページへ</a> とすると、きちんと各ユーザーディレクトリのトップページへいくことを確認しました。 しかし、.htaccess内で ErrorDocument 404 /error/file_not_found.html とし、エラードキュメントを変更しようとすると、エラーページが正しく表示されませんでした。ログを見ると、以下のようになっていました。 File does not exist: /var/www/error/file_not_found.html どうやら、htaccessにおいてのルートディレクトリ指定が、各ユーザー個別のルートディレクトリになっていないようです。htaccessの/を各ユーザーのルートディレクトリに指定するには、どのように設定すればよいでしょうか? 現在、ユーザーディレクトリは以下のように設定しています。すいません。学習中なので、設定におかしなところがあるかもしれません。 <Directory /home/*/public_html> AllowOverride FileInfo AuthConfig Indexes Limit Options MultiViews FollowSymLinks IncludesNoExec <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> <LimitExcept GET POST OPTIONS> Order deny,allow Deny from all </LimitExcept> </Directory> 原因が分かる方がいらっしゃれば、ご指摘くださると嬉しいです。 よろしくお願いいたします。