Я настроил rsync
демон на сервере Ubuntu и пытаюсь передать файл с компьютера Raspberry Pi на сервер:
rsync --timeout 10 --progress --password-file ~/rsync.password --append-verify some_file [email protected]::files
@ERROR: setgroups failed
rsync error: error starting client-server protocol (code 5) at main.c(1653) [sender=3.1.1]
Я настроил rsync
демон на запуск от имени pi
пользователя и получаю указанную выше ошибку. Если я запускаю демон от имени пользователя, root
никаких ошибок не отображается и передача проходит нормально.
Вот мой rsyncd.conf
файл:
[files]
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsync.log
path = /some/path
comment = RSYNC FILES
read only = false
secrets file = /etc/rsyncd.secrets
auth users = pi
uid = pi
gid = pi
use chroot = false
Для каталога path
установлены g+s
разрешения — я хочу, чтобы все файлы в нем наследовали группу родительского каталога.
Есть идеи, как устранить эту ошибку?
решение1
Я нашел решение. Вот в чем проблема. Поскольку я запускаю rsync daemon
с другим пользователем, не root, мне нужно было предоставить rsync
следующие возможности:
setcap cap_net_bind_service,cap_setgid=+ep /usr/bin/rsync
cap_net_bind_service
- это необходимо для того, чтобы демон мог привязываться к системным портам (ниже 1024, порт по умолчанию, к которому привязывается rsync, - 873)cap_setgid
- вот что вызвалоsetgroups failed
ошибку.
Надеюсь, это поможет кому-нибудь в будущем.