Я пытался получить более сложный модуль rsyncing, но мне кажется, что я не могу заставить работать самый простой пример ...
У меня есть очень простой файл rsyncd.conf с одним модулем, работающим под xinetd;
use chroot = false
strict modes = false
hosts allow = *
[thumbnails]
path = /test
read only = false
Путь создан и имеет либеральные разрешения
# ls -la /test/
total 16
drwxrwxrwx 2 root root 4096 Jul 12 21:50 .
drwxr-xr-x 26 root root 4096 Jul 12 21:50 ..
xinetd был настроен на запуск rsyncd от имени пользователя root (что было по умолчанию);
# cat /etc/xinetd.d/rsync
# default: off
# description: The rsync server is a good addition to an ftp server, as it \
# allows crc checksumming etc.
service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}
xinetd был перезапущен;
# service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
Однако простая команда rsync для этого модуля не работает;
# rsync -va /root/testfolder/ localhost::thumbnails
@ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(1296) [sender=2.6.8]
Jul 12 21:55:23 opencirrus-i1106 xinetd[10142]: xinetd Version 2.3.14 started with libwrap
loadavg labeled-networking options compiled in.
Jul 12 21:55:23 opencirrus-i1106 xinetd[10142]: Started working: 1 available service
Jul 12 21:55:27 opencirrus-i1106 xinetd[10142]: START: rsync pid=10147 from=127.0.0.1
Jul 12 21:55:27 opencirrus-i1106 rsyncd[10147]: connect from localhost.localdomain (127.0.
0.1)
Jul 12 21:55:27 opencirrus-i1106 rsyncd[10147]: rsync: chdir /test failed : Permission den
ied (13)
Jul 12 21:55:27 opencirrus-i1106 xinetd[10142]: EXIT: rsync status=255 pid=10147 duration=
0(sec)
Я подозреваю, что rsync может отбрасывать права доступа от root к любому процессу, который действительно делает копию rsync, но что бы это ни было, я не могу сразу увидеть, что в качестве демона, никто и пользователи синхронизации могут все cd и писать в / test.
Если я запустил rsync из командной строки, например:
# rsync --daemon
# rsync -va /root/testfolder/ localhost::thumbnails
это отлично работает.
Я пробовал следующие модификации rsyncd.conf;
# cat /etc/rsyncd.conf
use chroot = false
strict modes = false
hosts allow = *
[thumbnails]
path = /test
read only = false
uid = 501
gid = 501
где 501/501 - это uid / gid нового пользователя, которого я создал и привязал к нему папку / test, но у меня такая же проблема.
Centos 5.4 x86_64
# rsync -v
rsync version 2.6.8 protocol version 29
Дополнительная информация...
# ls -alZ /test
drwxr-xr-x rsync-www rsync-www root:object_r:default_t .
drwxr-xr-x root root system_u:object_r:root_t ..
-rw-r--r-- rsync-www rsync-www root:object_r:default_t frontCover40X60.jpg
-rw-r--r-- rsync-www rsync-www root:object_r:default_t test
-rw-r--r-- rsync-www rsync-www root:object_r:default_t test2
drwxr-xr-x rsync-www rsync-www root:object_r:default_t testdir
-rw-r--r-- rsync-www rsync-www root:object_r:default_t test.jpg
drwxr-xr-x rsync-www rsync-www root:object_r:default_t tetxdir2
drwxr-xr-x rsync-www rsync-www root:object_r:default_t tetxdir3
Вы используете SELinux? Не могли бы вы вставить вывод ls -lZ / test?