После обновления с Debian 10 до 11 задание rsync с некоторым местом назначения в /etc больше не работает.
На стороне сервера (назначения) у меня есть это:
uid = root
gid = root
hosts allow = mysender
[mymodule]
# NOGO
path = /etc/tmp
# GO
# path = /root/tmp
comment = Just for testing
read only = false
На стороне клиента (источник) я ввожу следующую команду:
rsync -a /etc/temp/test myserver::mymodule
Что приводит к сбою rsync с таким сообщением:
rsync: [generator] recv_generator: mkdir "/test" (in mymodule) failed: Read-only file system (30)
*** Skipping any contents from this failed directory ***
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1333) [sender=3.2.3]
Настройка сервера на использование пути за пределами /etc (например, /root/tmp) работает так, как и ожидалось.
Корневая файловая система (которая также содержит каталог /etc) — этонетсмонтировано только для чтения, конечно, и оно чистое. Почему же тогда rsyncd считает /etc частью файловой системы только для чтения?
решение1
rsync версии 3.2.0-1 представил усовершенствование под названием «ProtectSystem», которое предотвращает, среди прочего, доступ к записи /etc
(см.https://download.samba.org/pub/rsync/NEWS). Это можно переопределить, создав файл /etc/systemd/system/rsync.service.d/override.conf
со следующим содержимым:
[Service]
ProtectSystem=off
Надеюсь, это поможет спустя столько времени после вашего первого поста.