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

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

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

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

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

Webサーバー

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

Q&A

解決済

3回答

4365閲覧

WebDAVに接続すると403エラーとなる

nic_

総合スコア30

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

Apache

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

Webサーバー

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

0グッド

0クリップ

投稿2019/02/07 02:42

編集2019/02/07 03:27

前提・実現したいこと

CentOS6 - apache2.2環境に、WebDAV環境を作成しています。

WebDAV接続ソフト(CarotDAV)でアクセスした際、403 Forbiddenエラーが発生し、改善の糸口が見つけられずにおります。
エラーを取り除くため、お気づきの点がございましたらご教示頂ければ幸甚に存じます。

発生している問題・エラーメッセージ

windows10の作業端末から、WebDAV接続ソフト(CarotDAV)でhttpアクセスすると、403 Forbiddenエラーが発生します。
(chromeでも同様です)

###apacheのエラーログ

[Wed Feb 06 21:10:12 2019] [error] [client 10.10.10.100] client denied by server configuration: /www/foo.jp/webdav/daily

クライアントがサーバー構成によって拒否されました

該当のソースコード

###ディレクトリの定義

ディレクトリオーナー権限
/www/foo.jp/webdav/usr1775
/www/foo.jp/webdav/daily/usr1775
/www/foo.jp/webdav/ecDaily/usr1775

###httpd-vhosts.conf(抜粋)

<VirtualHost *:80> ## 同居するウェブシステム用の設定。あまり触りたくない場所 ここから → DocumentRoot /www/foo.jp/htdocs ServerName 10.10.10.100 ErrorLog logs/error_foo.jp_webdav CustomLog logs/access_foo.jp_webdav customlog KeepAlive On <Directory /www/foo.jp/htdocs> AllowOverride All Options FollowSymLinks Order Allow,Deny Allow from env=usr1 Allow from env=usr2 Allow from env=seg1 Allow from env=local </Directory> ## ← ここまで ################################################# # CarotDAVでアクセスし、ファイルを格納したいディレクトリ Alias /webdav/daily /www/foo.jp/webdav/daily Alias /webdav/ecDaily /www/foo.jp/webdav/ecDaily <Directory /www/foo.jp/webdav> # 参照先ディレクトリ Dav On # WEBDAVを使用する AllowOverride All # すべての設定の変更を有効にします。 Options FollowSymLinks # シンボリックリンクファイルを認識させる Satisfy All # ホストによる制御とユーザ認証による制御を両方認める Order Allow,Deny # 全てのホストからのアクセスを拒否する Allow from env=usr1 #  但し、usr1からのアクセスなら許可する Allow from env=usr2 #  但し、usr2からのアクセスなら許可する Allow from env=seg1 #  但し、seg1からのアクセスなら許可する AuthType Digest # 認証の仕組みを設定する AuthName "DAV-ul" # パスワードファイルにある領域名 AuthUserFile /www/foo.jp/.htdigest # パスワードファイルの格納場所 <LimitExcept GET OPTIONS> # 指定されたもの以外の HTTP メソッドにアクセス制御を制限する require valid-user # ユーザーが誰であろうと、入力したIDとパスワードが合っていればアクセスできる </LimitExcept> # </Directory> # ## 同居するウェブシステム用の設定。あまり触りたくない場所 ここから → # Tomcatプロキシ判定 RewriteEngine ON RewriteCond /www/foo.jp/htdocs%{REQUEST_URI} -d RewriteCond /www/foo.jp/htdocs%{REQUEST_URI}/index.html -f RewriteRule ^(.*)$ - [L] RewriteCond /www/foo.jp/htdocs%{REQUEST_URI} -f RewriteRule ^(.*)$ - [L] RewriteCond %{REQUEST_URI} !^/webdav/ RewriteRule ^/(.*)$ ajp://localhost:9009/bo/$1 [P,L] # プロキシ関連設定 ProxyPassReverse / /bo/ ProxyPassReverseCookiePath /bo/ / ProxyPassReverse / http://10.10.10.100/bo/ ## ← ここまで ################################################# <Location /> Order Allow,Deny Allow from env=usr1 Allow from env=usr2 Allow from env=seg1 Allow from env=local </Location> </VirtualHost>

###.htdigest

usr1:DAV-ul:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

###WebDAV接続ソフト(CarotDAV)の設定値

項目備考
URIhttp://10.10.10.100/webdav/daily接続対象ディレクトリ
usernameusr1サーバーにも存在するユーザ
passwordyyyyyyyyusr1がサーバにログインする際のパスワード

