Linux – Rsync Daemon

測試環境為 Ubuntu16.04 x64 虛擬機.

RSYNC 的使用請參考 http://benjr.tw/96928

rsync 指令不是也可遠端同步資料(使用 SSH 協定 protocol)嗎? 為什麼還需要使用 Rsync Daemon 呢!! 我想主要是可以做身份管理,遠端使用者不需輸入密碼(透過密碼檔管理),也可免掉遠端一定要輸入密碼的問題( rsync 需要輸入密碼無法寫入 cron table 做自動化排程).

RSYNC Daemon (Server IP : 172.16.15.130)

rsync daemon 預設使用 TCP 埠(port) 873.

範例檔位於 /usr/share/doc/rsync/examples/rsyncd.conf ,複製至 /etc/rsyncd.conf ,並修改內容,啟動 rsyncd 的服務.

root@ubuntu:~# cp /usr/share/doc/rsync/examples/rsyncd.conf /etc/
root@ubuntu:~# vi /etc/rsyncd.conf

預設的設定為

log file = /var/log/rsyncd.log
reverse lookup = no
[ftp]
        comment = public archive
        path = /var/www/pub
        use chroot = yes
        lock file = /var/lock/rsyncd
        read only = yes
        list = yes
        uid = nobody
        gid = nogroup
        timeout = 600
        refuse options = checksum dry-run
        dont compress = *.gz *.tgz *.zip *.z *.rpm *.deb *.iso *.bz2 *.tbz
root@ubuntu:~# mkdir /var/www/pub
  • log file
    指定 log 路徑 /var/log/rsyncd.log
  • reverse lookup
    設定為 no 時就不需要做名稱解析.
  • comment
    名稱自訂.
  • path
    設定檔案存放目錄.
  • use chroot
    chroot 變更系統的根目錄,變更之後根目錄之外的檔案無法進行存取動作.
  • auth users
    不是系統的使用者,而是 rsync 自訂的認證帳號 (需設定於 rsyncd.secrets)
  • lock file
  • read only
    設定是否為唯讀
  • list
  • uid
  • gid
  • timeout
  • refuse options
  • dont compress
    不需要再做壓縮的附檔名.

自訂一個新的分享目錄

[ben]
        comment = Ben's folder
        path = /var/www/ben
        hosts allow = *
        use chroot = yes
        auth users = rben
        read only = no
        uid = root
        gid = root
        secrets file = /etc/rsyncd.secrets
root@ubuntu:~# mkdir /var/www/ben
  • auth users = rben
    這個使用者是使用 rsync 時需要輸入的使用者名稱,不同於 Linux 系統下的使用者.
  • secrets file
    剛剛設定的使用者密碼就是儲存在 /etc/rsyncd.secrets 密碼檔, 設定格式為 帳號:密碼.

    root@ubuntu:~# vi /etc/rsyncd.secrets 
    rben:1234
    

    密碼檔權限與檔案擁有者需要做修改才能使用.

    root@ubuntu:~# chmod 600 /etc/rsyncd.secrets
    root@ubuntu:~# chown root.root  /etc/rsyncd.secrets
    
root@ubuntu:~# systemctl start rsync
root@ubuntu:~# systemctl enable rsync
Synchronizing state of rsync.service with SysV init with /lib/systemd/systemd-sysv-install...
Executing /lib/systemd/systemd-sysv-install enable rsync
root@ubuntu:~# netstat -tnlp | grep 873
tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      1973/rsync      
tcp6       0      0 :::873                  :::*                    LISTEN      1973/rsync  

RSYNC Client

遠端 Ben 資料夾需要輸入使用者密碼,這密碼一樣儲存在 /etc/rsyncd.secrets ,格式就是 密碼 ,密碼檔權限與檔案擁有者需要做修改才能使用.

root@ubuntu:~# vi /etc/rsyncd.secrets
1234
root@ubuntu:~# chmod 600 /etc/rsyncd.secrets
root@ubuntu:~# chown root.root  /etc/rsyncd.secrets
Access via rsync daemon:
Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
      rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
      rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST
root@ubuntu:~# rsync -avP rben@172.16.15.130::
ftp            	public archive
ben            	Ben's folder
root@ubuntu:~# mkdir temp
root@ubuntu:~# rsync -avP --password-file=/etc/rsyncd.secrets rben@172.16.15.130::ben temp/
receiving incremental file list

sent 20 bytes  received 59 bytes  158.00 bytes/sec
total size is 0  speedup is 0.00

常見問題

遇到問題可以先檢查 日誌檔 /var/log/rsyncd.log 或是預設的 /var/log/syslog .

2018/01/17 01:18:03 [2612] name lookup failed for 172.16.15.249: Name or service not known
2018/01/17 01:18:03 [2612] connect from UNKNOWN (172.16.15.249)
2018/01/17 01:18:03 [2612] secrets file must not be other-accessible (see strict modes option)
2018/01/17 01:18:03 [2612] auth failed on module ben from UNKNOWN (172.16.15.249) for ben: ignoring secrets file

name lookup failed for 172.16.15.249: Name or service not known

root@ubuntu:~# vi /etc/rsyncd.conf
reverse lookup = no
...
root@ubuntu:~# systemctl restart rsync

secrets file must not be other-accessible (see strict modes option)

root@ubuntu:~# ll /etc/rsyncd.secrets 
-rw-r--r-- 1 root root 9 Jan 17 01:17 /etc/rsyncd.secrets
root@ubuntu:~# chmod 600 /etc/rsyncd.secrets 

成功執行的日誌檔.

2018/01/17 01:22:43 [2634] connect from UNDETERMINED (172.16.15.249)
2018/01/17 09:22:43 [2634] rsync on ben/ from ben@UNDETERMINED (172.16.15.249)
2018/01/17 09:22:43 [2634] building file list
2018/01/17 09:22:43 [2634] sent 125 bytes  received 51 bytes  total size 0

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *