getDiagnosticsData fails: www-data cannot mkdir /var/www/html/userdata on SSVM (Permission denied)

オープン
#13,959 コメント 1 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
55/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
java

調査の方向性

UploadManagerImpl.java の 277-291 行目から始め、issue にあるコマンドを使って、実行中の system VM に対して getDiagnosticsData を再現します。SSVM template が /var/www/html/userdata をどのように作成して権限を設定するかを、関連する extractVolume および extractTemplate のパスも含めて確認します。async job が成功し、手動の回避策なしで使用可能な download URL を返せば完了です。

索引モデルが issue の本文から書いたものです。

説明

component:healthcheck Severity:Critical

problem

Retrieving diagnostics from a system VM fails. The archive is collected on the target VM, but the async job then errors and no download URL is produced:

Unable to create a link for entity at diagnostics//diagnostics_files_<timestamp>.zip on ssvm, Error in creating directory =mkdir: cannot create directory '/var/www/html/userdata/<uuid>/': Permission denied

Expected: the job succeeds and returns a usable download URL.

versions

  • CloudStack 4.22.1.0 (management and agents)
  • System VMs from the stock systemvm-kvm-4.22.0 template, not customized
  • KVM hypervisors, NFS secondary storage

The steps to reproduce the bug

  1. Run getDiagnosticsData against a running system VM, e.g. cmk get diagnosticsdata targetid=<CPVM uuid> files=/var/log/cloud.log.
  2. Wait for the async job to complete.
  3. The job fails with errorcode 530 and the error above.

What to do about it?

The download directory is created as the www-data user (UploadManagerImpl.java#L277-L291), but the docroot on the SSVM is not writable by www-data. Shipping /var/www/html/userdata owned by www-data in the system VM template, or creating it as root and chowning, would fix it. extractVolume/extractTemplate downloads use the same directory and may be affected as well; only the diagnostics case is verified.

Workaround on a running SSVM: mkdir -p /var/www/html/userdata && chown www-data:www-data /var/www/html/userdata (lost on SSVM recreation).

主要言語
Java
スター
3.1k
フォーク
1.4k
平均マージ
6日 20時間
マージ済み PR(30日)
27

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

apache/cloudstack のほかの issue

apache/cloudstack の issue をすべて見る

似ている issue

Java の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。