その他、welcome.confは0byteです。

試したこと

2.5日悩み、トライアンドエラーを繰り返した内容を下記に挙げます。

  • WebDAV接続ソフトでの接続ユーザーをrootで接続

⇒403エラーが出る状況や、エラー内容はusr1ユーザーでアクセスした際と同様

  • ディレクトリのアクセス権確認及び見直し

⇒問題は無いと思われます

  • <Directory>内の設定値を解読

  • ファイアウォールやポートフォワード設定の確認

⇒結果、問題ありません

  • vhosts.conf内の下部にある<Location>の設定を、以下のものに差し替え

⇒うまくいかなかったので、検証後に削除

ProxyPass ajp://localhost:9009/ Order allow,deny Allow from all
  • vhosts.confの編集都度、apache-tomcatを再起動

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

WebDAVに接続できるのは、VPN内からの接続に限定しています。

この環境には、WebDAV環境の他、3つのウェブサイトのアプリサーバー環境を構築しており
それぞれバーチャルホストでアクセスを振り分けています。

使用しているソフトversion
CentOS6 6.7
Apache2.2.15
Tomcat8.0.32
CarotDAV1.15.5

何卒、よろしくお願いいたします。

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

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

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

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

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

guest

回答3

0

最近、WebDAV 使っていないので、あまり覚えていませんが...

httpd の実行ユーザーは、apache でしょうか?

apache ユーザーで、 /www/foo.jp/webdav にアクセス(読み込み・書き込みの両方)できますか?

Apache モジュール mod_dav より

mod_dav がファイルを操作できるようにするためには、 管理下のディレクトリとファイルとに Apache が実行されている User と Group で書き込み可能である必要があります。 新しく作成されるファイルもこの User と Group に所有される ことになります。この理由から、そのアカウントへのアクセスを制御することは 重要です。DAV リポジトリは Apache 専用のものだとみなされています。 Apache 以外の方法でファイルを修正すること (例えば FTP やファイルシステム 用のツールなどを使って) は許可されていません。

投稿2019/02/07 05:59

編集2019/02/07 06:41
CHERRY

総合スコア25171

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

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

nic_

2019/02/07 06:38

CHERRYさん、アドバイス頂きありがとうございます! 2件の確認が済みましたので、取り急ぎご報告いたします。 > httpd の実行ユーザーは、apache でしょうか? いいえ。httpdの起動はrootユーザーで行いました。 apacheの方が良いのでしょうか? > apache ユーザーで、 /www/foo.jp/webdav にアクセスできますか? はい。できました。 詳細は下記です。 ───────────────────────── rootユーザーでログインしていたので、apacheユーザー にスイッチします。 # su apache This account is currently not available. apacheユーザーは現在ご利用頂けないということで ユーザーを確認してみますと # grep apache /etc/passwd apache:x:48:48:Apache:/var/www:/sbin/nologin nologinということで、使えないようになっていました。 なので、こうしてログインして # su -s /bin/bash apache webdavの接続対象ディレクトリを参照しました。 # ls /www/foo.jp/webdav/ 結果、/webdav配下のファイルを見ることができました。 ───────────────────────── 何か、怪しいポイント等がございましたら、ご教示くださいませ。 よろしくお願いいたします。
CHERRY

2019/02/07 06:45 編集

> mod_dav がファイルを操作できるようにするためには、 管理下のディレクトリとファイルとに Apache が実行されている User と Group で書き込み可能である必要があります。 とドキュメントにあるように 書き込みできる必要がありますが、書き込みできますか?
nic_

2019/02/07 07:16

CHERRYさん、ご説明ありがとうございます。 また、貴重なご意見を見落としてしまい、申し訳ございません。 > mod_dav がファイルを操作できるようにするためには、 管理下のディレクトリとファイルとに Apache が実行されている User と Group で書き込み可能である必要があります。 只今の状況だと、Apache を実行した User と Group はrootとなっております。 apacheユーザーで立ち上げ直した方が良いでしょうか? > とドキュメントにあるように 書き込みできる必要がありますが、書き込みできますか? 接続対象ディレクトリの/webdav配下で、ファイルの書き込みを実施しました。  ⇒root、usr1、apacheユーザーでtest.txtをviで作成。 いずれも成功。 > 新しく作成されるファイルもこの User と Group に所有される ことになります。 なので今の条件であれば、ファイルのオーナーはusr1ではなくrootとなるのですね。 > この理由から、そのアカウントへのアクセスを制御することは 重要です。 > DAV リポジトリは Apache 専用のものだとみなされています。 Apache 以外の方法でファイルを修正すること (例えば FTP やファイルシステム 用のツールなどを使って) は許可されていません。 とりあえず、ディレクトリへのアクセス権を777にし、usr1ユーザーでログインを試しましたが、403エラーとなってしまいました。。 お手数をおかけしますが、これらのやり方に誤りがあれば、ご指摘頂けると助かります。 何卒よろしくお願いいたします。
guest

