お金をかけずにサーバーの勉強をしよう

Baculaで Ubuntu Serverのバックアップ(その5)

2023年5月18日

メニューへ戻る

Bacularisで Baculaの設定をします。

Baculaで Ubuntu Serverのバックアップ(その1)」で Baculaをインストールをし、
Baculaで Ubuntu Serverのバックアップ(その2)」で WebGUIのBacularisをインストールし、
Baculaで Ubuntu Serverのバックアップ(その3)」で Baculaの構成要素につき復習し、
Baculaで Ubuntu Serverのバックアップ(その4)」で Baculaの設定に必要な言葉を学びました。


ここでは Bacularisを使って Baculaのバックアップ設定をしていくんですが、その過程でこんなエラーに遭遇します。

Error Error 1000: Internal error. [Warning] file_put_contents(/opt/bacula/etc/bacula-sd.conf): Failed to open stream: Permission denied (@line 64 in file /usr/share/bacularis/protected/vendor/bacularis/bacularis-common/Common/Modules/ConfigBacula.php).

これは [/opt/bacula/etc/]ディレクトリ以下の設定ファイル変更がパーミッションにより蹴られた、という事なんですが「何でこんなエラーが?」と思います。

調べてみました。

subro@UbuntuServer2204-2:~$ ls -la /opt/bacula/etc
ls: ディレクトリ '/opt/bacula/etc/' を開くことが出来ません: 許可がありません

subro@UbuntuServer2204-2:~$ sudo ls -la /opt/bacula/etc
合計 40
drwxr-x---  2 bacula bacula 4096  5月 12 17:16 .
drwxr-xr-x 11 root   root   4096  5月 12 17:12 ..
-rw-r-----  1 bacula bacula 9512  5月 12 17:16 bacula-dir.conf
-rw-r-----  1 bacula root   1181  5月 12 17:12 bacula-fd.conf
-rw-r-----  1 bacula bacula 9969  5月 12 17:16 bacula-sd.conf
-rw-r-----  1 bacula bacula  287  5月 12 17:12 bconsole.conf

ディレクトリとファイルのパーミッションが非常に厳しくなっています。

Bacularisの実体は NGINX+PHPですので [www-data]ユーザーで実行されいるのに、[bacula]ユーザー:[bacula]グループのファイルのパーミッションで、グループ外には一切の権限がないのが原因です。

Bacularisのインストールの過程で、Baculaの設定を行うプログラム実行のために [www-data]ユーザーが sudoできるよう設定しましたけど、あれは指定したコマンド実行時のみ有効にする設定でした。
こちらは PHPでファイルを直接操作するので、ファイルシステムのパーミッションに阻まれているわけです。

当件に関しては、Bacula謹製の WEBツール Baculumのマニュアルに「よくあるエラー」として記載がありました。
Permission denied error when saving Bacula configuration

解決策は上記ディレクトリ・ファイルのパーミッションを「適切に設定する」ことと曖昧に書いてあります。
しかし Baculaのファイルパーミッションが厳しくなっているのは理由があるからで、外部ツールのためにそれを緩めるのはちょっとどうかと思います。
WEBツールの設計として少し難があるのかも知れません。

腑に落ちないところはありますが、以下の対策を取ることにしました。

設定します。

subro@UbuntuServer2204-2:~$ sudo usermod -aG bacula www-data

subro@UbuntuServer2204-2:~$ sudo chmod 660 /opt/bacula/etc/bacula-sd.conf

subro@UbuntuServer2204-2:~$ sudo chmod 660 /opt/bacula/etc/bacula-dir.conf

この後一度 OSリブートをして Baculaを立ち上げ直しました。


ここでの実験ではテープの代わりにファイルをバックアップ先にするつもりなので、GUIでの設定を開始する前にそのためのディレクトリ [/backup]作り、オーナー:グループを [bacula]:[bacula]とし、パーミッションは [rwxr-xr-x(755)]にしておきました。
このディレクトリは Baculaの中で「デバイス」として扱われます。

subro@UbuntuServer2204-2:~$ sudo mkdir /backup

subro@UbuntuServer2204-2:~$ sudo chown bacula:bacula /backup

subro@UbuntuServer2204-2:~$ sudo chmod 755 /backup

subro@UbuntuServer2204-2:~$ ls -ld /backup
drwxr-xr-x 2 bacula bacula 4096  5月 18 16:13 /backup

デバイスの中には「ボリューム」が必要ですが、ボリューム作成は GUIでできますので、それは後ほど。


それでは Bacularisにログインして、バックアップのための設定をしていきます。
ここまで長かった…。

上の [/backup]ディレクトリを新規デバイスとして設定します。

