Настройка сервера rsyncd для backup-ов
21.12.2019
Теги: Linux • Конфигурация • Настройка • Сервер • Установка
Представим себе такую ситуацию. В сети есть несколько компьютеров пользователей и один сервер, на который надо регулярно выполнять backup пользовательских файлов. Инициатором резервного копирования будет выступать сервер — с некоторой периодичностью он будет обращаться к компьютерам сети и копировать себе содержимое домашних директорий пользователей. Для этого потребуется настроить и запустить rsync-сервер на компьютере каждого пользователя.
Кроме того, мы хотим, чтобы каждый пользователь мог сам выполнить резервное копирование своих файлов. Это уже опционально, но пусть будет для полноты картины. Для этого нам потребуется настроить и запустить rsync-сервер на backup-компьютере.
Итак, список задач:
- настроить и запустить службу
rsyncd
на компьютере Иванова — ip-адрес192.168.110.2
- настроить и запустить службу
rsyncd
на компьютере Петрова — ip-адрес192.168.110.3
- настроить и запустить службу
rsyncd
на backup-компьютере — ip-адрес192.168.110.100
Чтобы rsync
мог быть запущен как демон, необходимо создать файл конфигурации rsyncd.conf
. Формат этого файла достаточно прост и идентичен ini-файлам. В нём описываются «глобальные» параметры, контролирующие поведение демона в целом, а также «модули», описывающие доступ к конкретным каталогам файловой системы.
Все параметры в начале файла (до первого заголовка [модуль]
) являются общими параметрами. Также есть возможность помещать любые параметры, специфичные для модулей, в общую часть конфигурационного файла — чтобы заменить значение по умолчанию для опции указанным значением.
Файл rsyncd.conf на компьютере backup
В этом файле конфигурации будет несколько модулей — по количеству пользователей:
# Глобальные параметры, отвечающие за поведение демона в целом pid file = /var/run/rsyncd.pid # Пользователь, от имени которого ведется работа с файлами uid = backups gid = backups # Удаленная система может записывать файлы на этот сервер read only = no [ivanov-backup-dir] comment = Ivanov's backup directory on server # Путь к директории для копирования файлов path = /backups/ivanov # К этому модулю можно обращаться только с компьютера Иванова hosts allow = 192.168.110.2 hosts deny = * [petrov-backup-dir] comment = Petrov's backup directory on server # Путь к директории для копирования файлов path = /backups/petrov # К этому модулю можно обращаться только с компьютера Петрова hosts allow = 192.168.110.3 hosts deny = *
Запустим службу, добавим ее в автозагрузку и посмотрим, какие модули теперь доступны на backup-сервере:
$ sudo systemctl start rsync $ sudo systemctl enable rsync
$ rsync rsync://localhost ivanov-backup-dir Ivanov's backup directory on server petrov-backup-dir Petrov's backup directory on server
Можно упростить команду просмотра модулей:
$ rsync localhost:: ivanov-backup-dir Ivanov's backup directory on server petrov-backup-dir Petrov's backup directory on server
Нужно еще создать директории /backups/ivanov
и /backups/petrov
+ создать пользователя backups
:
$ sudo su # mkdir /backups # mkdir /backups/ivanov # mkdir /backups/petrov # useradd -m -s /bin/bash backups # chown backups:backups /backups # chown backups:backups /backups/ivanov # chown backups:backups /backups/petrov # exit
Файл rsyncd.conf на компьютерах пользователей
Файлы конфигурации на компьютерах пользователей будут иметь только один модуль, связанный с домашней директорий.
Создаем файл rsyncd.conf
на компьютере Иванова, ip-адрес 192.168.110.2
:
$ sudo nano /etc/rsyncd.conf
# Глобальные параметры, отвечающие за поведение демона в целом pid file = /var/run/rsyncd.pid # Пользователь, от имени которого ведется работа с файлами uid = ivanov gid = ivanov # К этому серверу можно обращаться только с backup-компьютера hosts allow = 192.168.110.100 hosts deny = * # Удаленная система может записывать файлы на этот сервер read only = no [ivanov-home-dir] comment = Home directory on Ivanov's computer # Путь к директории для копирования файлов path = /home/ivanov
Запустим службу rsyncd
и убедимся, что модуль ivanov-home-dir
теперь доступен:
$ sudo systemctl start rsync $ sudo systemctl enable rsync
$ rsync localhost:: ivanov-home-dir Home directory on Ivanov's computer
Создаем файл rsyncd.conf
на компьютере Петрова, ip-адрес 192.168.110.3
:
$ sudo nano /etc/rsyncd.conf
# Глобальные параметры, отвечающие за поведение демона в целом pid file = /var/run/rsyncd.pid # Пользователь, от имени которого ведется работа с файлами uid = petrov gid = petrov # К этому серверу можно обращаться только с backup-компьютера hosts allow = 192.168.110.100 hosts deny = * # Удаленная система может записывать файлы на этот сервер read only = no [petrov-home-dir] comment = Home directory on Petrov's computer # Путь к директории для копирования файлов path = /home/petrov
Запустим службу rsyncd
и убедимся, что модуль petrov-home-dir
теперь доступен:
$ sudo systemctl start rsync $ sudo systemctl enable rsync
$ rsync localhost:: petrov-home-dir Home directory on Petrov's computer
Операции push (закачать) и pull (скачать)
Теперь пользователь Иванов со своего компьютера может создать резервную копию (закачать свои файлы на backup-сервер):
$ rsync -av /home/ivanov 192.168.110.100::ivanov-backup-dir # push-операция
Разумеется, ему доступна и обратная операция — восстановление из резервной копии (скачать свои файлы с backup-сервера):
$ rsync -av 192.168.110.100::ivanov-backup-dir /home/ivanov # pull-операция
С другой стороны, системный администратор, работая на backup-компьютере, может создать резервную копию файлов Иванова:
$ rsync -av 192.168.110.2::ivanov-home-dir /backups/ivanov # pull-операция
Системный администратор с backup-компьютера может выполнить и обратную операцию — восстановить файлы Иванова:
$ rsync -av /backups/ivanov/ 192.168.110.2::ivanov-home-dir # push-операция
rsync
надо от имени пользователя backups
, потому что только у него есть необходимые права на директории /backups/ivanov
и /backups/petrov
.
И ничто не мешает системному администратору автоматизировать рутинную операцию ежедневного резервного копирования домашних директорий всех пользователей. Аналогично могут поступить и пользователи Иванов и Петров (но полагаться на это не стоит).
Использование паролей
По умолчанию все rsync-клиенты могут подключаться к rsync-серверу без пароля — это так называемый «анонимный rsync». Параметр auth users
в файле rsyncd.conf
задает список имен пользователей, которым разрешено подключаться к этому модулю. Эти пользователи не являются системными пользователями, это просто способ распознавания «свой-чужой» между rsync-клиентом и rsync-сервером.
Если параметр auth users
установлен, то rsync-клиент будет запрошен на предмет предоставления имени пользователя и пароля при подключении к этому модулю. Имена пользователей, которым разрешено подключаться и их пароли сохраняются в файле, имя которого задается в параметре secrets file
. Этот файл по-строковый и содержит пары имя пользователя и пароль, разделенные двоеточием.
Параметр strict modes
определяет, будут ли проверяться права доступа к файлу с паролями. Если strict modes
установлен в yes
или true
, то файл паролей не должен читаться любым пользователем с id, отличным от того, из-под которого запущен rsync-сервер. Если он установлен в no
или false
, то такая проверка не производится. По умолчанию параметр имеет значение yes
.
Пароль на компьютерах пользователей
Устанавливаем пароль для доступа к rsync-серверу на компьютере Иванова:
$ sudo nano /etc/rsyncd.conf
# Глобальные параметры, отвечающие за поведение демона в целом pid file = /var/run/rsyncd.pid # Пользователь, от имени которого ведется работа с файлами uid = ivanov gid = ivanov # К этому модулю можно обращаться только с backup-компьютера hosts allow = 192.168.110.100 hosts deny = * # Удаленная система может записывать файлы на этот сервер read only = no # При подключении к этому серверу требуется логин и пароль auth users = admin # В этом файле — логины и пароли для подключения к серверу secrets file = /etc/rsyncd.secrets [ivanov-home-dir] comment = Home directory on Ivanov's computer # Путь к директории для копирования файлов path = /home/ivanov
Логин и пароль будут в файле /etc/rsyncd.secrets
:
$ sudo nano /etc/rsyncd.secrets
admin:qwerty
Обязательно выставляем права на этот файл:
$ sudo chmod 600 /etc/rsyncd.secrets
На компьютере Петрова проделываем аналогичные операции — устанавливаем логин и пароль admin
и qwerty
. Конечно, можно для каждого компьютера пользователя установить свою пару логин-пароль, но это будет слишком уж сложно. Потому что для каждого пользователя на backup-компьютере придется создавать свой файл пароля, см. ниже.
Теперь, когда администратор с backup-компьютера от имени пользователя backups
будет копировать файлы с компьютера Иванова, ему нужно указать имя пользователя admin
и пароль qwerty
:
$ rsync --archive admin@192.168.110.2::ivanov-home-dir /backups/ivanov # pull-операция Password: qwerty
$ rsync --archive /backups/ivanov/ admin@192.168.110.2::ivanov-home-dir # push-операция Password: qwerty
Безопасность мы повысили, но теперь администратор не сможет автоматизировать процесс резервного копирования, потому что rsync-серверы на компьютерах пользователей запрашивают пароль. Однако, на этот случай у rsync
есть опция --password-file
. Давайте на backup-компьютере от имени пользователя backups
в его домашней директории создадим файл:
$ nano ~/.user-rsyncd.password
qwerty
Обязательно выставляем права на этот файл:
$ sudo chmod 600 ~/.user-rsyncd.password
Теперь администратор может с backup-компьютера от имени пользователя backups
копировать файлы с компьютера Иванова без ввода пароля:
$ rsync --archive --password-file=/home/backups/.user-rsyncd.password \ > admin@192.168.110.3::ivanov-home-dir /backups/ivanov # pull-операция
$ rsync --archive --password-file=/home/backups/.user-rsyncd.password \ > /backups/ivanov/ admin@192.168.110.3::ivanov-home-dir # push-операция
backups
создать файлы .ivanov-rsyncd.password
и .petrov-rsyncd.password
.
Пароль на компьютерe backup
Устанавливаем пароль для доступа к rsync-серверу на backup-компьютере:
$ sudo nano /etc/rsyncd.config
# Глобальные параметры, отвечающие за поведение демона в целом pid file = /var/run/rsyncd.pid # Пользователь, от имени которого ведется работа с файлами uid = backups gid = backups # Удаленная система может загружать файлы на этот сервер read only = no # При подключении к этому серверу требуется логин и пароль auth users = user # В этом файле — логины и пароли для подключения к серверу secrets file = /etc/rsyncd.secrets [ivanov-backup-dir] comment = Ivanov's backup directory on server # Путь к директории для копирования файлов path = /backups/ivanov # К модулю можно подключаться только с компьютера Иванова hosts allow = 192.168.110.2 hosts deny = * [petrov-backup-dir] comment = Petrov's backup directory on server # Путь к директории для копирования файлов path = /backups/petrov # К модулю можно подключаться только с компьютера Петрова hosts allow = 192.168.110.3 hosts deny = *
Логин и пароль будут в файле /etc/rsyncd.secrets
:
$ sudo nano /etc/rsyncd.secrets
user:123456
Обязательно выставляем права на этот файл:
$ sudo chmod 600 /etc/rsyncd.secrets
Теперь Иванов при копировании своих файлов на backup-компьютер должен указывать имя пользователя user
и пароль 123456
:
$ rsync --archive /home/ivanov/ user@192.168.110.100::ivanov-backup-dir # push-операция Password: 123456
$ rsync --archive user@192.168.110.100::ivanov-backup-dir /home/ivanov # pull-операция Password: 123456
Чтобы не вводить пароль, Иванов в своей домашней директории должен создать файл .user-rsyncd.password
:
$ nano ~/.user-rsyncd.password
123456
И обязательно выставить права на этот файл:
$ sudo chmod 600 ~/.user-rsyncd.password
Теперь Иванов может копировать свои файлы на backup-компьютер без ввода пароля:
$ rsync --archive --password-file=/home/ivanov/.user-rsyncd.password \ > /home/ivanov/ user@192.168.110.100::ivanov-backup-dir # push-операция
$ rsync --archive --password-file=/home/ivanov/.user-rsyncd.password \ > user@192.168.110.100::ivanov-backup-dir /home/ivanov # pull-операция
- PHP-FPM. Установка и настройка
- Apache2. Установка и настройка. Часть 1 из 2
- Dante. Установка и настройка прокси-сервера
- Установка WireGuard на Ubuntu 20.04 LTS. Часть вторая из двух
- Установка WireGuard на Ubuntu 20.04 LTS. Часть первая из двух
- Установка OpenVPN на Ubuntu 18.04 LTS. Часть 12 из 12
- Установка OpenVPN на Ubuntu 18.04 LTS. Часть 11 из 12
Поиск: Linux • Настройка • Сервер • Установка • rsync • server • backup • Резервное копирование