web-dev-qa-db-ja.com

CentOS上のWebDAV-アップロードしようとすると403エラーが発生する

ディレクトリでWebDavを許可するようにApache2を構成しました(CentOS 5/Plesk 8.6):

  • WebDavはhttpd.confで有効になっています
  • / var/lib/dav/lockdbはApacheで書き込み可能
  • 私のターゲットディレクトリはchmod 777です
  • 私のターゲットディレクトリはchowned Apache:psaclnです
  • 基本認証の使用(Pleskインターフェースによるセットアップ)

私のvhost.confには:

 <Directory /var/www/vhosts/domain.com/httpdocs/target_dir>
 Dav On 
 AllowOverride none 
 Order allow、deny 
すべてから許可
 </ Directory> 

認証を使用してディレクトリに接続し、そこからファイルをダウンロードできます。しかし、私はディレクトリに書き込むことができません。ディレクトリをアップロードまたは作成しようとすると、403エラーが発生します。

誰かヒントはありますか?

前もって感謝します -

更新-6/5以下のコメントを使用して、問題を.htpasswdで保護されたディレクトリとのある種の競合であると特定しました。保護されていないディレクトリを作成して、WebDAVアップロードを正常に有効にすることができます。しかし、ディレクトリで基本認証を有効にすると、すべてが南向きになります。読むことはできますが、アップロードできなくなりました。

これは私のvhost.confです:

 <Directory/var/www/vhosts/domain.com/subdomains/subdomain/httpdocs/>
AuthUserFile/var/www/.htpasswd
AuthName "Login" 
 AuthType Basic 
有効なユーザーが必要
 
 DAV on 
 AllowOverride none 
 <Limit PUT POST= DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK> 
有効なユーザーが必要
 </ Limit> 
 </ Directory> 
 

更新6/6

最小限の労力でWebDAVを別のドメインで動作させることができました。 2つのドメインの唯一の違いは、書き込みアクセスの許可を拒否するドメインには、DocumentRootディレクティブがあることです。

 DocumentRoot /var/www/vhosts/domain.com/httpdocs/app/webroot

これはいくつかの問題を引き起こしている可能性がありますか?

4
Darren Newton

私は最近、Fedora10システムで同じ問題に苦しんでいました。私の場合、犯人は私がApacheで行っていた奇妙なリダイレクトでした。具体的には、.htaccessに次のリダイレクトロジックが含まれるコンテンツ管理システム(正確にはDrupal)を使用して、不足しているファイルをPHPスクリプトにリダイレクトします。

# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

上記の場合、REQUEST_FILENAMEが存在しないため、上記がPUTメソッドにのみ影響することは理にかなっています。

Drupal領域内にWebDAV領域がないことは、合理的な制約のように思われますが、問題を修正します。

また、SELinuxは別のエラーを引き起こす可能性が高いと思いますが、上記の説明では言及されていません。 SELinuxを無効にしてみましたか?

3
selliott4

同じ問題。解決者:

<Location /xyz>
    DAV On
    AuthType Digest
    AuthName "webdav-xmarks"
    AuthDigestProvider file
    AuthUserFile "/home/xy/xba/digest-password"
    Require valid-user
    RewriteEngine off <-- this part solved it!
</Location>
4
user57072

制限を使用してみましたか:(たとえば)

  <Limit PUT POST DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
    Require valid-user
  </Limit>
1
Ram Prasad

Error_logは何と言っていますか?それは最初に見る場所です。

また、通常のaccess_logも確認してください。一部のDAVクライアントは、作業を行っている場所よりも高いレベルのディレクトリでDAVを実行しようとすることがあります。

1
freiheit

同じ問題。

Webdavディレクトリに.htaccessファイルを作成して解決:

RewriteEngine off

ここにあります: http://annoyingtechnicaldetails.wordpress.com/2007/07/20/webdav-vs-drupal-htaccess-redirect-rules/

1
Guillaume

Ram Prasadが言ったように、vhosts.configファイルのディレクトリエントリにそのLimitステートメントが必要です。

また、.htaccessファイルと同じディレクトリにApacheが所有する.DAVディレクトリも必要です。 Apacheはこのフォルダを使用して一時ファイルを書き込むため、これにより通常403エラーが発生することがわかりました。

参照: http://www.webdav.org/mod_dav/install.html

0
tonyk