質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Q&A

解決済

1回答

4005閲覧

ApacheのaliasでError 403が取れません!

tmakita

総合スコア69

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

0グッド

0クリップ

投稿2021/07/21 15:29

編集2021/07/23 03:40

大変恥ずかしいのですがApacheのhttpd.confでaliasを設定しているのですがいくらやってもError 403になってしまいます.すみませんがチェックポイントを教えていただきたくお願いします.

環境

Ubuntu 20.0.4
XAMPP for Linux 7.4.19

http://localhost は問題なく表示されます.
外部から http://192.168.10.100/ でアクセスしてもOKです.
両方ともXAMPPのタイトルが表示されます.

Welcome to XAMPP for Linux 7.4.19

httpd.confに追加した内容

XAMPPなので、/opt/lampp/etc/httpd.conf になります.

追加内容は以下のとおりです.直接最後に追加しました.

<IfModule alias_module> Alias /ditadoc /home/tmakita/dita/Phase2TestData/out/root <Directory "/home/tmakita/dita/Phase2TestData/out/root"> Options Indexes FollowSymLinks ExecCGI Includes AllowOverride All Require all granted </Directory> </IfModule>

もちろん最初の方で

LoadModule alias_module modules/mod_alias.so

が入っています.

現象

おなじみのとおりで

http://localhost/ditadoc/test.php

とやると、該当のフォルダにtest.phpはあるんですが、以下のとおりです.

Access forbidden!
要求されたオブジェクトへのアクセス権がありません。 読み込みが許可されていないか、 サーバが読み込みに失敗したかでしょう。
サーバーの障害と思われる場合は、ウェブ管理者までご連絡ください。
Error 403
localhost
Apache/2.4.47 (Unix) OpenSSL/1.1.1k PHP/7.4.19 mod_perl/2.0.11 Perl/v5.32.1

フォルダとファイルの権限

test.phpは例のphpinfo()で、権限は次のとおりです.

php

1<?php 2phpinfo() 3?>
tmakita@Ubuntu-tmakita:~/dita/Phase2TestData/out/root$ ls -l test.php -rw-r--r-x 1 tmakita tmakita 20 7月 21 20:33 test.php

この階層に至るフォルダにはすべて「その他のユーザー」の読み取り・実行権限があります.

tmakita@Ubuntu-tmakita:~/dita/Phase2TestData/out$ ls -l 合計 4 drwx---r-x 4 tmakita tmakita 4096 7月 21 20:54 root

もちろん設定修正の都度、Apacheは立ち上げ直しています.

tmakita@Ubuntu-tmakita:~$ sudo /opt/lampp/lampp stop tmakita@Ubuntu-tmakita:~$ sudo /opt/lampp/lampp start

その他の情報

SELinuxは入っておりません.

tmakita@Ubuntu-tmakita:~$ getenforece コマンド 'getenforece' が見つかりません。もしかして: command 'getenforce' from deb selinux-utils (3.0-1build2) 次を試してみてください: sudo apt install <deb name>

初心者の質問ですが、よろしくお願いいたします.

追記

以下質問への追記依頼で行った結果です.そのまま載せさせていただきます.

Apacheの実行ユーザーになった状態で、該当ファイルを読めるか?

Apacheの実行ユーザーは、/opt/lampp/etc/httpd.confを見ると、daemonです.

<IfModule unixd_module> # # If you wish httpd to run as a different user or group, you must run # httpd as root initially and it will switch. # # User/Group: The name (or #number) of the user/group to run httpd as. # It is usually good practice to create a dedicated user and group for # running httpd, as with most system services. # User daemon Group daemon </IfModule>

vipwでdaemonのログインシェルを/sbin/nologinから/bin/bashに書き換えます.

以下でtest.phpをdaemonがアクセスできるか調べます.「許可がありません」になってしまいます.

tmakita@Ubuntu-tmakita:~$ su パスワード: root@Ubuntu-tmakita:/home/tmakita# su -c "cat /home/tmakita/dita/Phase2TestData/out/root/test.php" daemon cat: /home/tmakita/dita/Phase2TestData/out/root/test.php: 許可がありません root@Ubuntu-tmakita:/home/tmakita#

フォルダ階層のアクセス権限を調べます.

※ 関係ないフォルダ、ファイルは省略しています.

