Ubuntuサーバー間でrsync://プロトコルを使用すると、rsync権限が拒否されました。

Ubuntuサーバー間でrsync://プロトコルを使用すると、rsync権限が拒否されました。

パスワードを入力せずにこのプロトコルを使用して、ホスト2からホスト1(両方ともUbuntu Server 20.04を実行)にファイルを同期しようとしていますrsync://

ホスト2で:

$ cat /etc/rsyncd.conf
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock

[folder]
    path = /home/username
    comment = rsync folder
    read only = false
    list = yes

だから私は走るsudo systemctl start rsync

$ cat /var/log/rsyncd.log 
2021/03/25 01:07:51 [8035] rsyncd version 3.1.3 starting, listening on port 873

ホスト1で:

$ rsync /home/username/test.txt rsync://host2:/folder
rsync: mkstemp "/.test.txt.UHerWZ" (in folder) failed: Permission denied (13)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1207) [sender=3.1.3]

ホスト2で:

$ tail -F /var/log/rsyncd.log
2021/03/25 03:13:00 [9212] name lookup failed for host1: Name or service not known
2021/03/25 03:13:00 [9212] connect from UNKNOWN (host1)
2021/03/25 03:13:00 [9212] rsync to folder/ from UNKNOWN (host1)
2021/03/25 03:13:00 [9212] receiving file list
2021/03/25 03:13:00 [9212] rsync: mkstemp "/.test.txt.KRLgUO" (in folder) failed: Permission denied (13)
2021/03/25 03:13:00 [9212] sent 122 bytes  received 95 bytes  total size 5

ライセンスが拒否されるのはなぜですか?でユーザー名とパスワードを定義する必要がありますか/etc/rsyncd.conf

答え1

nobodyデフォルトでは、rsyncdがrootとして実行されると、転送前にユーザーに変更されます。パスが/home/usernameこのIDなどに属していない場合、エラーが発生します。通常、次のようにセクションで実行するIDを追加する必要があります(通常はグループIDをそのユーザーのデフォルトに設定することもできます)。

[folder]
    path = /home/username
    uid = username
    gid = *
    ...

関連情報