Оглавление
4. Запуск службы rsync (rsyncd)
4.1 Запуск демона (службы) rsync в оболочке
4.2 Запуск демона (службы) rsync с помощью Systemd
4.3 Запуск демона (службы) rsync с помощью inetd
5. Глобальные параметры службы rsync
7. Конфигурационные директивы rsyncd.conf
8. Стойкость аутентификации rsync
9. Настройка демона SSL/TLS для rsync
10. Примеры конфигурационных файлов демона (службы) rsync (rsyncd.conf и rsyncd.secrets)
11. Конфигурационные файлы службы rsync
Все страницы документации rsync на русском языке:
- rsync
- rsyncd.conf [данная страница]
- rsync-ssl
- rrsync
Что такое rsyncd.conf
rsyncd.conf – файл конфигурации для rsync в режиме демона.
По умолчанию файл расположен по следующему пути: /etc/rsyncd.conf
Вы можете создавать дополнительные файлы rsyncd.conf. При некоторых условиях (запуск службы вручную в терминале и пользователь не является суперпользователем) автоматически считывается файл rsyncd.conf в текущей рабочей директории. Либо вы можете явно указать путь до файла rsyncd.conf с помощью опции --config=ФАЙЛ.
Описание rsyncd.conf
Файл rsyncd.conf – это файл конфигурации работы rsync при запуске этой программы в качестве демона (службы).
Файл rsyncd.conf управляет аутентификацией, доступом, ведением журнала, доступными для резервного копирования файлами и доступными модулями.
Формат файла rsyncd.conf
Файл состоит из модулей и параметров. Модуль начинается с имени модуля в квадратных скобках и продолжается до начала следующего модуля. Модули содержат параметры в форме имя = значение.
Файл основан на строках, то есть каждая строчка, завершающаяся символом новой строки, представляет собой либо комментарий, либо имя модуля, либо параметр.
Только первый знак равенства в параметре имеет значение. Пробелы до или после первого знака равенства отбрасываются. Начальные, конечные и внутренние пробелы в именах модулей и параметров не имеют значения. Начальные и конечные пробелы в значении параметра отбрасываются. Внутренние пробелы в значении параметра сохраняются дословно.
Любая строка, начинающаяся с решётки (#), игнорируется, как и строки, содержащие только пробелы. (Если решётка стоит после чего-либо, кроме начального пробела, она считается частью содержимого строки.)
Любая строка, заканчивающаяся на \, «продолжается» на следующей строке в обычном стиле UNIX.
Значения, следующие за знаком равенства в параметрах, являются либо строкой (кавычки не требуются), либо логическим значением, которое может быть задано как yes/no, 1/0 или true/false. Регистр не имеет значения в логических значениях, но сохраняется в строковых значениях.
Запуск службы rsync (rsyncd)
Запуск демона (службы) rsync в оболочке
Демон rsync запускается путём указания опции --daemon для команды rsync.
Демон должен работать с привилегиями root, если вы хотите использовать chroot, привязаться к порту с номером ниже 1024 (по умолчанию 873) или установить владельца файла. В противном случае он должен иметь разрешение только на чтение и запись соответствующих файлов данных, журнала и блокировки.
Вы можете запустить демон в терминале с помощью команды:
rsync --daemon
Другими способами запуска демона являются systemd и inetd.
Запуск демона (службы) rsync с помощью Systemd
Для запуска службы rsync вы можете использовать следующую команду:
sudo systemctl start rsyncd.service
Для добавления службы rsync в автозагрузку выполните команду:
sudo systemctl enable rsyncd.service
В предыдущих командах служба rsync будет запущена и работать непрерывно — даже в то время, когда она не используется.
Вы также можете активировать сокет для rsync. В этом случае ОС будет прослушивать порт, который использует служба rsync, и будет запускать службу rsync только в те периоды, когда имеется входящее подключение для службы rsync. В остальное время служба будет остановлена — это позволяет сберегать ресурсы сервера (компьютера).
Для активации сокета rsync выполните команду:
sudo systemctl start rsyncd.socket
Для добавления активации сокета rsync в автозагрузку используется следующая команда:
sudo systemctl enable rsyncd.socket
Смотрите также: Как использовать Systemctl для управления службами Systemd и юнитами
Запуск демона (службы) rsync с помощью inetd
Примечание: в настоящее время многие пользователи перешли на xinetd (безопасный заменитель inetd) или rlinetd (ужасно перегруженная функциями замена inetd) или ucspi-tcp (инструменты командной строки для создания клиент-серверных приложений TCP) или что-то ещё.
Примечание 2: не на всех дистрибутивах Linux имеется inetd или xinetd. Если inetd или аналоги отсутствуют в вашей ОС, то используйте активацию сокетов Systemd для тех же самых целей, для которых используется inetd.
При запуске через inetd вы должны добавить строку вроде этой в файл /etc/services:
rsync 873/tcp
и одну строку вроде этой в /etc/inetd.conf:
rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon
Замените «/usr/bin/rsync» на путь к месту, где в вашей системе установлен rsync. Затем вам нужно будет отправить inetd сигнал HUP, чтобы сообщить ему о необходимости перечитать свой файл конфигурации.
Обратите внимание, что вам не следует отправлять демону rsync сигнал HUP, чтобы заставить его перечитать файл rsyncd.conf. Файл перечитывается при каждом клиентском подключении.
Глобальные параметры службы rsync
Первые параметры в файле (перед заголовком [МОДУЛЬ]) являются глобальными параметрами:
motd file
Этот параметр позволяет указать «сообщение дня» (MOTD) для отображения клиентам при каждом подключении. Обычно оно содержит информацию о сайте и любые юридические уведомления. По умолчанию файл MOTD отсутствует. Это можно переопределить с помощью параметра командной строки --dparam=motdfile=ФАЙЛ при запуске демона.
pid file
Этот параметр сообщает демону rsync о необходимости записать свой идентификатор процесса в этот файл. rsync блокирует файл, чтобы знать, когда можно безопасно перезаписать существующий файл.
Имя файла можно переопределить с помощью параметра командной строки --dparam=pidfile=ФАЙЛ при запуске демона.
port
Вы можете переопределить порт по умолчанию, который будет прослушивать демон, указав это значение (по умолчанию 873). Это значение игнорируется, если демон запускается inetd, и заменяется параметром командной строки --port.
address
Вы можете переопределить IP-адрес по умолчанию, который будет прослушивать демон, указав это значение. Это значение игнорируется, если демон запускается inetd, и заменяется параметром командной строки --address.
socket options
Этот параметр может доставить бесконечное удовольствие тем, кто любит настраивать свои системы до предела. Вы можете задать всевозможные параметры сокета, которые могут ускорить (или замедлить!) передачу данных. Прочтите страницу руководства для системного вызова setsockopt(), чтобы узнать подробности о некоторых параметрах, которые вы можете установить. По умолчанию не заданы специальные параметры сокета. Эти параметры также можно указать с помощью параметра командной строки --sockopts.
listen backlog
Вы можете переопределить значение backlog по умолчанию, когда демон прослушивает соединения. По умолчанию оно равно 5.
Вы также можете включить любые «Параметры модулей» в глобальную часть файла конфигурации, в этом случае предоставленное значение переопределит значение по умолчанию для этого параметра.
Вы можете использовать ссылки на переменные среды в значениях параметров. Ссылки %VAR% для строковых параметров будут развёрнуты как можно позже (когда строка впервые используется в программе), что позволяет использовать переменные, которые rsync устанавливает во время соединения, например, RSYNC_USER_NAME. Нестроковые параметры (например, настройки true/false) раскрываются при чтении из файла конфигурации. Если переменная не существует в среде или если последовательность символов не является допустимой ссылкой (например, непарный знак процента), необработанные символы передаются без изменений. Это помогает с обратной совместимостью и безопасностью (например, расширение несуществующей %VAR% до пустой строки в пути может привести к очень небезопасному пути). Самый безопасный способ вставить литерал % в значение – использовать %%.
Параметры модулей
После глобальных параметров следует определить несколько модулей, каждый модуль экспортирует дерево каталогов как символическое имя. Модули экспортируются путём указания имени модуля в квадратных скобках [ИМЯ_МОДУЛЯ], за которыми следуют параметры для этого модуля. Имя модуля не может содержать косую черту или закрывающую квадратную скобку. Если имя содержит пробел, каждая внутренняя последовательность пробелов будет заменена на один пробел, а начальные или конечные пробелы будут отброшены.
Также существует специальное имя модуля «[global]», которое не определяет модуль, а вместо этого переключается обратно в контекст глобальных настроек, где можно указать параметры по умолчанию. Поскольку каждый определённый модуль получает свой полный набор параметров как комбинацию значений по умолчанию, которые установлены в этой позиции в файле конфигурации, плюс свой собственный список параметров, использование раздела «[global]» может помочь поддерживать общие значения конфигурации для нескольких модулей.
Как и в случае с «Глобальные параметры службы rsync», вы можете использовать ссылки на переменные среды в значениях параметров. Подробности смотрите в указанном разделе.
comment
Этот параметр указывает строку описания, которая отображается рядом с именем модуля, когда клиенты получают список доступных модулей. По умолчанию комментарий отсутствует.
path
Этот параметр указывает каталог в файловой системе демона, который должен быть доступен в этом модуле. Вы должны указать этот параметр для каждого модуля в rsyncd.conf.
Если значение содержит элемент «/./», то путь будет разделен в этой точке на директорию которая станет считаться корневой и субдиректорию относительно новой корневой директории. Однако если use chroot установлен в false, то лишний dot dir (директория в виде точки) просто очищается из пути. Пример этой идиомы:
path = /var/rsync/./module1
Это (при включённом chroot) будет означать «/var/rsync» в качестве корневой директории и установит внутренний путь относительно новой корневой директории на «/module1».
Вы можете использовать в значении пути переменные среды, окружив имя переменной знаками процента. Вы даже можете ссылаться на переменную, которая устанавливается rsync при подключении пользователя. Например, следующая команда в пути будет использовать имя авторизовавшегося пользователя:
path = /home/%RSYNC_USER_NAME%
Это нормально, если путь включает внутренние пробелы — они будут сохранены дословно (что означает, что вам не следует пытаться их экранировать). Если в вашем конечном каталоге есть завершающий пробел (и это почему-то не то, что вы хотите исправить), добавьте завершающий слеш к пути, чтобы не потерять завершающий пробел.
use chroot
Если «use chroot» имеет значение true, демон rsync выполнит chroot (использует указанную директорию в качестве корневой) на «path» перед началом передачи файла с клиентом. Это даёт преимущество дополнительной защиты от возможных уязвимостей в реализации, но имеет недостатки, такие как необходимость привилегий суперпользователя, невозможность следовать символическим ссылкам, которые являются либо абсолютными, либо находятся вне нового корневого пути, и усложнение сохранения пользователей и групп по имени (смотрите ниже).
Если use chroot не задано, по умолчанию будет предпринята попытка включить chroot, но демону будет разрешено продолжить работу (после регистрации предупреждения) в случае сбоя. Единственным исключением из этого правила является случай, когда в пути модуля есть разделитель chroot «/./» — это приводит к тому, что неустановленное значение будет рассматриваться как true для этого модуля.
До rsync 3.2.7 значением по умолчанию было «true». Новое значение по умолчанию «unset» упрощает настройку демона rsync в качестве пользователя без прав root или запуск демона в системе, где chroot не работает. Явная установка значения «true» в rsyncd.conf всегда потребует успешного chroot.
Также можно указать dot-dir (точка в середине пути) в «path» модуля, чтобы указать, что вы хотите chdir на более раннюю часть пути, а затем обслуживать файлы из последней части пути (с очисткой и редактированием символических ссылок по умолчанию). Это может быть полезно, если вам нужны некоторые библиотечные каталоги внутри chroot (обычно для поиска uid и gid), но вы не хотите помещать каталог lib в начало обслуживаемого пути (даже если их можно скрыть с помощью директивы exclude). Однако лучшим выбором для современной настройки rsync будет использование «конвертера имён» и попытка полностью избежать внутренних каталогов lib. Смотрите также параметр daemon chroot, который заставляет rsync переходить в свою собственную область chroot перед выполнением chroot, связанного с path.
Если демон обслуживает каталог «/» (либо напрямую, либо из-за того, что chroot находится в пути модуля), rsync не выполняет никакой очистки пути или (по умолчанию) делает munge symlinks.
Когда ему нужно ограничить доступ к определённому подкаталогу (либо из-за того, что chroot отключён, либо из-за того, что установлен внутренний путь chroot), rsync модифицирует (делает безопасными) символические ссылки (по умолчанию) и делает безопасными пути пути. Те, кому не нравятся модификация символических ссылок (и кто действительно, действительно верит, что их пользователи не выйдут из подкаталога), могут отключить модификацию (munge) символических ссылок с помощью параметра «munge symlinks».
Когда rsync очищает пути, он обрезает элементы пути «..» из аргументов, которые могут выйти за пределы директории, предназначенной для копирования. Он также заменяет начальные слеши в абсолютных путях на путь модуля (чтобы такие параметры, как --backup-dir и --compare-dest, интерпретировали абсолютный путь как корневой в каталоге «path» модуля).
Когда действует chroot и параметр «name converter» не установлен, параметр «numeric ids» будет по умолчанию включён (отключая поиск имён). Это означает, что если вы вручную настраиваете библиотеки поиска имён в своём chroot (вместо использования преобразователя имён), вам нужно явно задать numeric ids = false для rsync, чтобы выполнять поиск имён.
Если вы копируете ресурсы библиотеки в область новой корневой директории модуля, вы должны защитить их с помощью обычных настроек пользователя/группы или ACL вашей ОС (чтобы пользователь модуля rsync не мог их изменить), а затем скрыть их от пользователя с помощью «exclude» (смотрите как в обсуждении этого параметра). Однако проще и безопаснее настроить преобразователь имён.
daemon chroot
Этот параметр указывает путь, по которому демон будет делать chroot (установит директорию в качестве корневой) перед началом взаимодействия с клиентами. Пути модулей (и любые настройки «use chroot») затем будут связаны с этой директорией. Это позволяет вам выбрать, хотите ли вы, чтобы весь демон был заперт в новой корневой директории, только передачи были заперты в новой корневой директории (с «use chroot») или и то, и другое. Имейте в виду, что для области «daemon chroot» могут потребоваться различные установленные файлы OS/lib/etc, чтобы демон мог функционировать. По умолчанию демон работает без chroot.
proxy protocol
Если этот параметр включён, все входящие соединения должны начинаться с заголовка протокола proxy V1 или V2. Если заголовок не найден, соединение закрывается.
При установке этого параметра в значение true требуется, чтобы прокси-сервер пересылал информацию об исходном IP-адресе в rsync, что позволяет регистрировать правильную информацию об IP/хосте и использовать клиентоориентированные ограничения IP. Значение по умолчанию false означает, что информация об IP поступает непосредственно из метаданных сокета. Если rsync не находится за прокси-сервером, его следует отключить.
ВНИМАНИЕ: использование этого параметра может быть опасным, если вы не гарантируете, что только прокси-серверу разрешено подключаться к порту rsync. Если разрешены любые непрокси-подключения, клиент сможет использовать изменённый rsync для подмены любого удалённого IP-адреса по своему желанию. Вы можете заблокировать это с помощью чего-то вроде правил iptables -uid-owner root (для строгого доступа к локальному хосту), различных правил брандмауэра или можете потребовать авторизацию пароля, чтобы любой спуфинг со стороны пользователей не предоставил дополнительный доступ.
Этот параметр является глобальным. Если вам нужно, чтобы некоторые модули требовали этого, а другие нет, вам нужно будет настроить несколько процессов демона rsync на разных портах.
name converter
Этот параметр позволяет вам указать программу, которая будет запущена демоном rsync для выполнения преобразований пользователей и групп между именами и идентификаторами. Этот скрипт запускается до настройки chroot и работает как пользователь демона (не пользователь передачи). Вы можете указать полностью определённый путь или имя программы, которое находится в $PATH.
Программу можно использовать для выполнения обычных поисков пользователей и групп без необходимости помещать какие-либо дополнительные файлы в область chroot модуля, или вы можете выполнять настраиваемые преобразования.
Программа nameconvert имеет доступ ко всем переменным среды, которые описаны в разделе pre-xfer exec. Это полезно, если вы хотите настроить преобразование, используя информацию о модуле и/или запросе на копирование.
В каталоге support есть пример скрипта python с именем «nameconvert» (https://github.com/RsyncProject/rsync/blob/master/support/nameconvert), который реализует обычные поиски пользователей и групп. Можете свободно настраивать его или просто использовать в качестве документации для реализации собственного.
numeric ids
Включение этого параметра отключает сопоставление пользователей и групп по имени для текущего модуля демона. Это не позволяет демону пытаться загрузить какие-либо файлы или библиотеки, связанные с пользователями/группами. Это включение заставляет передачу вести себя так, как будто клиент передал параметр командной строки --numeric-ids. По умолчанию этот параметр включён для модулей chroot и отключён для модулей без chroot. Также имейте в виду, что сохранение uid/gid требует, чтобы модуль был запущен как root (смотрите «uid») или для настройки «fake super».
Модуль с поддержкой chroot не должен иметь этот параметр, установленный на false, если вы не используете программу «name converter» или не предприняли шаги для обеспечения того, чтобы у модуля были необходимые ресурсы для преобразования имён, и чтобы пользователь не мог изменить эти ресурсы.
munge symlinks
Этот параметр сообщает rsync о необходимости изменения всех символических ссылок таким же образом, как и параметр командной строки (не влияющий на демон) --munge-links (используя метод, описанный ниже). Это должно помочь защитить ваши файлы от пользовательских уловок, когда ваш модуль демона доступен для записи. Значением по умолчанию является disabled (отключено), когда включено «use chroot» с внутренним путём chroot «/», ИЛИ если включён «daemon chroot», в противном случае он включён.
Если вы отключите этот параметр на демоне, который не доступен только для чтения, есть трюки, которые пользователь может проделать с загруженными символическими ссылками для доступа к элементам, исключённым из демона (если они есть в вашем модуле), и, если «use chroot» выключен, rsync можно даже обмануть, заставив его показать или изменить данные, которые находятся за пределами пути модуля (насколько позволяют права доступа).
Способ, которым rsync отключает использование символических ссылок, заключается в добавлении к каждой из них префикса строки «/rsyncd-munged/». Это предотвращает использование ссылок, пока этот каталог не существует. Когда этот параметр включён, rsync откажется запускаться, если этот путь является каталогом или символической ссылкой на каталог. При использовании параметра «munge symlinks» в chroot-области, которая имеет внутренний chroot-путь «/», вы должны добавить «/rsyncd-munged/» в настройку исключения для модуля, чтобы пользователь не мог попытаться создать его.
Примечание: rsync не пытается проверить, что любые уже существующие символические ссылки в иерархии модуля настолько безопасны, насколько вы хотите (если, конечно, он просто не скопировал всю иерархию). Если вы настраиваете демон rsync в новой области или локально добавляете символические ссылки, вы можете вручную защитить свои символические ссылки от злоупотребления, добавив префикс «/rsyncd-munged/» к началу каждого значения символической ссылки. В каталоге support с исходным кодом есть скрипт perl с именем «munge-symlinks» (https://github.com/RsyncProject/rsync/blob/master/support/munge-symlinks), который можно использовать для добавления или удаления этого префикса из ваших символических ссылок.
Если этот параметр отключён в доступном для записи модуле и «use chroot» выключен (или внутренний путь chroot не равен «/»), входящие символические ссылки будут изменены, чтобы удалить начальный слеш и удалить элементы пути «..», которые, по мнению rsync, позволят символической ссылке выйти за пределы иерархии модуля. Однако существуют хитрые способы обойти это, поэтому вам лучше доверять своим пользователям, если вы выберете эту комбинацию параметров.
charset
Эта настройка указывает имя набора символов, в котором хранятся имена файлов модуля. Если клиент использует параметр --iconv, демон будет использовать значение параметра «charset» независимо от набора символов, который фактически передал клиент. Это позволяет демону поддерживать преобразование набора символов в модуле chroot без дополнительных файлов в области chroot, а также гарантирует, что преобразование имён выполняется согласованным образом. Если параметр «charset» не установлен, параметр --iconv отклоняется, как если бы параметр «iconv» был указан через «refuse options».
Если вы хотите заставить пользователей всегда использовать --iconv для определённого модуля, добавьте «no-iconv» к параметру «refuse options». Помните, что это ограничит доступ к вашему модулю для совсем новых клиентов rsync.
max connections
Этот параметр позволяет указать максимальное количество одновременных подключений, которые вы разрешите. Все клиенты, подключающиеся после достижения максимума, получат сообщение с предложением попробовать позже. Значение по умолчанию – 0, что означает отсутствие ограничений. Отрицательное значение отключает модуль. Смотрите также параметр «lock file».
log file
Если параметр «log file» установлен на непустую строку, демон rsync будет регистрировать сообщения в указанном файле, а не использовать syslog. Это особенно полезно в системах (таких как AIX), где syslog() не работает для программ с chroot. Файл открывается до вызова chroot(), что позволяет разместить его вне передачи. Если это значение установлено на уровне модуля, а не глобально, глобальный журнал всё равно будет содержать любые ошибки авторизации или сообщения об ошибках файла конфигурации.
Если демону не удаётся открыть указанный файл, он вернётся к использованию syslog и выведет ошибку об этой неудаче. (Обратите внимание, что неспособность открыть указанный файл журнала раньше считалась фатальной ошибкой.)
Этот параметр можно переопределить с помощью параметров командной строки --log-file=ФАЙЛ или --dparam=logfile=ФАЙЛ. Первый переопределяет все параметры файла журнала демона и все настройки модуля. Последний устанавливает файл журнала демона и значение по умолчанию для всех модулей, что по-прежнему позволяет модулям переопределять настройки по умолчанию.
syslog facility
Этот параметр позволяет указать имя средства syslog, которое будет использоваться при регистрации сообщений от демона rsync. Вы можете использовать любое стандартное имя средства syslog, которое определено в вашей системе. Распространённые имена: auth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, syslog, user, uucp, local0, local1, local2, local3, local4, local5, local6 и local7. Значение по умолчанию — daemon. Этот параметр не действует, если параметр «log file» представляет собой непустую строку (заданную в настройках для каждого модуля или унаследованную от глобальных настроек).
syslog tag
Этот параметр позволяет указать тег syslog, который будет использоваться при регистрации сообщений от демона rsync. Значение по умолчанию – «rsyncd». Эта настройка не действует, если настройка «log file» – непустая строка (заданная в настройках для каждого модуля или унаследованная из глобальных настроек).
Например, если вы хотите, чтобы имя каждого аутентифицированного пользователя было включено в тег syslog, вы можете сделать что-то вроде этого:
syslog tag = rsyncd.%RSYNC_USER_NAME%
max verbosity
Этот параметр позволяет вам контролировать максимальный объем подробной информации, которую вы позволите демону генерировать (так как информация попадает в файл журнала). Значение по умолчанию – 1, что позволяет клиенту запрашивать один уровень детализации.
Это также влияет на возможность пользователя запрашивать более высокие уровни ведения журнала --info и --debug. Если максимальное значение равно 2, то никакие информационные и/или отладочные значения, которые выше, чем те, которые были бы установлены -vv, не будут учитываться демоном в его журнале. Чтобы узнать, какой уровень детализации вам нужно принять для определённого уровня информации/отладки, смотрите
rsync --info=help rsync --debug=help
Например, для вывода отладочных данных TIME2 и FLIST3 требуется max-verbosity 4.
lock file
Этот параметр указывает файл, который следует использовать для поддержки параметра «max connections». Демон rsync использует блокировку записей в этом файле, чтобы гарантировать, что максимальный лимит подключений не будет превышен для модулей, совместно использующих файл блокировки. Значение по умолчанию – /var/run/rsyncd.lock.
read only
Этот параметр определяет, смогут ли клиенты загружать файлы или нет. Если «read only» установлен на true, то любые попытки загрузки будут неудачными. Если «read only» установлен на false, то загрузки будут возможны, если разрешения на файлы на стороне демона это позволяют. По умолчанию все модули доступны только для чтения.
Обратите внимание, что «auth users» может переопределить эту настройку для каждого пользователя.
write only
Этот параметр определяет, смогут ли клиенты выгружать файлы или нет. Если «write only» установлен на true, то любые попытки загрузки будут неудачными. Если «write only» установлен на false, то загрузки будут возможны, если разрешения на файлы на стороне демона это позволяют. По умолчанию этот параметр отключён.
Полезный совет: вы, вероятно, захотите указать «refuse options = delete» для модуля, доступного только для записи.
open noatime
Если установлено значение True, этот параметр сообщает демону rsync открывать файлы с флагом O_NOATIME (в системах, которые его поддерживают), чтобы избежать изменения времени доступа к передаваемым файлам. Если ваша ОС не поддерживает флаг O_NOATIME, то rsync будет молча игнорировать эту опцию. Обратите внимание также, что некоторые файловые системы монтируются, чтобы избежать обновления atime при доступе на чтение, даже если флаг O_NOATIME не установлен.
Если установлено значение False, этот параметр гарантирует, что файлы на сервере не будут открываться с O_NOATIME.
Если установлено значение Unset (по умолчанию), пользователь управляет настройкой через --open-noatime.
list
Этот параметр определяет, будет ли этот модуль указан, когда клиент запрашивает список доступных модулей. Кроме отсутствия модуля в списке при значении установленном на false, дополнительно демон будет делать вид, что модуль не существует, когда клиент, которому отказано с помощью «hosts allow» или «hosts deny», пытается получить к нему доступ. Помните, что если reverse lookup отключён глобально, но включён для модуля, то результирующий reverse lookup к потенциально контролируемому клиентом DNS-серверу всё равно может показать клиенту, что он попал в существующий модуль. По умолчанию модули доступны для перечисления.
uid
Этот параметр указывает имя пользователя или идентификатор пользователя, который должен передавать файлы в этот модуль и из него, как при запуске демона от имени root. В сочетании с параметром «gid» это определяет доступные разрешения для файлов. По умолчанию при запуске суперпользователем переключается на пользователя «nobody» системы. По умолчанию для не-суперпользователя не пытаться изменить пользователя. Смотрите также параметр «gid».
Переменная среды RSYNC_USER_NAME может использоваться для запроса на запуск rsync от имени авторизующего пользователя. Например, если вы хотите, чтобы rsync запускался от имени того же пользователя, который был получен для аутентификации rsync, эта настройка будет полезна:
uid = %RSYNC_USER_NAME% gid = *
gid
Этот параметр указывает одно или несколько имён/идентификаторов групп, которые будут использоваться при доступе к модулю. Первое будет группой по умолчанию, а все дополнительные будут установлены как дополнительные группы. Вы также можете указать «*» в качестве первого gid в списке, который будет заменён всеми нормальными группами для пользователя от чьего имени выполняется перенос (смотрите «uid»). По умолчанию при запуске суперпользователем переключается на группу «nobody» (или, возможно, "nogroup") вашей ОС без других дополнительных групп. По умолчанию для не-суперпользователя не изменяет атрибуты группы (и действительно, ваша ОС может не позволить не-суперпользователю пытаться изменить настройки своей группы).
Указанный список обычно разбивается на токены на основе пробелов и запятых. Однако, если список начинается с запятой, то список разбивается только на запятые, что позволяет имени группы содержать пробел. В любом случае все начальные и/или конечные пробелы удаляются из токенов, а пустые токены игнорируются.
daemon uid
Этот параметр указывает uid, под которым будет работать демон. Обычно демон работает как пользователь root, и если этот параметр не задан, пользователь остаётся неизменным. Смотрите также параметр «uid».
daemon gid
Этот параметр указывает gid, под которым будет работать демон. Обычно демон работает как группа root, и если этот параметр не задан, группа остаётся неизменной. Смотрите также параметр «gid».
fake super
Установка «fake super = yes» для модуля заставляет сторону демона вести себя так, как будто была указана опция командной строки --fake-super. Это позволяет сохранять полные атрибуты файла без необходимости фактического запуска демона как root.
filter
У демона есть собственная цепочка фильтров, которая определяет, к каким файлам он предоставит доступ клиенту. Эта цепочка не отправляется клиенту и не зависит от любых фильтров, которые мог указать клиент. Файлы, исключённые цепочкой фильтров демона (файлы daemon-excluded), рассматриваются как несуществующие, если клиент пытается их скачать; также они пропускаются с сообщением об ошибке, если клиент пытается их отправить (при этом вызывается код выхода 23); и ещё эти файлы никогда не удаляются из модуля. Вы можете использовать фильтры демона, чтобы запретить клиентам загружать или изменять личные административные файлы, такие как файлы, которые вы можете добавить для поддержки переводов имён uid/gid.
Цепочка фильтров демона строится из параметров «filter», «include from», «include», «exclude from» и «exclude» в указанном порядке приоритета. Закреплённые шаблоны закрепляются в корне модуля. Чтобы предотвратить доступ ко всему поддереву, например, «/secret», вы должны исключить всё в поддереве; самый простой способ сделать это — использовать шаблон с тремя звёздами, например «/secret/***».
Параметр «filter» принимает разделённый пробелами список правил фильтра демона, и он достаточно умён, чтобы знать, что не следует разделять токен на внутреннем пробеле в правиле (например, «- /foo - /bar» анализируется как два правила). Вы можете указать одно или несколько правил merge-file, используя обычный синтаксис. Только один параметр «filter» может применяться к данному модулю в файле конфигурации, поэтому поместите все нужные вам правила в один параметр. Обратите внимание, что правила merge-file для каждого каталога не обеспечивают такой же защиты, как глобальные правила, но их можно использовать, чтобы --delete работал лучше во время операции загрузки клиентом, если merge-файлы для каждого каталога включены в передачу и клиент запрашивает их использование.
exclude
Этот параметр принимает разделённый пробелами список шаблонов исключения демона. Как и в случае с клиентской опцией --exclude, шаблоны могут быть квалифицированы с помощью «-» или «+», чтобы явно указать исключить/включить. У каждого модуля может быть только один параметр «exclude». Смотрите параметр «filter» для описания того, как исключённые файлы влияют на демон.
include
Используйте «include», чтобы переопределить эффекты параметра «exclude». У каждого модуля может быть только один параметр «include». Смотрите параметр «filter» для описания того, как исключённые файлы влияют на демон.
exclude from
Этот параметр указывает имя файла в демоне, который содержит шаблоны исключения демона, по одному на строку. У каждого модуля может быть только один параметр «exclude from»; если у вас есть несколько файлов exclude-from, вы можете указать их как файл слияния в параметре «filter». Смотрите параметр «filter» для описания того, как исключённые файлы влияют на демон.
include from
Аналог «exclude from» для файла демона с шаблонами включения. У каждого модуля может быть только один параметр «include from». Смотрите параметр "filter" для описания того, как исключённые файлы влияют на демон.
input chmod
Этот параметр позволяет указать набор разделённых запятыми строк chmod, которые повлияют на разрешения всех входящих файлов (файлов, которые получает демон). Эти изменения происходят после всех других вычислений разрешений, и это даже переопределит разрешения по умолчанию назначения и/или существующие разрешения, если клиент не указал --perms. Смотрите описание параметра --chmod утилиты rsync и страницу руководства chmod(1) для получения информации о формате этой строки.
outgoing chmod
Этот параметр позволяет указать набор разделённых запятыми строк chmod, которые повлияют на разрешения всех исходящих файлов (файлов, которые отправляются демоном). Эти изменения происходят первыми, из-за чего отправленные разрешения кажутся отличными от тех, которые хранятся в самой файловой системе. Например, вы можете отключить групповые разрешения на запись на сервере, при этом они будут выглядеть включённым для клиентов. Смотрите описание параметра --chmod утилиты rsync и страницу руководства chmod(1) для получения информации о формате этой строки.
auth users
Этот параметр указывает список правил авторизации, разделённых запятыми и/или пробелами. В простейшей форме вы перечисляете имена пользователей, которым будет разрешено подключаться к этому модулю. Имена пользователей не обязательно должны существовать в локальной системе. Правила могут содержать подстановочные знаки оболочки, которые будут сопоставляться с именем пользователя, предоставленным клиентом для аутентификации. Если установлено «auth users», то клиенту будет предложено предоставить имя пользователя и пароль для подключения к модулю. Для этого обмена используется протокол аутентификации с ответом на вызов (challenge response authentication protocol). Имена пользователей и пароли в виде простого текста хранятся в файле, указанном параметром «secrets file». По умолчанию все пользователи могут подключаться без пароля (это называется «anonymous rsync»).
В дополнение к сопоставлению имени пользователя вы можете указать сопоставление имени группы с помощью префикса «@». При использовании сопоставления имени группы имя пользователя аутентификации должно быть реальным пользователем в системе, иначе будет считаться, что он не является членом ни одной группы. Например, указание «@rsync» будет соответствовать выполняющему аутентификацию пользователю, если указанный пользователь является членом группы rsync.
Наконец, параметры могут быть указаны после двоеточия (:). Параметры позволяют вам «deny» пользователю или группе, установить доступ «ro» (только чтение) или установить доступ «rw» (чтение/запись). Установка параметра ro/rw, специфичного для правила аутентификации, переопределяет настройку модуля «read only».
Обязательно размещайте правила в том порядке, в котором вы хотите, чтобы они сопоставлялись, поскольку проверка останавливается на первом совпадающем пользователе или группе, и это единственная проверяемая аутентификация. Например:
auth users = joe:deny @guest:deny admin:rw @rsync:ro susan joe sam
В приведённом выше правиле пользователю joe будет отказано в доступе, несмотря ни на что. Любому пользователю, входящему в группу «guest», также отказано в доступе. Пользователь «admin» получает доступ в режиме чтения/записи, но только если пользователь admin не входит в группу «guest» (потому что правило соответствия пользователя admin никогда не будет достигнуто, если пользователь входит в группу «guest»). Любой другой пользователь, входящий в группу «rsync», получит доступ только для чтения. Наконец, пользователи susan, joe и sam получают настройку ro/rw модуля, но только если пользователь не соответствует предыдущему правилу соответствия группы.
Если вам нужно указать имя пользователя или группы с пробелом в нем, начните свой список с запятой, чтобы указать, что список должен быть разделен только запятыми (хотя начальные и конечные пробелы также будут удалены, а пустые записи просто игнорируются). Например:
auth users = , joe:deny, @Some Group:deny, admin:rw, @RO Group:ro
Смотрите описание «secrets file», чтобы узнать, как можно иметь пароли для каждого пользователя, а также пароли для каждой группы. В нем также объясняется, как пользователь может пройти аутентификацию, используя свой пароль пользователя или (когда применимо) пароль группы, в зависимости от того, какое правило аутентифицируется.
Смотрите также раздел под названием «Использование функций rsync демона (службы) через подключение удалённой оболочки» для получения информации о том, как обрабатывать имя пользователя указанное в конфигурационном файле rsyncd.conf, которое отличается от имени пользователя удалённой оболочки при использовании удалённой оболочки для подключения к демону rsync.
secrets file
Этот параметр указывает имя файла, содержащего пары «имя пользователя:пароль» и/или «@имя_группы:пароль», используемые для аутентификации этого модуля. Этот файл просматривается только в том случае, если указан параметр «auth users». Файл состоит из строк и содержит одну пару имя:пароль на строку. Любая строка имеющая решётку (#), в качестве самого первого символа в строке считается комментарием и пропускается. Пароли могут содержать любые символы, но учтите, что многие операционные системы ограничивают длину паролей, которые можно ввести на стороне клиента, поэтому вы можете обнаружить, что пароли длиннее 8 символов не работают.
Использование строк, специфичных для группы, имеет значение только тогда, когда модуль авторизуется с использованием соответствующего правила «@имя_группы». Когда это происходит, пользователь может быть авторизован либо через свою строку «имя пользователя:пароль», либо через строку «@имя_группы:пароль» для группы, которая инициировала аутентификацию.
Вы сами решаете, какие записи паролей вы хотите включить: пользователей, группы или и то, и другое. Использование правил группы в «auth users» не требует указания пароля группы, если вы не хотите использовать общие пароли.
Для параметра «secrets file» нет значения по умолчанию, необходимо выбрать имя (например, /etc/rsyncd.secrets). Обычно файл не должен быть доступен для чтения «other»; смотрите «strict modes». Если файл не найден или отклонён, вход в систему для модуля «auth users» будет невозможен.
strict modes
Этот параметр определяет, будут ли проверяться разрешения на доступ к secrets file. Если «strict modes» имеет значение true, то secrets file не должен быть доступен для чтения ни одному пользователю, кроме того, под которым запущен демон rsync. Если «strict modes» имеет значение false, проверка не выполняется. Значение по умолчанию – true. Этот параметр был добавлен для обеспечения работы rsync в операционной системе Windows.
hosts allow
Этот параметр позволяет указать список шаблонов, разделённых запятыми и/или пробелами, которые сопоставляются с именем хоста и IP-адресом подключающегося клиента. Если ни один из шаблонов не совпадает, соединение отклоняется.
Каждый шаблон может быть в одной из шести форм:
- десятичный IPv4-адрес с точками в форме a.b.c.d или IPv6-адрес в форме a:b:c::d:e:f. В этом случае IP-адрес входящей машины должен точно совпадать.
- адрес/маска в форме ipaddr/n, где ipaddr – это IP-адрес, а n – это количество единичных бит в сетевой маске. Все IP-адреса, соответствующие замаскированному IP-адресу, будут разрешены.
- адрес/маска в форме ipaddr/maskaddr, где ipaddr – это IP-адрес, а maskaddr – это сетевая маска в десятичной записи с точками для IPv4 или аналогичной для IPv6, например, ffff:ffff:ffff:ffff:: вместо /64. Все IP-адреса, соответствующие замаскированному IP-адресу, будут разрешены.
- шаблон имени хоста с использованием подстановочных знаков. Если имя хоста подключающегося IP-адреса (определённое обратным поиском (reverse lookup)) совпадает с подстановочным именем (используя те же правила, что и для обычного сопоставления имён файлов Unix), клиенту разрешён вход. Это работает только в том случае, если включён «reverse lookup» (по умолчанию).
- имя хоста. Простое имя хоста сопоставляется с обратным DNS (reverse DNS) подключающегося IP (если включён «reverse lookup»), и/или IP заданного имени хоста сопоставляется с подключающимся IP (если включён «forward lookup», как по умолчанию). Любое совпадение будет разрешено.
- «@», за которым следует имя сетевой группы, которое будет совпадать, если обратный DNS подключающегося IP находится в указанной сетевой группе.
Примечание. Адреса IPv6 link-local могут иметь область действия в спецификации адреса:
fe80::1%link1 fe80::%link1/64 fe80::%link1/ffff:ffff:ffff:ffff::
Вы также можете объединить «hosts allow» с «hosts deny» как способ добавления исключений в ваш список запрещённых. Когда указаны оба параметра, сначала проверяется параметр «hosts allow», и совпадение приводит к тому, что клиент может подключиться. Затем неразрешенный хост сопоставляется со списком «hosts deny», чтобы определить, следует ли его отклонить. Хост, который не соответствует ни одному из списков, может подключиться.
По умолчанию параметр «hosts allow» отсутствует, что означает, что все хосты могут подключаться.
hosts deny
Этот параметр позволяет указать список шаблонов, разделённых запятыми и/или пробелами, которые сопоставляются с именем хоста и IP-адресом подключающегося клиента. Если шаблон совпадает, то подключение отклоняется. Подробнее смотрите в параметре «hosts allow».
По умолчанию параметр «hosts deny» отсутствует, что означает, что все хосты могут подключаться.
reverse lookup
Управляет тем, выполняет ли демон обратный просмотр (reverse lookup) IP-адреса клиента для определения его имени хоста, которое используется для проверок «hosts allow» и «hosts deny» и для записей в журнале которые обозначаются как «%h». По умолчанию эта функция включена, но вы можете отключить её, чтобы сэкономить время, если знаете, что поиск не вернёт полезного результата, в этом случае демон будет использовать имя «UNDETERMINED».
Если этот параметр включён глобально (даже по умолчанию), rsync выполняет поиск, как только подключается клиент, поэтому отключение его для модуля не позволит избежать поиска. Таким образом, вы, вероятно, захотите отключить его глобально, а затем включить для модулей, которым нужна эта информация.
forward lookup
Управляет тем, выполняет ли демон прямой просмотр (forward lookup) любого имени хоста, указанного в настройке hosts allow/deny. По умолчанию эта функция включена, что позволяет использовать явное имя хоста, которое не будет возвращено обратным DNS подключающегося IP-адреса.
ignore errors
Этот параметр сообщает rsyncd, что нужно игнорировать ошибки ввода-вывода на демоне при принятии решения о том, запускать ли фазу удаления передачи. Обычно rsync пропускает шаг --delete, если произошли какие-либо ошибки ввода-вывода, чтобы предотвратить катастрофическое удаление из-за временной нехватки ресурсов или другой ошибки ввода-вывода. В некоторых случаях эта проверка контрпродуктивна, поэтому вы можете использовать этот параметр, чтобы отключить такое поведение.
ignore nonreadable
Это сообщает демону rsync полностью игнорировать файлы, которые не могут быть прочитаны пользователем. Это полезно для публичных архивов, которые могут содержать некоторые нечитаемые файлы среди каталогов, и системный администратор вообще не хочет, чтобы эти файлы были видны.
transfer logging
Этот параметр включает пофайловое ведение журнала загрузок и выгрузок в формате, несколько похожем на тот, который используют демоны ftp. Демон всегда регистрирует передачу в конце, поэтому, если передача будет прервана, в файле журнала не будет никаких упоминаний.
Если вы хотите настроить строки журнала, смотрите параметр «log format».
log format
Этот параметр позволяет указать формат, используемый для регистрации передач файлов, когда включено ведение журнала передачи. Формат представляет собой текстовую строку, содержащую встроенные односимвольные escape-последовательности с префиксом в виде символа процента (%). Также можно указать необязательную ширину числового поля между процентом и escape-буквой (например, «%-50n %8l %07p»). Кроме того, перед числовым escape-символом можно указать один или несколько апострофов, чтобы указать, что числовое значение должно быть более удобочитаемым. 3 поддерживаемых уровня такие же, как для параметра командной строки --human-readable, хотя по умолчанию удобочитаемость отключена. Каждый добавленный апостроф увеличивает уровень (например, «%''l %'b %f»).
Формат журнала по умолчанию – «%o %h [%a] %m (%u) %f %l», а при использовании параметра «log file» всегда добавляется префикс «%t [%p] ». (Скрипт perl, который обобщает этот формат журнала по умолчанию, включён в исходный код rsync в подкаталоге «support»: rsyncstats (https://github.com/RsyncProject/rsync/blob/master/support/rsyncstats).)
Односимвольные экранированные последовательности, которые распознаются, следующие:
- %a удалённый IP-адрес (доступно только для демона)
- %b количество фактически переданных байтов
- %B биты разрешений файла (например, rwxrwxrwt)
- %c общий размер контрольных сумм блоков, полученных для базового файла (только при отправке)
- %C полная контрольная сумма файла, если она известна для файла. Для старых протоколов/версий rsync контрольная сумма была солёной, и поэтому не является полезным значением (и не отображается в этом случае). Для вывода контрольной суммы для файла либо должна быть включена опция --checksum, либо файл должен быть передан без использования солёной контрольной суммы. Смотрите опцию --checksum-choice для выбора алгоритма.
- %f имя файла (длинная форма у отправителя; без завершающего "/")
- %G gid файла (десятичный) или «DEFAULT»
- %h имя удалённого хоста (доступно только для демона)
- %i подробный список того, что обновляется
- %l длина файла в байтах
- %L строка, которая может быть « -> SYMLINK», « => HARDLINK» или «» (где SYMLINK или HARDLINK – это имя файла)
- %m имя модуля
- %M время последнего изменения файла
- %n имя файла (короткая форма; с завершающим «/» у директорий)
- %o операция, которая является «send», «recv» или «del.» (последнее включает конечную точку)
- %p идентификатор процесса этого сеанса rsync
- %P путь к модулю
- %t текущая дата и время
- %u имя аутентифицированного пользователя или пустая строка
- %U uid файла (десятичный)
Список того, что означают символы, выводимые «%i», смотрите в параметре --itemize-changes на странице руководства rsync.
Обратите внимание, что некоторые из записанных выходных данных изменяются при работе со старыми версиями rsync. Например, удалённые файлы выводились только в виде подробных сообщений до rsync 2.6.4.
timeout
Этот параметр позволяет переопределить выбор клиента для тайм-аута ввода-вывода для этого модуля. Используя этот параметр, вы можете гарантировать, что rsync не будет ждать мёртвого клиента вечно. Тайм-аут указывается в секундах. Значение ноль означает отсутствие тайм-аута и является значением по умолчанию. Хорошим выбором для анонимных демонов rsync может быть 600 (что даёт тайм-аут в 10 минут).
refuse options
Этот параметр позволяет указать разделённый пробелами список опций командной строки rsync, которые будут отклонены вашим демоном rsync. Вы можете указать полное имя опции, её однобуквенное сокращение или строку подстановочных знаков, которая соответствует нескольким опциям. Начиная с версии 3.2.0, вы также можете отменить условие соответствия, начав его с «!».
Когда опция отклонена, демон выводит сообщение об ошибке и завершает работу.
Например, это отклонит --checksum (-c) и все различные параметры удаления:
refuse options = c delete
Причина, по которой вышеприведённый код отклоняет все параметры удаления, заключается в том, что параметры подразумевают --delete, а подразумеваемые параметры отклоняются так же, как и явные параметры.
Использование отрицательных соответствий позволяет вам точно настроить ваши отказы после подстановочного знака, например:
refuse options = delete-* !delete-during
Отрицательное соответствие также может превратить ваш список отклонённых параметров в список принятых параметров. Для этого начните список с «*» (чтобы отклонить все параметры), а затем укажите одно или несколько отрицательных соответствий для принятия. Например:
refuse options = * !a !v !compress*
Не беспокойтесь, что «*» отклонит некоторые важные параметры, такие как --dry-run, --server, --no-iconv, --seclude-args и т. д. Эти важные параметры не сопоставляются с подстановочным знаком, поэтому их необходимо переопределить их точным именем. Например, если вы принудительно запускаете передачу iconv, вы можете использовать что-то вроде этого:
refuse options = * no-iconv !a !v
В качестве дополнительной помощи (начиная с версии 3.2.0) отказ (или «!отказ») от опции «a» или «archive» также влияет на все опции, которые подразумевает опция --archive (-rdlptgoD), но только если опция указана явно (без использования подстановочного знака). Если вы хотите сделать что-то сложное, вы можете использовать «archive*», чтобы избежать этого побочного эффекта, но имейте в виду, что ни один обычный клиент rsync никогда не отправляет фактическую опцию archive на сервер.
В качестве дополнительной функции безопасности отказ от «delete» также отклоняет remove-source-files, когда отправителем является демон; если вы хотите последний без первого, вместо этого отклоните «delete-*», так как это отклоняет все режимы удаления, не затрагивая --remove-source-files. (Помните, что опция клиента --delete обычно приводит к --delete-during.)
При отмене отказа от опций удаления следует либо указать «!delete*» (чтобы принять все опции удаления), либо указать ограниченный набор, включающий «delete», например:
refuse options = * !a !delete !delete-during
... тогда как это принимает любую опцию удаления, кроме --delete-after:
refuse options = * !a !delete* delete-after
Примечание об отказе от «compress»: может быть лучше установить параметр демона «dont compress» на «*» и убедиться, что RSYNC_COMPRESS_LIST=zlib установлен в среде демона, чтобы отключить сжатие молча, а не возвращать ошибку, которая заставляет клиента удалить опцию -z.
Если вы не отклоняете опцию сжатия, вам может понадобиться сопоставить «!compress*», если вы также хотите разрешить опцию --compress-level.
Обратите внимание, что опции «copy-devices» и «write-devices» отклоняются по умолчанию, но их можно явно принять с помощью «!copy-devices» и/или «!write-devices». Опции «log-file» и «log-file-format» принудительно отклоняются и не могут быть приняты.
Вот все опции, которые не сопоставляются с подстановочными знаками:
- --server: Требуется для работы rsync.
- --rsh, -e: Требуется для передачи флагов совместимости на сервер.
- --out-format: Требуется для передачи поведения вывода удалённому получателю. Хотя rsync передаёт старый псевдоним --log-format из соображений совместимости, эти опции не следует путать с --log-file-format.
- --sender: Используйте параметр «write only» вместо отказа от этого.
- --dry-run, -n: Кто захочет отключить это?
- --seclude-args, -s: Самый старый метод защиты аргументов.
- --from0, -0: Упрощает принятие/отклонение --files-from, не влияя на этот полезный модификатор.
- --iconv: Он автоматически отключается на основе параметра «charset».
- --no-iconv: Большинство передач используют этот параметр.
- --checksum-seed: Довольно редкий, безопасный параметр.
- --write-devices: Не охватывается подстановочным знаком, но также автоматически отключается.
dont compress
ПРИМЕЧАНИЕ: Этот параметр в настоящее время не имеет никакого эффекта, за исключением одного случая: если он установлен на «*», он минимизирует или отключает сжатие для всех файлов (для тех, кто не хочет полностью отказываться от параметра --compress).
Этот параметр позволяет выбирать имена файлов на основе шаблонов подстановочных знаков, которые не следует сжимать при скачивании файлов из демона (аналогичного параметра для управления отправкой файлов в демон не существует). Сжатие может быть затратным с точки зрения использования ЦП, поэтому обычно лучше не пытаться сжимать файлы, которые плохо сжимаются, например, уже сжатые файлы.
Параметр «dont compress» принимает разделённый пробелами список шаблонов подстановочных знаков без учёта регистра. Любое исходное имя файла, соответствующее одному из шаблонов, будет максимально сжато на время передачи. Если алгоритм сжатия имеет уровень «off», то сжатие для этих файлов не выполняется. Если алгоритм может изменять уровень в середине потока, он будет минимизирован, чтобы максимально снизить использование ЦП.
Смотрите параметр --skip-compress на странице руководства rsync для списка суффиксов файлов, которые пропускаются по умолчанию, если этот параметр не установлен.
early exec, pre-xfer exec, post-xfer exec
Вы можете указать команду, которая будет запущена на ранних стадиях соединения или непосредственно перед и/или после передачи. Если команда early exec или pre-xfer exec возвращает код ошибки, передача прерывается до её начала. Любой вывод команды pre-xfer exec на stdout (до нескольких КБ) будет отображён пользователю при прерывании, но не отображается, если скрипт возвращает успешное выполнение. Другие программы не могут отправлять текст пользователю. Весь вывод, за исключением стандартного вывода pre-xfer exec, отправляется в stdout/stderr соответствующего демона, что в конечном счёте обычно отбрасывается. Смотрите параметр --no-detach, чтобы узнать, как просмотреть вывод демона, что может помочь при отладке.
Обратите внимание, что команда early exec выполняется до того, как станет известна какая-либо часть запроса на передачу, за исключением имени модуля. Этот вспомогательный скрипт можно использовать для настройки монтирования диска или расшифровки некоторых данных в каталоге модуля, но вам может потребоваться использовать файл блокировки и максимальное количество подключений, чтобы избежать проблем с параллелизмом. Если клиент rsync указал опцию --early-input=ФАЙЛ, он может отправить до 5 КБ данных на stdin раннего скрипта. В противном случае stdin будет пустым.
Обратите внимание, что команда post-xfer exec всё равно выполняется, даже если один из других скриптов возвращает код ошибки. Однако команда pre-xfer exec не будет запущена, если ранняя команда exec завершится сбоем.
Будут установлены следующие переменные среды, хотя некоторые из них являются специфичными для среды pre-xfer или post-xfer:
- RSYNC_MODULE_NAME: имя модуля, к которому осуществляется доступ.
- RSYNC_MODULE_PATH: путь, настроенный для модуля.
- RSYNC_HOST_ADDR: IP-адрес хоста, осуществляющего доступ.
- RSYNC_HOST_NAME: Имя хоста, осуществляющего доступ.
- RSYNC_USER_NAME: Имя пользователя, осуществляющего доступ (пустое, если пользователя нет).
- RSYNC_PID: Уникальный номер для этой передачи.
- RSYNC_REQUEST: (только до xfer) Информация о модуле/пути, указанная пользователем. Обратите внимание, что пользователь может указать несколько исходных файлов, поэтому запрос может быть чем-то вроде «mod/path1 mod/path2» и т. д.
- RSYNC_ARG#: (только до xfer) Аргументы предварительного запроса задаются в этих пронумерованных значениях. RSYNC_ARG0 всегда «rsyncd», за которым следуют параметры, которые использовались в команде запуска, они будут обозначаться как RSYNC_ARG1, и т. д. Будет значение «.» указывающее, что параметры выполнены и начинаются аргументы пути – они содержат информацию, похожую на RSYNC_REQUEST, но с разделёнными значениями и удалённым именем модуля.
- RSYNC_EXIT_STATUS: (только post-xfer) значение выхода на стороне сервера. Это будет 0 для успешного выполнения, положительное значение для ошибки, сгенерированной сервером, или -1, если rsync не удалось завершить работу должным образом. Обратите внимание, что ошибка, которая возникает на стороне клиента, в настоящее время не отправляется на сторону сервера, поэтому это не окончательный статус выхода для всей передачи.
- RSYNC_RAW_STATUS: (только post-xfer) необработанное значение выхода из waitpid().
Несмотря на то, что команды могут быть связаны с определенным модулем, они выполняются с использованием прав пользователя, запустившего демон (а не настроек uid/gid модуля) без каких-либо ограничений chroot.
Эти настройки учитывают 2 переменные среды: используйте RSYNC_SHELL для установки оболочки, используемой при запуске команды (которая в противном случае использует оболочку по умолчанию вызова system()), и используйте RSYNC_NO_XFER_EXEC для полного отключения обеих опций.
Конфигурационные директивы rsyncd.conf
В настоящее время доступны две директивы конфигурации, которые позволяют файлу конфигурации включать содержимое других файлов: &include и &merge. Обе позволяют ссылаться либо на файл, либо на каталог. Они различаются тем, насколько сегрегированным считается содержимое файла.
Директива &include обрабатывает каждый файл как более отдельный, каждый из которых наследует значения по умолчанию родительского файла, запуская анализ параметров как глобальные/по умолчанию и оставляя значения по умолчанию неизменными для анализа остальной части родительского файла.
Директива &merge, с другой стороны, обрабатывает содержимое файла так, как будто оно просто вставлено вместо директивы, и, таким образом, может устанавливать параметры в модуле, запущенном в другом файле, может влиять на значения по умолчанию для других файлов и т. д.
Когда директива &include или &merge ссылается на каталог, она будет считывать все файлы *.conf или *.inc (соответственно), которые содержатся внутри этого каталога (без какого-либо рекурсивного сканирования), с сортировкой файлов в альфа-порядке. Итак, если у вас есть каталог с именем «rsyncd.d» с файлами «foo.conf», «bar.conf» и «baz.conf» внутри него, эта директива:
&include /path/rsyncd.d
будет тем же самым, как этот набор директив:
&include /path/rsyncd.d/bar.conf &include /path/rsyncd.d/baz.conf &include /path/rsyncd.d/foo.conf
за исключением того, что она корректируется по мере добавления и удаления файлов из каталога.
Преимущество директивы &include заключается в том, что вы можете определить один или несколько модулей в отдельном файле, не беспокоясь о непреднамеренных побочных эффектах между автономными файлами модулей.
Преимущество директивы &merge заключается в том, что вы можете загружать фрагменты конфигурации, которые могут быть включены в определения нескольких модулей, а также можете устанавливать глобальные значения, которые будут влиять на соединения (например, файл motd), или глобальные значения, которые будут влиять на другие включаемые файлы.
Например, это полезный файл /etc/rsyncd.conf:
port = 873 log file = /var/log/rsync.log pid file = /var/lock/rsync.lock &merge /etc/rsyncd.d &include /etc/rsyncd.d
Это объединит все файлы /etc/rsyncd.d/*.inc (для глобальных значений, которые должны оставаться в силе), а затем включит все файлы /etc/rsyncd.d/*.conf (определяя модули без каких-либо перекрёстных глобальных значений).
Стойкость аутентификации rsync
Протокол аутентификации, используемый в rsync, представляет собой 128-битную систему ответа на вызов MD4. Однако это довольно слабая защита (по крайней мере один алгоритм поиска хэша методом перебора доступен публично), поэтому, если вам нужна действительно качественная защита, я рекомендую вам запускать rsync через ssh. (Да, будущая версия rsync перейдёт на более сильный метод хеширования.)
Также обратите внимание, что протокол демона rsync в настоящее время не обеспечивает никакого шифрования данных, передаваемых по соединению. Предоставляется только аутентификация. Используйте ssh в качестве транспорта, если вам нужно шифрование.
Вы также можете использовать шифрование SSL/TLS, если поместите rsync за прокси-сервер SSL.
Настройка демона SSL/TLS для rsync
При настройке демона rsync для доступа через SSL/TLS вам потребуется настроить прокси-сервер TCP (например, haproxy или nginx) в качестве интерфейса, который обрабатывает шифрование.
- Вам следует ограничить доступ к порту rsyncd на сервере, чтобы разрешить подключение только прокси-серверу. Если он находится на том же хосте, что и прокси-сервер, то хорошей идеей будет настроить его на прослушивание только на localhost.
- Вам следует рассмотреть включение параметра rsync-daemon протокола прокси-сервера, если ваш прокси-сервер поддерживает отправку этой информации. В примерах ниже предполагается, что он включён.
Пример настройки haproxy выглядит следующим образом:
frontend fe_rsync-ssl bind :::874 ssl crt /etc/letsencrypt/example.com/combined.pem mode tcp use_backend be_rsync backend be_rsync mode tcp server local-rsync 127.0.0.1:873 check send-proxy
Пример настройки прокси-сервера nginx выглядит следующим образом:
stream { server { listen 874 ssl; listen [::]:874 ssl; ssl_certificate /etc/letsencrypt/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/example.com/privkey.pem; proxy_pass localhost:873; proxy_protocol on; # Требует rsyncd.conf "proxy protocol = true" proxy_timeout 1m; proxy_connect_timeout 5s; } }
Если rsyncd должен быть доступен в зашифрованном и незашифрованном виде одновременно, заставьте прокси-сервер прослушивать порт 873 и позвольте ему обрабатывать оба потока.
Примеры конфигурационных файлов демона (службы) rsync (rsyncd.conf и rsyncd.secrets)
Простой файл rsyncd.conf, который разрешает анонимное подключение rsync в область модуля под названием ftp с директорией /home/ftp, будет выглядеть так:
[ftp] path = /home/ftp comment = ftp export area
Более сложный пример:
uid = nobody gid = nobody use chroot = yes max connections = 4 syslog facility = local5 pid file = /var/run/rsyncd.pid [ftp] path = /var/ftp/./pub comment = whole ftp area (approx 6.1 GB) [sambaftp] path = /var/ftp/./pub/samba comment = Samba ftp area (approx 300 MB) [rsyncftp] path = /var/ftp/./pub/rsync comment = rsync ftp area (approx 6 MB) [sambawww] path = /public_html/samba comment = Samba WWW pages (approx 240 MB) [cvs] path = /data/cvs comment = CVS repository (requires authentication) auth users = tridge, susan secrets file = /etc/rsyncd.secrets
Файл /etc/rsyncd.secrets может выглядеть примерно так:
tridge:mypass susan:herpass
Конфигурационные файлы службы rsync
Путь до файла:
- /etc/rsyncd.conf
Или файл в той же директории, где запущена служба rsync:
- rsyncd.conf
Смотрите также
Смотрите также другие страницы справки имеющие отношение к rsync:
- rsync
- rsync-ssl
- rrsync
Ошибки rsync
Пожалуйста, сообщайте об ошибках! Смотрите веб-сайт по адресу: https://rsync.samba.org/.
Версия rsync
Эта страница руководства актуальна для версии 3.4.1 rsync.
Онлайн ресурсы rsync
Rsync распространяется по лицензии GNU General Public License. Подробности смотрите в файле COPYING (https://github.com/RsyncProject/rsync/blob/master/COPYING).
Веб-сайт rsync доступен по адресу https://rsync.samba.org/. На сайте есть FAQ-O-Matic, который может охватывать вопросы, на которые нет ответов в этой странице руководства.
Проект rsync на github: https://github.com/RsyncProject/rsync.
Мы будем рады услышать от вас, если вам понравилась эта программа. Пожалуйста, свяжитесь с почтовой рассылкой по адресу rsync@lists.samba.org.
Эта программа использует превосходную библиотеку сжатия zlib, написанную Жаном-Лу Гейли и Марком Адлером.
Благодарности
Особая благодарность: Джону Ван Эссену, Мэтту МакКатчену, Уэсли В. Терпстре, Дэвиду Дайкстре, Джосу Бакусу, Себастьяну Крамеру, Мартину Пулу и нашему ушедшему, но не забытому товарищу Дж. В. Шульцу.
Также спасибо Ричарду Бренту, Брендану Маккею, Биллу Уэйту, Стивену Ротвеллу и Дэвиду Беллу. Я, возможно, пропустил некоторых людей, прошу прощения, если это так.
Авторы Rsync
Изначально Rsync был написан Эндрю Триджелом (Andrew Tridgell) и Полом Маккеррасом (Paul Mackerras). Многие люди со всего мира помогали поддерживать и улучшать его.
Списки рассылки для поддержки и разработки доступны по адресу https://lists.samba.org/.
Связанные статьи:
- Справочная информация по команде rsync на русском языке (100%)
- Какие есть полезные инструменты с интерфейсом командной строки для системных администраторов Linux (50%)
- Установка и использование Docker в Linux (Debian, Ubuntu, Arch Linux) (50%)
- Программы для бенчмарка CPU в Linux (50%)
- Как в Linux подключить новый диск, разметить и отформатировать разделы (50%)
- Как в Linux Mint и Ubuntu увеличить и раздел подкачки. Как в Linux создать файл подкачки Swap (RANDOM - 17.9%)