Некорневой пользователь Rsync демона ошибка rsync: ошибка запуска протокола клиент-сервер (код 5) в main.c(1675) [Получатель=3.1.3]

Вопрос или проблема

Я нахожусь на Ubuntu 20.04 Desktop и создаю резервную копию удаленного сервера Ubuntu 20.04 клиента, используя следующую базовую настройку:

В /etc/sudoers
non-root-username ALL= NOPASSWD:/usr/bin/rsync

Из терминала Desktop я выполняю:
rsync -a -e "ssh -i /path/to/id_rsa" --rsync-path="sudo rsync" [email protected]::data /local/path

На удаленном сервере клиента у меня есть следующее в /etc/rsyncd.conf:

root@admin:~# cat /etc/rsyncd.conf 
# Глобальная конфигурация сервиса rsync
pid file = /var/run/rsyncd.pid
hosts allow = 123.123.123.123
log file = /var/log/rsync.log
# Имя пользователя и группа для работы с резервными копиями
uid = non-root-username
gid = non-root-username
# Не разрешать изменять исходные файлы
read only = yes
# Информация о источнике данных
[data]
use chroot = false
strict modes = false
path = /backups
list = yes
auth users = non-root-username
secrets file = /etc/rsyncd.passwd

В моем файле /etc/rsyncd.passwd у меня есть:

root@admin:~# cat /etc/rsyncd.passwd 
non-root-username:password

У меня есть такие разрешения для /etc/rsyncd.conf:

root@admin:~# stat /etc/rsyncd.conf 
  Файл: /etc/rsyncd.conf
  Размер: 471         Блоков: 8          Блок ввода-вывода: 4096   обычный файл
Устройство: fd00h/64768d    Иной: 144028      Ссылок: 1
Доступ: (0600/-rw-------)  Uid: (    0/    root)   Gid: ( 1001/non-root-username)
Доступ: 2022-05-21 13:38:46.797769245 +0800
Изменить: 2022-05-21 13:38:42.641735637 +0800
Изменить: 2022-05-21 13:55:52.384894170 +0800

И у меня есть такие разрешения для /etc/rsyncd.passwd:

root@admin:~# stat /etc/rsyncd.passwd 
  Файл: /etc/rsyncd.passwd
  Размер: 31          Блоков: 8          Блок ввода-вывода: 4096   обычный файл
Устройство: fd00h/64768d    Иной: 144040      Ссылок: 1
Доступ: (0640/-rwxrwxr-x)  Uid: (    0/    root)   Gid: ( 1001/non-root-username)
Доступ: 2022-05-21 13:38:06.989448597 +0800
Изменить: 2022-05-21 13:37:37.473212811 +0800
Изменить: 2022-05-21 13:37:37.473212811 +0800

Но независимо от того, какую комбинацию UID / GID и разрешений я пробую, я всегда получаю одну и ту же ошибку:

Ubuntu 20.04.4 LTS  <-- показывает, что успешно подключается, но не может аутентифицироваться
@ERROR: доступ запрещен к данным от UNKNOWN (0.0.0.0)
rsync error: ошибка запуска клиент-серверного протокола (код 5) в main.c(1675) [Receiver=3.1.3]

Я прочитал страницы мануала rsync и попробовал их советы по устранению неполадок… Я не вижу, что я упускаю…

Какие-либо предложения?

Я вернулся к основам и разобрался. Основная проблема заключалась в том, что hosts allow = 123.123.123.123 блокировал мой собственный IP (да, я проверял IP-адрес два и три раза, функция просто кажется сломанной)

Мое окончательное решение выше выглядит так:

root@admin:~# cat /etc/rsyncd.conf 
# Глобальная конфигурация сервиса rsync
pid file = /var/run/rsyncd.pid
#hosts allow = 123.123.123.123  <-- закомментировано
log file = /var/log/rsync.log
# Имя пользователя и группа для работы с резервными копиями
uid = root
gid = root
# Не разрешать изменять исходные файлы
read only = yes
# Информация о источнике данных
[data]
use chroot = false
#strict modes = false <-- (по умолчанию true)
path = /backups
list = yes
auth users = non-root-username
secrets file = /etc/rsyncd.passwd

В моем файле /etc/rsyncd.passwd у меня есть:

root@admin:~# cat /etc/rsyncd.passwd 
non-root-username:password

У меня есть такие разрешения для /etc/rsyncd.conf:

root@admin:~# stat /etc/rsyncd.conf 
  Файл: /etc/rsyncd.conf
  Размер: 471         Блоков: 8          Блок ввода-вывода: 4096   обычный файл
