Forbidden

You don't have permission to access /cgi-bin/ on this server.


Apache/1.3.19 Server at localhost Port 80

ブラウザで見ようとすると上のようなエラーが表示されます。
htdocs内の初期のテストのindex.htmlは参照できます。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

単純にpermisson(権限) がないのではありませんか?



ログインユーザ(nobodyとか?)に対する
ディレクトリのアクセス権限を変更してみては?

ログインユーザはhttpd.conf(?)で設定していますよね?
違うかな??
    • good
    • 0
この回答へのお礼

User nobody
Group nobody
という所ですか?
ここはどう書き換えるべきか、悩んでいます。
意味としては、
「アクセスできるユーザとグループはありません」
という解釈でいいのでしょうか?

お礼日時:2001/06/07 20:02

「アクセスできるユーザとグループはありません」ではありません。


「アクセスしてくるユーザのユーザ名は nobodyさんであり、
 その nobodyさんのグループは nobodyグループである」
という設定になります。(きっと あってます)

さて本題ですが・・・
とりあえず /cgi-bin/ 中に 

#!/bin/sh
set -f
echo Content-type: text/plain
echo REMOTE_ADDR = $REMOTE_ADDR

これだけの cgiファイルを置いてみて
WEBブラウザと直接実行の2通り実行可能か確認してみてはいかがでしょう?
まずは簡単なものから!!ダメすかね??
    • good
    • 0
この回答へのお礼

susumuさん、 selenityさん、NINJA104さん
本当に回答ありがとうございました。
皆さんの回答を基に色々調べたところ
参照ができました。
ありがとうございました。

お礼日時:2001/06/19 23:48

もう1つ設定箇所を、、、


同じくhttpd.confの中ですが、

# To use CGI scripts:
#
#AddHandler cgi-script .cgi

というのがあるのですが、AddHandler行の
「#」は消しましたか?

P.S.
cgiスクリプトの中身の先頭行は
#!~(実行コマンド名)
を記述してますよね?

> You don't have permission
あとは、cgi-binディレクトリはnobodyユーザに
対して有効なパーミッションが与えられて
いますか?cgi-binディレクトリのパーミッション
は「drwxr-xr-x」になってますか?
(nobodyユーザで読み取り出来る必要があります)
    • good
    • 1

デフォルトのhttpd.confでは


<Directory "/usr/local/apache/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>

となっているので、/cgi-bin/ 以下のディレクトリ
内のファイル一覧は見れません。
ファイル名を直接指定すれば、実行できませんか?
ファイル名を直接指定しても実行できなければ
cgiファイルのパーミッションの問題です。
(実行可能属性を付けてあげましょう)

htdocs内は
Options Indexes FollowSymLinks MultiViews
なのでファイル一覧は見れます。
    • good
    • 0
この回答へのお礼

/cgi-bin/内のcgiプログラムを直接参照しようとしても
このエラーが出てしまいます。

パーミッションの問題は、
chmodコマンドで解消したと思います。

お礼日時:2001/06/07 20:00

配布バージョン1.3.19については自信が有りませんが、たぶん初期状態ではApacheの設定ファイルであるhttpd.conf内の/cgi-bin/についての定義は参照不可になっていると思います。

    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QCGIでソースがそのままでてしまうのですが・・・。

CGIでソースがそのまま表示されてしまうのですが、どうしてなのでしょうか?

先週からCGIやPerlを学び始めました。そこで簡単なものを試しに作ってみたのですが、入力したソースがそのまま表記されてしまいます。

ちなみに、こんなものです。

#! c:/perl64/bin/perl

print "Content-type: text/plain\n\n";
print "Hello Perl !";

どこをどう変えればいいのか、わからないので、質問してみました。

わかる方がいましたら、教えてください。

初心者なので、お手柔らかにお願いします。

.





この質問に補足する.

Aベストアンサー