0

参照が禁止されているという事なので、外しているかもしれませんが。

<Directory /www/foo.jp/webdav> # 参照先ディレクトリ Dav On # WEBDAVを使用する Options Indexes # ←これを追加

以下参考
WebDAV サーバ管理
apacheでWebDAV(その3)
apacheでWebDAV構築
[Apache] WebDAVの設定

投稿2019/02/07 03:02

編集2019/02/07 03:05
sazi

総合スコア25173

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

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

nic_

2019/02/07 03:23 編集

saziさん、ご回答ありがとうございます! ご案内通り、Optionsの1行を追加し、再起動⇒アクセスしてみました。 結果、403エラーとなってしまいました。。 詳細はこちらです。 **accessログ** ───────────────────────── "PROPFIND /webdav/daily HTTP/1.1" 403 224 "-" "Rei.Fs.WebDAV/1.15.5" 10.10.10.100 80 1028 ───────────────────────── **errorログ** ───────────────────────── client denied by server configuration: /www/foo.jp/webdav/daily ───────────────────────── **WebDAV接続ソフト(CarotDAV)** ───────────────────────── Rei.Fs.SimpleWebException: リモート サーバーがエラーを返しました: (403) 使用不可能 場所 Rei.Fs.Webdav.WebdavFs.GetResponse(HttpWebRequest request, Boolean notreqstream) 場所 Rei.Fs.Webdav.WebdavFs.InnerGetInfo(Uri target, DepthType depth) 場所 Rei.Fs.Webdav.WebdavFs.GetInfoAndEntries(Uri targeturi) 場所 CarotDAV.CacheManager.GetInfoAndEntries(FsBase fs, Uri targeturi, Boolean enablecache) 場所 CarotDAV.MainForm.Fs_GetInfoAndInnerEntries(Uri uri, ResourceId id, ResourceId parentid, Boolean enablecache) ───────────────────────── 他に、私が提供できる情報が必要であれば仰ってください。
sazi

2019/02/07 04:10

では、「Options Indexes FollowSymLinks」ではどうでしょう? 正直詳しくは無いので、お役には立てないと思いますが。
nic_

2019/02/07 05:53

saziさん、度々ありがとうございます! シンボリックリンクを有効にする設定を、先程のものに繋げて設定するということですね。 早速試してみたところ、状況は変わらず403Forbiddenエラーとなりました。。。 残念です。 ちなみに、ご案内頂いた行の2つ下あたりにもシンボリックリンクの有効無効を設定する記述がありますが、 こちらをコメントアウトにしても、同様の結果となりました。 あと、ご案内頂いた参考ページも一通り拝見させて頂きました。 私では見つけられなかったサイトばかりで、大変助かります。 他に案などがございましたら、ぜひお願いいたします。
nic_

2019/02/07 06:20

saziさん、情報提供ありがとうございました! 大変助かります。 下記の確認を、usr1ユーザーで実施し、アクセスできることを確認しました。 > 例えばサーバ実行ユーザがwwwでWebDAV用ディレクトリが/home/public/webdavだとすると、 > webdavディレクトリだけでなくhomeやpublicにもwwwユーザがアクセスできなければならない。 また、Optionsの設定を All にしてみましたが、結果は変わらず403エラーとなります。
guest

0

自己解決

自己解決しました!

403エラーの原因は、ネットワーク設定によるものでした。
問題ないと思い込んでいた私のミスでした。。

あとせっかくついでなので、こちらの設定もconfファイルに追加してみました。
DavDepthInfinity on
DAVMinTimeout 600

あと、ユーザー登録の手順にもミスがあったので、ルールに則って

# htdigest -c /data/www/foo.jp/.htdigest DAV-ul usr1 new password:yyyyyyyy new password:yyyyyyyy

でdigestパスワードを作り直しました。

saziさん、CHERRYさん、一緒に考えてくださり、本当にありがとうございました。

投稿2019/02/07 10:54

nic_

総合スコア30

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問