tmakita@Ubuntu-tmakita:~$ ls -l /home 合計 4 drwxr-xr-x 35 tmakita tmakita 4096 7月 21 20:36 tmakita tmakita@Ubuntu-tmakita:~$ ls -l /home/tmakita 合計 72 drwxrwxr-x 3 tmakita tmakita 4096 7月 21 22:12 dita tmakita@Ubuntu-tmakita:~$ ls -l /home/tmakita/dita 合計 4 drwxrwxr-x 11 tmakita tmakita 4096 7月 16 14:00 Phase2TestData tmakita@Ubuntu-tmakita:~$ ls -l /home/tmakita/dita/Phase2TestData 合計 36 drwx---r-- 3 tmakita tmakita 4096 7月 16 13:33 out tmakita@Ubuntu-tmakita:~$ ls -l /home/tmakita/dita/Phase2TestData/out 合計 4 drwx---r-x 4 tmakita tmakita 4096 7月 21 20:54 root tmakita@Ubuntu-tmakita:~$ ls -l /home/tmakita/dita/Phase2TestData/out/root 合計 12 -rw-r--r-x 1 tmakita tmakita 20 7月 21 20:33 test.php tmakita@Ubuntu-tmakita:~$

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2021/07/22 03:24

su でApacheの実行ユーザーになった状態で、該当ファイルを読めますか?
tmakita

2021/07/22 04:32

Apacheの実行ユーザーはhttpd.confを調べるとデフォルトのdaemonです.suでdaemonになってtest.phpをcatしようとしましたが、daemonのパスワードがわからず認証失敗になってしまいます.cat /etc/passwdではdaemonは"x"になっていて、このままではパスワードがわかりません.何か手段はありますでしょうか?
otn

2021/07/22 04:49

rootからsuするときはパスワード不要です。 rootになって、vipw コマンドで一時的にdaemonのログインシェルを/sbin/nologinから /bin/bash などに書き換えれば、su daemon 出来ると思います。
tmakita

2021/07/22 05:30

vipwにてdaemon:x:1:1:daemon:/usr/sbin:/bin/bashに書き換えたのですが、su daemonで同様にパスワードを求められ、結局認証失敗になってしまいます.何かやり方まずいでしょうか??
otn

2021/07/22 09:54

rootなのに、su でパスワードを求められるというのは、/etc/pam.d/su に auth sufficient pam_rootok.so が無いのだと思います。一時的に追加するか、passwd daemon でパスワードを付けるか。
tmakita

2021/07/22 12:50

私の方がフォローできていないようです.daemonに「なって」該当ファイルが「読めるか」は、①suでrootになる.②su -c "cat /home/~/test.php" daemon のコマンドを入力 でよろしいでしょうか?これで「cat: /home/tmakita/dita/Phase2TestData/out/root/test.php: 許可がありません」になってしまいます!
otn

2021/07/22 15:18

はい。その手順でもOKです。 ファイル名に間違いが無ければ、アクセス権が無いと言うことなので、Apache以前の問題ですね。 ls /home ls /home/tmakita と順番に確認しましょう。
tmakita

2021/07/23 03:38

失礼いたしました(!!).ではありのままを追記いたしますので大変お手数ですがそれに対してご回答ください.
otn

2021/07/23 03:42 編集

上記コメントの「と順番に確認しましょう。」というのは、「Apacheユーザーになった状態で」ということです。文脈から明かと思いますが、念のため書いておきます。
tmakita

2021/07/23 03:45

ユーザーtmakitaでls -lを/homeから目的のファイルまで順にやった結果を追記してしまいましたが、それではまずいでしょうか??
otn

2021/07/23 04:33

本題から外れますが、su -s /bin/bash daemon と -s を指定すれば/etc/passwdの書き換えは不要でした。いままで気づかなかった。
otn

2021/07/23 04:35

> それではまずいでしょうか?? 無意味ですね。
tmakita

2021/07/23 11:12

いえ... 追記した結果にございますが、上位階層のフォルダ1か所で「その他のユーザー」の実行権限が欠落しておりました.原因はこれでした. この追記結果に回答いただければアンサーとしてacceptさせていただきたいと思います.
otn

2021/07/23 11:30

最初に、 > この階層に至るフォルダにはすべて「その他のユーザー」の読み取り・実行権限があります. と書いてあったので、それを信用して追記は見てませんでした。 drwx---r-- これでは下位ディレクトリは読めませんね。
tmakita

2021/07/23 11:36

ご指摘のとおりです.失礼いたしました.
guest

回答1

0

自己解決

解決いたしました.

まず、質問中に以下を前提条件で書きましたが誤りでした.

この階層に至るフォルダにはすべて「その他のユーザー」の読み取り・実行権限があります.

「フォルダ階層のアクセス権限を調べます」の結果にあるとおり、途中のoutフォルダの権限が以下のようになっており、「その他のユーザー」の実行権限が欠落していました.(Oh, my god! 確認もれです)

drwx---r--

この権限を追加して問題なくWebページは表示されるようになりました.

初心者の質問に粘り強くお付き合いいただいたotnさんに感謝いたします.

大変失礼いたしました.

投稿2021/07/24 11:41

tmakita

総合スコア69

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問