CGIスクリプトのソースがそのまま出力されるのは、そのファイル/URIがCGIとして実行できていないためです。

httpd.confの<Directory>ディレクティブや<Location>ディレクティブなどの指定箇所が間違えているか、
ファイルの拡張子を間違えているか、
httpd.confを書き換えてからApacheをリスタートしていないか。。。


Forbiddenが出てきたら.cgiファイルに実行権限が無い。
Internal Server Errorが出てきたら、Perlがインストールされていないか.cgi拡張子とPerlが関連づけられていない。

ということが考えられます。

Qcgi-binにアクセスするとforbiddenになってします。

apache2.0.63をインストールし設定してもhttp://localhost/cgi-bin/
にアクセスするとforbidden、localhost/cgi-bin/index.cgiに
アクセスするとInternet Sever Errorと出てしまいます。
環境はwindowsvistaでcgi-binフォルダのパーミッションもプロパティ
でアクセス許可をフルコントロールにしたので問題ないと思います。
httpd.confはhttp://win.kororo.jp/archi/www/apache_fast.phpの
上から「CGI・SSIを使えるようにする」の
「AddHandler cgi-script .cgi //先頭の#を取り除く」までをそのまま真似しました。
それプラスDocumentRoot "パス"の下の<Directory "C:/apache2/htdocs">のパスをDocumentRootと同じパスに設定しました。
それとhttp://blog.goo.ne.jp/xmldtp/e/50e19ae5e407dcf822f40b472e4295e8
もすべて確認しましたが問題なかったです。
もし他に足りないことがあったら教えてください。
ちなみにapache2.0.63はリリースが1月20日とサイトに書いてあったのですが修正されて中身が変わってることもあるのでしょうか。
前は上記の設定だけで出来たのですが・・・

apache2.0.63をインストールし設定してもhttp://localhost/cgi-bin/
にアクセスするとforbidden、localhost/cgi-bin/index.cgiに
アクセスするとInternet Sever Errorと出てしまいます。
環境はwindowsvistaでcgi-binフォルダのパーミッションもプロパティ
でアクセス許可をフルコントロールにしたので問題ないと思います。
httpd.confはhttp://win.kororo.jp/archi/www/apache_fast.phpの
上から「CGI・SSIを使えるようにする」の
「AddHandler cgi-script .cgi //先頭の#を取り除く」までをそのまま真似...続きを読む

Aベストアンサー

動く筈のCGIが動かない件、本当にスクリプトは大丈夫ですか? perl -wc は、スクリプトの 1行目の妥当性もチェックしてくれますか? これは、Perl言語のシンタックスの枠外です。 ご自分の環境に合った内容が記述されていますか?


あるいは、suexec 関連は疑ってみましたか?


もしも、Windows版Apache と Cygwin版Perl の組合せだったりすると、苦労も多いでしょう。


一般に、インターネットから取得した情報やコード類が自分の環境にドンピシャリであることはそんなに多くは無いですよ。

Q「Forbidden」が表示されWebページが見れない

 あるページを開こうとすると
「Forbidden
You don't have permission to access /***/ on this server.

Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.」
(/***/は任意の名前)
が表示され閲覧できません。相手側に問題があると思うのですが、このメッセージは何を意味するのでしょうか?

Aベストアンサー

こんばんわ。

403エラーは閲覧者にアクセス権が無いことを示します。

>相手側に問題があると思うのですが
確かに相手側の問題(ASPサーバの設定ミス等)の可能性もありますが
わざと403が出るよう設定している可能性もあります。
そういったページは、一般の訪問者に見られないように
パスワードを掛けているページだったり、
サーバの負荷低減の為に特定の操作を禁止していたりします。

参考URLにサーバエラーについてが記述されていますので
ご興味があれば見てみると良いでしょう。

参考URL:http://human-dust.kdn.gr.jp/doujin/net/errormsg.html

Qapacheユーザの実行権限設定はどうすれば良い?