Устройство: fd00h/64768d    Иной: 144028      Ссылок: 1
Доступ: (0600/-rw-------)  Uid: (    0/    root)   Gid: ( 1001/root)
Доступ: 2022-05-21 13:38:46.797769245 +0800
Изменить: 2022-05-21 13:38:42.641735637 +0800
Изменить: 2022-05-21 13:55:52.384894170 +0800

И у меня есть такие разрешения для /etc/rsyncd.passwd:

root@admin:~# stat /etc/rsyncd.passwd 
  Файл: /etc/rsyncd.passwd
  Размер: 31          Блоков: 8          Блок ввода-вывода: 4096   обычный файл
Устройство: fd00h/64768d    Иной: 144040      Ссылок: 1
Доступ: (0640/-rwxrwxr-x)  Uid: (    0/    root)   Gid: ( 1001/root)
Доступ: 2022-05-21 13:38:06.989448597 +0800
Изменить: 2022-05-21 13:37:37.473212811 +0800
Изменить: 2022-05-21 13:37:37.473212811 +0800

Окончательная команда для резервного копирования с локального сервера резервного копирования:
rsync -a -e "ssh -i /path/to/id_rsa" --rsync-path="sudo rsync" [email protected]::data /local/path

Ответ или решение

Решение ошибки rsync Daemon для пользователя без прав root на Ubuntu

Ошибка, которую вы столкнулись при использовании rsync, указывает на проблемы с аутентификацией и разрешениями при подключении к удалённому серверу rsync. Давайте подробно рассмотрим вашу конфигурацию и шаги, которые вы предприняли для решения проблемы, а также предложим оптимизированное и корректное решение.

Описание проблемы

Вы использовали следующую команду для его выполнения:

rsync -a -e "ssh -i /path/to/id_rsa" --rsync-path="sudo rsync" [email protected]::data /local/path

Согласно сообщению об ошибке:

@ERROR: access denied to data from UNKNOWN (0.0.0.0)
rsync error: error starting client-server protocol (code 5) at main.c(1675) [Receiver=3.1.3]

Это сообщение указывает на то, что удалённый сервер rsync не позволяет доступ к модулю data. Причина скорее всего связана с настройками в конфигурации сервера rsync, включая неправильные IP-адреса и разрешения пользователя.

Анализ вашей конфигурации

Конфигурация rsyncd.conf

Ваш файл /etc/rsyncd.conf выглядит следующим образом:

pid file = /var/run/rsyncd.pid
hosts allow = 123.123.123.123
log file = /var/log/rsync.log
uid = non-root-username
gid = non-root-username
read only = yes
[data]
use chroot = false
strict modes = false
path = /backups
list = yes
auth users = non-root-username
secrets file = /etc/rsyncd.passwd

Проблемы:

  1. hosts allow: Убедитесь, что ваш IP-адрес добавлен в список разрешённых. Если вы находитесь за NAT или если у вас динамический IP, это может быть причиной доступа.
  2. UID и GID: Нет необходимости ограничивать uid и gid до статических пользователей. Разумнее использовать root, чтобы избежать проблем с правами доступа, если rsync запущен как демон.
  3. strict modes: Вы отключили строгие режимы — это может привести к дополнительным проблемам с безопасностью.

Файл паролей

Ваш файл /etc/rsyncd.passwd выглядит нормально, однако обратите внимание на разрешения:

Access: (0640/-rwxrwxr-x)  Uid: (    0/    root)   Gid: (  1001/non-root-username)

Разрешения файлы должны быть ограничены:

  • Для /etc/rsyncd.passwd рекомендуется использовать разрешения 0600 для повышения безопасности.

Рекомендации для исправления конфигурации

  1. Обновите файл /etc/rsyncd.conf:
pid file = /var/run/rsyncd.pid
# hosts allow = 123.123.123.123  # закомментируйте или добавьте свой IP
log file = /var/log/rsync.log
uid = root
gid = root
read only = yes
[data]
use chroot = false
strict modes = false
path = /backups
list = yes
auth users = non-root-username
secrets file = /etc/rsyncd.passwd
  1. Проверьте файл паролей:

Убедитесь, что файл /etc/rsyncd.passwd имеет правильные разрешения, используя команду:

chmod 600 /etc/rsyncd.passwd
  1. Перезапустите демон rsync:

После внесения изменений в конфигурацию вам нужно перезапустить демон, чтобы изменения вступили в силу.

sudo systemctl restart rsync

Заключение

После выполнения вышеуказанных шагов попробуйте снова выполнить команду rsync. Убедитесь, что ваш IP-адрес включён в список hosts allow, если вы всё еще его используете. Если подключение пройдёт успешно, ошибка не должна больше возникать.

Используйте эти руководства для устранения дальнейших проблем с rsync. Если потребуется, можно добавить дополнительные уровни логирования для диагностики в случае возникновения новых ошибок.

Оцените материал
Добавить комментарий

Капча загружается...