У вас возникли проблемы с SELinux. SELinux - это модуль, который обеспечивает гораздо более мелкозернистый контроль доступа, чем разрешения файловой системы и ACL. Среди прочего, он будет запрещать доступ к файлам для rsync по умолчанию, если он не запускается пользователем с терминала. Теперь, как вы можете позволить ему получить доступ к файлам, которые вы хотите?
Существует два варианта. Если дело только с каталогами никакая другая служба (включая HTTPD или такие) не нужен доступ, вы можете сделать следующее:
semanage fcontext -a -t public_content_t "/tmp/f1(/.*)?"
semanage fcontext -a -t public_content_t "/tmp/f2(/.*)?"
Это должно постоянно менять правила SELinux, чтобы директории/TMP/f1 и/tmp/f2, доступный rsync. Фактически, он установит тип public_content_t
в каталогах и файлах. Узлы с этим типом доступны rsync. Однако есть уловка, как упоминалось: узел (каталог или файл) может содержать только один тип. У многих служб есть другие требования к файлам, к которым они обращаются (например, sshd требует ssh_t
), поэтому вы не можете это сделать в/etc, например.
Другим решением является постоянное разрешение доступа rsync к всем файлам. Это нормально, если вы не запустите Rsync демона:
setsebool -P rsync_full_access 1
После этого Rsync будет в состоянии получить доступ ко всем файлам, даже если бежать от инициализации, а не с терминала пользователя.
Почему разница, если Rsync запускается демон или пользователем?
(это верно только для наиболее распространенных, targeted
политики)
SELinux знает пользователей, и обычные пользователи используют SELinux-пользователя unconfined_u. unconfined_u разрешено делать почти все, что позволяют ACL файловой системы. Однако init и такие работают как system_u, а system_u гораздо более ограничены. Это помогает предотвратить атаки на httpd и других демонстрантов.
Каков результат '' getenforce'' как root? –
SELinux статус: включен SELinuxfs установки:/SELinux Текущей режим: соблюдение режима из конфигурационного файла: соблюдение версии политики: 24 политики из конфигурационного файла: целевой – nix