■環境
・Cent OS

■状況
・所有者hogeのディレクトリxに対して、スクリプト経由(apacheユーザ権限)でchmodしようとすると、エラーになります
・スクリプト経由(apacheユーザ権限)でディレクトリ作成しようとしても、エラーになります

■質問
・どうすれば良いでしょうか?
・所有者hogeのグループにapacheユーザを入れたら効果あるでしょうか?

・ディレクトリ所有者がhogeであることが問題? apache所有にした方が良い?
・それとも、スクリプト実行を、apacheユーザ権限ではなく、所有者hogeにした方が良い? どうやって?

・そもそもapacheユーザ権限は、一般的にどう設定するものなのでしょうか? rootみたいに最強にする?

Aベストアンサー

> 所有者hogeのグループにapacheユーザを入れたら効果あるでしょうか?

基本的にはそれでOKですが、それだけではapacheユーザが作成した
ファイルをhogeユーザが変更できなくなってしまうかもしれません。

user=hoge,group=hoge
user=apache,group=apache,groups=hoge

groupは一次グループ、groups2は二次グループです。umask002 (新
規作成されたファイルのパーミッションが775 ) に設定されている
とします。

hogeユーザが作成したファイルはhoge/hoge なので、hogeグループ
に属するapacheユーザは編集可能です。しかし、apacheユーザが新
規作成したファイルはapache/apache になるので、apacheグループ
に属さないhogeユーザは編集できません。

そこで、ディレクトリをhogeユーザで作成し、ディレクトリにsgid
ビットを立てます。

$ chmod 2775 dir
$ ls -l dir
drwxrwsr-x 2 hoge hoge 4096 4月 7 13:35 dir

これで、apacheユーザがdir上に作成したファイルはapache/apache
ではなく、apache/hoge になるので、hogeユーザも編集できるよう
になります。

> 所有者hogeのグループにapacheユーザを入れたら効果あるでしょうか?

基本的にはそれでOKですが、それだけではapacheユーザが作成した
ファイルをhogeユーザが変更できなくなってしまうかもしれません。

user=hoge,group=hoge
user=apache,group=apache,groups=hoge

groupは一次グループ、groups2は二次グループです。umask002 (新
規作成されたファイルのパーミッションが775 ) に設定されている
とします。

hogeユーザが作成したファイルはhoge/hoge なので、hogeグループ
に属するapacheユーザは編集可能...続きを読む

Qポートの80と443

