@ERROR: chdir이 실패했지만 디렉토리가 존재합니다.

@ERROR: chdir이 실패했지만 디렉토리가 존재합니다.

나는 D-Link DNS-320을 가지고 있고FFP가 설치됨계속하려고합니다 rsync.

지금까지 데몬을 실행하고 있으며 다음과 같은 모듈을 정의했습니다 rsyncd.conf.

max connections = 10
secrets file = /ffp/etc/rsyncd.secret

use chroot = false
read only = no
list = true
strict modes = false
#hosts deny = *
timeout = 600
dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz *.mkv *.avi *.mpg *.jpg *.rar
pid file = /var/run/rsyncd.pid
reverse lookup = no

[root]
hosts allow = *
read only = false
gid = allaccount
uid = nobody
auth users = greg
path = /mnt/HD/HD_a2/rsync
comment = Fish
list = yes

/mnt/HD/HD_a2내부 디스크이며 다음과 /mnt/HD/HD_a2/rsync같이 존재합니다.

root@nas:/mnt/HD/HD_a2/rsync# pwd  
/mnt/HD/HD_a2/rsync

다음과 같은 권한이 있습니다:

root@nas:/mnt/HD/HD_a2# ls -la
total 154589
drwxrwxrwx 23 root   root            4096 Oct  2 19:44 .
drwxr-xr-x  3 root   root            1024 Oct  2 17:20 ..
drwxrwxrwx  4 root   root            4096 Dec 29  2013 Ajaxpf
drwxrwxrwx 21 nobody allaccount      4096 Oct  2 15:45 NAS
dr-xr-xr-x  4 root   root            4096 Sep 24 17:45 Public
drwxr-xr-x  3 root   root            4096 Sep 24 17:45 Users
drwxr-xr-x 17 root   root            4096 Aug 27 14:11 ffp
-rw-r--r--  1 root   root            1117 Oct  2 17:20 ffp.log
-rwxr-xr-x  1 root   root            1942 Sep 23 17:29 fun_plug
drwxr-xr-x  2 root   root            4096 Jul 15  2012 logs
drwxrwxrwx  2 nobody allaccount      4096 Oct  2 21:09 rsync

greg내 파일에 사용자가 정의되어 있고 rsync.secret내 (Windows) 클라이언트에서 모듈을 성공적으로 연결하고 나열할 수 있습니다.

C:\Batch\rsync> rsync greg@nas::  
root            Fish

하지만;파일을 보내려고 하면 다음과 같은 결과가 나타납니다 @ERROR: chdir failed.

C:\Batch\rsync> rsync -vvvv SRC test.txt greg@nas::root/test.txt  
opening tcp connection to nas port 873  
Connected to nas (192.168.10.5)  
note: iconv_open("UTF-8", "UTF-8") succeeded.  
sending daemon args: --server -vvvve.Lsf . root/test.txt  
@ERROR: chdir failed  
[sender] _exit_cleanup(code=5, file=/usr/src/ports/rsync/rsync-3.0.9-1/src/rsync-3.0.9/main.c, line=1516): entered  
rsync error: error starting client-server protocol (code 5) at /usr/src/ports/rsync/rsync-3.0.9-1/src/rsync-3.0.9/main.c  
(1516) [sender=3.0.9]  
[sender] _exit_cleanup(code=5, file=/usr/src/ports/rsync/rsync-3.0.9-1/src/rsync-3.0.9/main.c, line=1516): about to call
 exit(5)

rsync클라이언트에서는 Cygwin 버전 3.0.9를 사용하고 rsync서버에서는 버전 3.1.0을 사용하고 있습니다 .

서버에서 rsync루트로 실행합니다.

root@nas:/mnt/HD/HD_a2# ps aux | grep rsync  
root     10074  0.0  0.3   1996   376 ?        Ss   21:57   0:00 /ffp/bin/rsync --daemon --config=/ffp/etc/rsyncd.conf --log-file=/var/log/rsync.log --ipv4 -vvvv

왜 실패했나요 chdir?

root다음 주소로 편지를 보낼 수 있습니다 /mnt/HD/HD_a2/rsync.

root@nas:/mnt/HD/HD_a2/rsync# touch /mnt/HD/HD_a2/rsync/touch  
root@nas:/mnt/HD/HD_a2/rsync# ls -la  
total 8  
drwxrwxrwx  2 nobody allaccount 4096 Oct  2 22:21 .  
drwxrwxrwx 23 root   root       4096 Oct  2 19:44 ..    
-rw-r--r--  1 root   root          0 Oct  2 22:21 touch  

rsync실행합니다 root.

서버의 로그에는 유용한 것이 없습니다.

2014/10/02 22:19:35 [10391] rsyncd version 3.1.0 starting, listening on port 873  
2014/10/02 22:19:41 [10394] connect from UNDETERMINED (192.168.10.37)  

그렇다면 왜 실패했을까요 chdir? 아니면 문제를 추가로 진단하려면 어떻게 해야 합니까?

업데이트 #1

이에 대한 내용은 중복입니다.익명 rsync 데몬 구성그러나 해결책은 SELinux와 관련이 있습니다. DNS-320은 SELinux getenforcesetenforce명령을 포함하지 않는 내장형 Linux 버전을 실행합니다.댓글에 있는 제안, 어떻게 수정하나요?

이러한 도구 중 어느 것도 사용할 수 없으므로 다른 도구는 무엇입니까?

답변1

QNAP 장치에서 이 문제가 발생하여 이 오류가 발생했습니다.

ERROR: chdir failed
rsync error: error starting client-server protocol (code 5) at main.c(2547) [Receiver=3.0.7]

나는 rsync.conf 파일을 다음과 같이 편집하여 이상한 방법으로 이 문제를 해결했습니다.

use chroot = true

초기 동기화가 완료된 후 다시 설정했습니다.

use chroot = false

이제 작동합니다.

답변2

이는 rsync 데몬이 폴더를 사용할 수 있다는 것을 알아야 하는 SELinux 문제일 수 있습니다. 예를 들어 다음 폴더를 rsync해 보겠습니다./home/myuser/ftp

올바른 SELinux 컨텍스트를 설정하려면 다음 명령을 실행해야 합니다.

semanage fcontext -a -t rsync_data_t '/home/myuser(/.*)?'
restorecon -Rv '/home/myuser'
setsebool -P rsync_client on

이상하게 도 상위 폴더에 태그를 지정해야 하므로 태그가 .rsync 데몬 구성에서 수행되는 이유가 있습니다 /home/myuser./home/myuser/ftpftp

다음 명령을 실행하여 SELinux 태그를 확인할 수 있습니다.

ls -Z /home/myuser

흥미로운 기사에서는 chroot와 SELinux를 결합하는 것이 좋은 아이디어인 이유를 설명합니다.http://blog.siphos.be/2012/04/why-both-chroot-and-selinux/

관련 정보