ハンバーガーメニューから [Storages]を選択します。
Bacularis 1

+ Add deviceを押します。
Bacularis 2

デバイスの設定画面です。 一番上の [Copy configuration from:]で既存のものをコピーできますので、デフォルトで登録されている[FileChgr1-Dev1]デバイスを真似することにしました。
赤枠が今回の設定として変更した箇所です。
[Media Type]は既存のものと重ならないよう [File3]としています。
画面の一番下にCreateが出ているのでこれを押します。
Bacularis 3

OKを押します。
Bacularis 4


新規ストレージを作ります。
+ Add Storageを押します。
Bacularis 5

一番上の [Copy configuration from:]で既存のものをコピーできますので、[FileChgr1-Dev1]デバイスに紐付いている [File1]ストレージを真似することにしました。
赤枠が今回の設定として変更した箇所です。
Createを押します。
Bacularis 6

OKを押します。
Bacularis 7

ストレージができました。
Bacularis 8


新規プールを作ります。
ハンバーガーメニューから[Pools]を選択します。
Bacularis 9

Add poolを押します。
Bacularis 10

プールの設定画面です。
一番上の [Copy configuration from:]で既存のものをコピーできますので、デフォルトで登録されている[Fil1]プールを真似することにしました。
赤枠が今回の設定として変更した箇所です。
画面の一番下にCreateが出ているのでこれを押します。
Bacularis 11

OKを押します。
Bacularis 12

プールができました。
Bacularis 13


ボリューム作成とプールへの紐付けをします。
ハンバーガーメニューから [Volumes]を選択します。
Bacularis 14

Label volume(s)を押します。
Bacularis 15

ボリュームの設定画面です。
[Pool:][Storage:]には上で作ったものを指定しています。
Labelを押します。
Bacularis 16

こんな風に進捗がでます。
上手く言っているようなので右上の×で閉じます。
Bacularis 17

[/backup]ディレクトリを見てみます。

subro@UbuntuServer2204-2:~$ ls -l /backup
合計 4
-rw-r----- 1 bacula tape 261  5月 18 17:25 TestBackupVolume01

ボリュームに相当するファイルができていますね。
グループは[tape]になっていました。


もう一回 Poolを見ます。
Bacularis 9

[TestBackupPool]の [No. vols]列が 1になりました。
詳細を押します。
Bacularis 18

[Volumes in pool]を選択すると、プールに紐付けられたボリュームが表示されました。
Bacularis 19


バックアップの設定をします。
ハンバーガーメニューから [Jobs]を選択します。
Bacularis 20

New backup jobを押します。
Bacularis 21

[Job name:]を入力し、次へを押します。
Bacularis 22

[Client:]に自分自身の [UbuntuServer2204-2-fd]クライアントを選択しました。
まだファイルセットの設定が無いので、+ Add new FileSetを押します。
Bacularis 23

そうすると、下にこの入力項目が出てきます。
[Name:]を設定し、+ 追加を押すとメニューが出ますので、[+ Add include block]を選択します。
Bacularis 24

そうすると、また下にこのように伸びます。
+ 追加を押すとメニューが出ますので、[+ Add files by file browser]を選択します。
Bacularis 25

①クライアントを選択します
②ここでクライアント内のファイルシステムを閲覧できます
③バックアップしたいものを左の枠(②)からこちらにドラッグ&ドロップします
Apply file selectionを押します。
Bacularis 26

こう表示されますので、Createを押します。
(このボタンを押すべきと分かり辛い…)
Bacularis 27

[FileSet:]に今作ったものが自動で入りますので、次へを押します。
Bacularis 28

[Storage:]と[Pool:]を指定し、次へを押します。
Bacularis 29

[Level:]には[Full]を指定しました。他は「差分バックアップ」ですかね。
[Messages:]は良く分かりませんが [Standard]にしておきました。
次へを押します。
Bacularis 30

実行スケジュールです。
とりあえず [WeeklyCycle](週次)にしました。
+ Add new Scheduleを押すと新規のスケジュール設定を細々とできます。
次へを押します。
Bacularis 31

設定のサマリが表示されますので、良ければCreate jobを押します。
Bacularis 32

ジョブができました。
詳細を押します。
Bacularis 33

ジョブを実行してみます。
ジョブ実行を押します。
Bacularis 34

ジョブ実行を押します。
Bacularis 35

バックアップができました。
Bacularis 36

ダッシュボードに戻ってきますと、こんな風になっていました。
宜しいんじゃないでしょうか。
Bacularis 37


というわけで、このシリーズも長くなってきましたが、やっとこバックアップができました。

次回「Baculaで Ubuntu Serverのバックアップ(その6)」ではバックアップからファイルをリストアしてみようと思います。