Первоначально нам необходимо настроить PostgreSQL для того, чтобы Bacula могла работать с ней.
Перед изменением настроек рекомендуется сделать резервную копию конфигурационных файлов:
# sudo cp /etc/postgresql/9.6/main/postgresql.conf /etc/postgresql/9.6/main/postgresql.conf_bak
# sudo cp /etc/postgresql/9.6/main/pg_hba.conf /etc/postgresql/9.6/main/pg_hba.conf_bak
В секции «Connection Settings» файла «/etc/postgresql/9.6/main/postgresql.conf» ytj,[jlbvj изменить значение listen_addresses="localhost" на listen_addresses="*", поставив * вместо localhost:
В файле «/etc/postgresql/9.6/main/pg_hba.conf» необходимо внести необходимые изменения:
Для простоты указать метод trust для всех соединений, удалить любую дополнительную конфигурацию после метода типа mod=; и обязательно добавить хост с IP-адресом, где будет работать Директор.
В секции «Database administrative login by Unix domain socket» файла «/etc/postgresql/9.6/main/pg_hba.conf» необходимо закомментировать строку:
local all postgres peer
и дописать после нее строку разделяя значения символом табуляции:
local all postgres trust
В секции «local» файла «pg_hba.conf» необходимо закомментировать строку:
local all all peer
и дописать после нее строку разделяя значения символом табуляции:
local all all trust
В секции «IPv4» файла «pg_hba.conf» закомментировать строку:
host all all 0.0.0.0/0 md5
и дописать после нее 2 строки разделяя значения символом табуляции:
host all all 127.0.0.1/32 trust
при копировании проверяйте правильность указанных IP адресов
host all all 172.16.0.200/24 trust
После настройки конфигурационного файла необходимо перезапустить СУБД командой:
# sudo pg_ctlcluster 9.6 main restart
Затем необходимо присвоить пароли пользователям postrges и bacula следующими командами:
# sudo passwd postgres
# sudo passwd bacula
и создать пользователя БД bacula с паролем «bacula» для работы с системой резервного копирования Bacula.
Выполняем команду sudo -s, входим в интерфейс управления psql командой:
psql template1 -U postgres -h 172.16.0.200 -p 5432
Затем Создаем пользователя bacula командой:
template1=# CREATE ROLE bacula;
Если пользователь bacula создался корректно/правильно получаем ответ:
CREATE ROLE
Присваиваем созданному пользователю пароль: "bacula" следующей командой:
template1=# ALTER USER bacula WITH PASSWORD 'bacula';
Если пароль успешно присвоен пользователю получаем ответ:
ALTER ROLE
Создаем суперпользователя для нашей базы:
template1=# ALTER USER bacula LOGIN SUPERUSER CREATEDB CREATEROLE;
Если суперпользователь для нашей базы создался получаем ответ:
ALTER ROLE
Выходим из интерфейса управления psql командой:
template1=# \q
Далее нам необходимо создать БД bacula, назначить ее владельцем созданного ранее пользователя bacula. Для этого заходим в интерфейс управления psql командой:
psql postgres -p 5432 -U postgres
Создаем БД командой:
postgres=# CREATE DATABASE bacula;
Если база создалась получаем ответ:
CREATE DATABASE
Назначаем владельцем данной БД пользователя "bacula" командой:
postgres=# ALTER DATABASE bacula OWNER TO bacula;
Если назначение прошло успешно получаем ответ:
ALTER DATABASE
Выходим из интерфейса управления psql командой:
postgres=# \q
и затем выходим из терминала суперпользователя
Далее нам необходимо запустить скрипты, которые создадут все необходимые таблицы и привилегии, предварительно создав резервные копии и отредактировав их.
Делаем резервную копию первого скрипта (создания таблиц) и открываем его на редактирование:
sudo cp /usr/share/bacula-director/make_postgresql_tables /usr/share/bacula-director/make_postgresql_tables_bak
sudo mcedit /usr/share/bacula-director/make_postgresql_tables
В строке "db_name" (14я сверху) указать значение имени БД «bacula»:
db_name=bacula
В строке psql после psql вписать «-U bacula -h 172.16.0.200 -p 5432»:
Было: psql -f - -d ${db_name} $* <<END-OF-DATA
Стало: psql -U bacula -h 172.16.0.200 -p 5432 -f - -d ${db_name} $* <<END-OF-DATA
Создать резервную копию сценария раздающего привилегии и открываем его на редактирование::
sudo cp /usr/share/bacula-director/grant_postgresql_privileges /usr/share/bacula-director/grant_postgresql_privileges_bak
sudo mcedit /usr/share/bacula-director/grant_postgresql_privileges
В строке db_user (8я сверху) указать значение пользователя «bacula»
db_user=bacula
В строке db_name указать значение имени БД «bacula»
db_name=bacula
В строке db_password указать значение пароля пользователя БД «bacula»
db_password=bacula
В строке $bindir/psql**** после psql вписать «-U bacula -h 172.16.0.200 -p 5432»
Было: $bindir/psql -f - -d ${db_name} $* <<END-OF-DATA
Стало: $bindir/psql -U bacula -h 172.16.0.200 -p 5432 -f - -d ${db_name} $* <<END-OF-DATA
Для корректного функционирования отредактированных сценариев необходимо выдать права на чтение информации из БД пользователей и сведений о метках безопасности, а так же присвоить для этого необходимые атрибуты пользователю postgres:
sudo usermod -a -G shadow postgres
Установить пользователю необходимые атрибуты:
sudo pdpl-user bacula -l 0:0
Примечание: в данной команде используется буква L в низком регистре
Далее по очереди выполнить отредактированные сценарии:
# sudo /usr/share/bacula-director/make_postgresql_tables
# sudo /usr/share/bacula-director/grant_postgresql_privileges
Если сценарии отработали нормально, то будет выдано сообщение: Privileges for user bacula granted on database bacula.