こちらのサービス(https://secure.logmein.com/)を利用すると、インターネットを見られるサーバーのポートの80と443が空いていればルータやファイアウォールに特段の設定なく外部からサーバーを操作できるそうですが、逆にサーバーのポートの80や443を空けることには何か危険性があるのでしょうか。

Aベストアンサー

ポート80は一般的なHTTP、ポート443はHTTPSです。
この2つのポートがあいていなければインターネット接続(WEBブラウジング)は出来ません。
ですから、ほとんどのファイアウォールでこのポートは開いています。(インターネット接続を制限している社内LANでは当然閉じていますが)

ちなみに、よく使うポートとしてはFTPで20、21、SMTP(送信メール)で25、受信メールPOP3で110あたりです。セキュリティポリシー上、この辺は制限される事も多いですが、HTTP 80、HTTPS(暗号化用)443は通常閉じません。


危険性?
WEBプロトコルを使ってFTP的なファイル転送(WebDAV)やVPN等も出来るようになっています。当然そこにはある種の危険はつきものですが、WEBブラウジングに伴う危険と大きく変わりません。ウィルス等に感染していればこの2つのポートだけでも相当危険でしょうね。

参考まで。

QCGI実行環境下の.jsや.cssが動きません

環境
OS:RedhatLinux ES3
WevServer:Apache/2.0.54
Perl 5.8.0

CGIを設置しているディレクトリのなかに、JapaScriptを書いている
xxx.jsとスタイルを定義しているxxx.cssを置いているのですが、
CGIを実行すると、Apacheのエラーログの中に

パーミッションが755だと
(8)Exec format error: exec of '/hoge/xxx.css' failed,
(8)Exec format error: exec of '/hoge/xxx.js' failed,
パーミッションを666すると
(13)Permission denied: exec of '/hoge/xxx.css' failed,
(13)Permission denied: exec of '/hoge/xxx.js' failed,

が出力されてしまいます。
もちろん、JavaScriptのエラーも出てしまいます。

.jsや.cssを正常に読み取らせるにはどのようにhttpd.confを
設定すればよいのでしょうか?

※ちなみに、CGIの実行を許可(ScriptAlias)していない
ディレクトリでは.jsや.cssは正常に動いています。

環境
OS:RedhatLinux ES3
WevServer:Apache/2.0.54
Perl 5.8.0

CGIを設置しているディレクトリのなかに、JapaScriptを書いている
xxx.jsとスタイルを定義しているxxx.cssを置いているのですが、
CGIを実行すると、Apacheのエラーログの中に

パーミッションが755だと
(8)Exec format error: exec of '/hoge/xxx.css' failed,
(8)Exec format error: exec of '/hoge/xxx.js' failed,
パーミッションを666すると
(13)Permission denied: exec of '/hoge/xxx.css' failed,
(13)Permission denied:...続きを読む

Aベストアンサー

ScriptAlias で指定された場所においては、Apache は全てのファイルを CGI スクリプトとみなしてしまいます。

なので、拡張子が .cgi、.pl のファイルだけ CGI とみなして欲しいのであれば、CGI スクリプト以外のファイルを別のディレクトリに置くか、以下のように設定してあげる必要があります。

Alias xxx yyy

<Directory yyy>
AddHandler cgi-script .cgi .pl
Options ExecCGI
</Directory>

Q起動しているサービスを確認するコマンド

初歩的な質問で恐縮ですが、ご教示いただけますと幸いです。

起動しているサービスを確認するために以下の2つのコマンドを打ってみるのですが、結果(出て来るサービス名)が違います。
このコマンドの違いについてご教示いただけますでしょうか。

(1)service --status-all
(2)chkconfig --list

Aベストアンサー

(1)service --status-all

サービスの現在のステータスを調べるコマンド

(2)chkconfig --list

OSのブート時に自動起動するサービスを調べるコマンド

違いが出るのは、
・ブート後に手動あるいは他のコマンドから起動したサービス
・ブート後に手動あるいは他のコマンドから、あるいはエラーで停止したサービス
・ブート後に実行はされるがすぐに停止して常駐しないサービス (ntpdate とか)

あるいは、(1)ではサービス名が表示されない物もあるので、どのサービスがどんなステータス出力をするのか知っておく必要もありますね。(service network statusとか)

QForbiddenってどういう意味?

昨日まであったサイトなのにそのサイトをひらこうとするとForbiddenという文字が・・・これはどういう意味なんでしょうか?そのサイトは閉鎖されたという意味なのでしょうか?

Aベストアンサー

Forbiddenは、英語で禁止って意味ですから、

その時は繋がったが、登録されていないとか、ある限定の人しか接続できないのではないでしょうか?

あと、サーバーメンテナンスとかサイトが開かれていない時にも出ることはありますが・・

Qhtmlファイルが表示できません

初歩的なことかもしれませんが教えてください。
Webサーバーをたてて、mrtgディレクトリ以下ののhtmlファイルを見ようとしてhttp://192.168.1.3/mrtg/*のファイルにアクセスするのですが、forbiddenといわれてしまいます。
You don't have permission to access /mrtg/index.html on this server.
Apache/2.0.52 (CentOS) Server at 192.168.1.3 Port 80
You don't have permission to access /mrtg/127.0.0.1_2.html on this server.
/var/www/html/mrtg以下のパーミッションはすべて777で
所有者は一般ユーザーに変えました。
でもコピーをして/var/www/html/index.htmlとかにもってきてhttp://192.168.1.3/index.htmlでアクセスすると表示されます。
httpd.confでは特に制限はかけていません。
httpdは起動しています。
あとどのあたりを疑えばよいでしょうか?

初歩的なことかもしれませんが教えてください。
Webサーバーをたてて、mrtgディレクトリ以下ののhtmlファイルを見ようとしてhttp://192.168.1.3/mrtg/*のファイルにアクセスするのですが、forbiddenといわれてしまいます。
You don't have permission to access /mrtg/index.html on this server.
Apache/2.0.52 (CentOS) Server at 192.168.1.3 Port 80
You don't have permission to access /mrtg/127.0.0.1_2.html on this server.
/var/www/html/mrtg以下のパーミッションはすべて777で
所有者は一般ユ...続きを読む

Aベストアンサー

あー なんか判ったぞ

>You don't have permission to access /mrtg/127.0.0.1_2.html on this server

ここの
>/mrtg/127.0.0.1_2.html
これに注目

mrtg ないし どこかの階層の index.html がrewrite設定されてない?
rewrite か reverseProxy の設定を確認してごらん(httpd.conf か .htaccess かは判らないけど)
あとはNo3の言うaliasによって↑のように書き換わってる可能性

QHTML上(javascript)からCGIを実行する方法

javascriptから外部実行ファイル(javascriptファイルではなくperlなどのCGI)
を実行する方法を探しています。
下記のようにindex.htmとtest.cgiファイルを用意して、index.htm内の
javascriptから外部cgiを実行させ、cgiの結果(test.cgiでは単に
『test』と表示するのみ)を表示したいと考えています。

利用増ですが、cgiやssiが使用できないサーバにindex.htmを置いて、
cgiが使用できるサーバ上のcgi結果を取得したいものです。
通常のcgiのように、1ページでcgi結果を表示するものではなく、
HTMLファイルの一部にcgi処理結果を表示させたいものです。

そもそも、SSIを使用しなければ下記のようなHTML内にcgiなどの
実行結果を表示する事は出来ないのでしょうか。
よろしくお願い致します。

※下例のプログラムではcgi結果は表示されませんでした・・・。

---<index.htm>----------------------------------------
<HTML>
<BODY>
<SCRIPT language="Javascript" src="http://xxx.xxx.xxx.xxx/test.cgi"></SCRIPT>
</BODY>
</HTML>

---<test.cgi>----------------------------------------
#!/usr/bin/perl

print "test"

javascriptから外部実行ファイル(javascriptファイルではなくperlなどのCGI)
を実行する方法を探しています。
下記のようにindex.htmとtest.cgiファイルを用意して、index.htm内の
javascriptから外部cgiを実行させ、cgiの結果(test.cgiでは単に
『test』と表示するのみ)を表示したいと考えています。

利用増ですが、cgiやssiが使用できないサーバにindex.htmを置いて、
cgiが使用できるサーバ上のcgi結果を取得したいものです。
通常のcgiのように、1ページでcgi結果を表示するものではなく、
HTML...続きを読む

Aベストアンサー

「Google AdSense」のjavascriptでは#1さんの回答にもありますがiframeを使用するような仕掛けになっているようです。
・javascriptでiframeを展開。
・iframeのsrcでcgiを指定。

>外部cgiでjavascriptを生成する仕組みを作り、その生成されたjavascriptを参照するという間接的な仕組みを設ければ可能になる
そういう仕組みも可能です。
また、直接的に<script type="text/javascript" src="xxxx.cgi"></script>
こういう書き方も可能です。
※xxxx.cgiでは処理結果をjavascriptのコードとして
print "Content-Type: application/x-javascript\n\n";
print "document.write('xxxx');";
みたいにして吐き出す必要があります。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング