私は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として実行します。
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は、SELinuxgetenforce
とsetenforce
コマンドを含まない組み込み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/ftp
ftp
次のコマンドを実行してSELinuxタグを確認できます。
ls -Z /home/myuser
興味深い記事では、chrootとSELinuxを組み合わせることが良いアイデアである理由を説明します。http://blog.siphos.be/2012/04/why-both-chroot-and-selinux/