※注意事項※¶
2024/05/29現在、 Redmine 4.2に対応しているバージョンのDMSFプラグインはパストラバーサルの脆弱性があります。
https://jvn.jp/jp/JVN22182715/index.html
当該プラグインを有効にしている場合、Redmineにログインしているユーザーによって、Redmineの実行権限で可能な範囲で、サーバー上の任意のファイルを取得されたり削除されたりする可能性があります。
- 筆者のようにRedmineを単独ユーザーで運用していない限りは、以下のオプションを強く推奨します。
- Redmine及びOS全体のバージョンアップを図る。
- 本プラグインを無効化する。
はじめに¶
Redmine 5.1で運用したい場合は、以下を参照してください。
https://atelier.reisalin.com/projects/zettel/knowledgebase/articles/78
概要¶
Redmineをファイルサーバのように扱うプラグインをインストールします。
- Redmine 4.2でも動く環境でのインストール手順
- Redmine本体の設定を修正する手順
- Windows 11でのWebDAVを有効にする手順
をそれぞれ追加しました。
備考¶
- この作業、下手すればRedmine全体が使えなくなる作業です。(実際にRedmineが使えなくなりました)
- そのため、DBのバックアップとリストアによる切り戻し手順も込みです。
- そもそも:WebDAVを有効化するかどうかは組織のセキュリティポリシーに関わる問題です。有効化すべきか否かは事前に了承を取ってください。
-
また、Redmineサーバ上のインターネット利用において、WebDavの使用は非推奨です。
- 本サイトではWebDavを無効化しています。
2023/11/08追記¶
MicrosoftはWebDavを「非推奨」とする方針を打ち出しました。
https://forest.watch.impress.co.jp/docs/news/1544482.html
プラグイン名¶
- Redmine_DMSF
動作を確認した環境¶
- Redmine 4.2
- mysql Ver 8.0.31
- Windows 11 (WebDav設定)
WebDav接続の前提¶
- Redmineがhttps化されていること。
- 証明書をWindowsにインポートしていること。
導入時¶
- 追加パッケージのインストール:要
- 設定ファイルの修正:要
- Gem追加:要
- DBマイグレーション:要
- Windows設定:要 (WebDav接続をする場合のみ)
実施した手順¶
さっくりとならなかった手順¶
- 念のためDBバックアップ
- SSHログイン後、追加パッケージをインストール
- 設定ファイルの書き換え
- Redmineプラグインに移動
- gitでレポジトリをダウンロード
- 新規ジェムをインストール
- DBマイグレーション
- Webサービス再起動
- Redmine設定変更
- WebDAVサービス有効化(Windows作業)
- 切り戻し手順(それでも失敗した場合)
バックアップ取得¶
mysqldumpによるバックアップ¶
cd /hoge
# 任意のバックアップディレクトリに移動します
mysqldump -h localhost -u redmine -p --no-tablespaces --single-transaction redmine > redmine_backup.$(date +%Y%m%d).sql
# それぞれ -h ホスト名 -u redmine -p ユーザ オプション db名です。
# パスワードはredmineインストール時に設定したDBユーザのものです
環境が許すなら、AWSのようにシステム全体のバックアップを取った方が後腐れがありません。
動作に必要な追加パッケージのインストールと設定¶
追加パッケージをインストールします。¶
sudo aptitude install xapian-omega ruby-xapian libxapian-dev poppler-utils antiword unzip catdoc libwpd-tools libwps-tools gzip unrtf catdvi djview djview3 uuid uuid-dev xz-utils libemail-outlook-message-perl
Redmineコンフィグファイルの修正¶
ディレクトリに移動します。¶
cd /home/www-data/redmine/config/
# 自分の環境に合わせます。
additional_environment.rbの作成(この作業をしていないなら必要です)¶
sudo cp -pi additional_environment.rb.example additional_environment.rb
addtional_environment.rbの追記¶
- 配置ディレクトリは自分の環境に合わせます。
cat <<- __EOF__ | sudo tee -a /home/www-data/redmine/config/additional_environment.rb
# Redmine DMSF's WebDAV
require File.dirname(__FILE__) + '/plugins/redmine_dmsf/lib/redmine_dmsf/webdav/custom_middleware'
config.middleware.insert_before ActionDispatch::Cookies, RedmineDmsf::Webdav::CustomMiddleware
__EOF__
プラグインのインストール¶
プラグインを配置します。¶
- リリースノートによれば、Redmine 4.2に対応しているバージョンはv3.0.5です。
cd /hoge && pwd
# 任意の作業ディレクトリに移動し、そのディレクトリにいることを確認します。
wget https://github.com/danmunn/redmine_dmsf/archive/refs/tags/v3.0.5.zip
unzip v3.0.5.zip
sudo chown -R www-data:www-data redmine_dmsf-3.0.5
sudo mv redmine_dmsf-3.0.5/ /home/www-data/redmine/plugins/redmine_dmsf
# 移動先のディレクトリは自分の環境のプラグイン配置ディレクトリです。
# ディレクトリ名から-3.0.5を取り除くのを忘れないでください。
ls -ld /home/www-data/redmine/plugins/redmine_dmsf
# このディレクトリがあることを確認します
Gemをインストールします。¶
cd /home/www-data/redmine/ && pwd
# 自分の環境に合わせます。
sudo -u www-data bundle install
DBのマイグレーションを行います。¶
cd /home/www-data/redmine/ && pwd
# 自分の環境に合わせます。
sudo -u www-data bundle exec rake redmine:plugins:migrate RAILS_ENV=production
Webサービスを再起動します。¶
sudo systemctl restart apache2
Redmine設定変更¶
WebDAV有効化¶
- Redmineに管理者アカウントでログインします。
- 管理>プラグイン>DMSFの「設定」をクリックします。
- 以下のように修正します。
- WebDAV:有効 (デフォルト)
- WebDavアクセス制御:読み書き可能
- 任意のプロジェクトに移動します。
- 「設定」をクリックし、「文書管理」にチェックを入れます。
- また、Redmine管理画面の「ロールと権限設定」で、ユーザのアクセス権を忘れないようにしてください。(「文書管理」のセクションです)
Windows : WebDAVサービス有効化¶
- Windows 11のスタート画面からwindows featuresと入力。Windowsの機能の有効化または無効化を起動します。
- SMB 1.0/CIFS ファイル共有のサポート全てにチェックを入れます。
- OKをクリックして再起動します。
多分必要な作業 - 証明書のインポート¶
Redmineの証明書をWindowsにインポートしておきます。
接続確認¶
- エクスプローラーを開きます。
- PCに移動し、右クリックから「ネットワークの場所を追加する」をクリックします。
- 次へ > カスタムネットワークの場所を選択 >次へと進みます。
- 「インターネットまたはネットワークのアドレスは以下のように指定します。
- https://[ドメイン名]/dmsf/webdav/[プロジェクト識別子]
- 「次へ」をクリック後、資格情報を確認されるので、Redmineのアカウントを入力します。
- エクスプローラーウィンドウが表示され、ファイルの読み書きができれば設定完了です。
おまけ:切り戻し手順¶
この作業、バージョン変更や設定ミスで軽くRedmine全体が機能不全に陥ります。そのため、切り戻し手順を記しておきます。
通常の切り戻し¶
ディレクトリ移動¶
cd /home/www-data/redmine && pwd
# 自分の環境に合わせます。
プラグインアンインストール¶
sudo -u www-data bundle exec rake redmine:plugins:migrate NAME=redmine_dmsf VERSION=0 RAILS_ENV=production
ディレクトリ削除¶
sudo rm plugins/redmine_dmsf -Rf
Webサービス再起動¶
sudo systemctl restart apache2.service
それでもダメだった切り戻し(DBリストア)¶
cd /hoge
# mysqldumpを行ったディレクトリ
mysql -h localhost -u redmine -p redmine < redmine_backup.$(date +%Y%m%d).sql
# パスワードはredmineインストール時に設定したDBユーザのものです
sudo systemctl restart apache2.service