Vai al contenuto

Dimostrazione basata sul protocollo rsync

In vsftpd, ci sono utenti virtuali (utenti impersonali personalizzati dall'amministratore) perché non è sicuro usare utenti anonimi e utenti locali. Sappiamo che un server basato sul protocollo SSH deve garantire che ci sia un sistema di utenti. Quando ci sono molti requisiti di sincronizzazione, può essere necessario creare molti utenti. Questo ovviamente non soddisfa gli standard di gestione e manutenzione GNU/Linux (più utenti, più insicuro), in rsync, per motivi di sicurezza, c'è un metodo di autenticazione il protocollo rsync.

Come farlo?

È sufficiente scrivere i parametri e i valori corrispondenti nel file di configurazione. In Rocky Linux 8, è necessario creare manualmente il file /etc/rsyncd.conf.

[root@Rocky ~]# touch /etc/rsyncd.conf
[root@Rocky ~]# vim /etc/rsyncd.conf

Alcuni parametri e valori di questo file sono i seguenti, qui si trovano altre descrizioni dei parametri:

Elemento Descrizione
address = 192.168.100.4 L'indirizzo IP dove rsync è in ascolto di default
port = 873 porta rsync di ascolto predefinita
pid file = /var/run/rsyncd.pid Posizione del file del pid del processo
log file = /var/log/rsyncd.log Posizione del file del registro
[share] Nome condiviso
comment = rsync Osservazioni e informazioni sulla descrizione
path = /rsync/ Posizione del percorso di sistema in cui si trova
read only = yes sì significa solo leggere, non leggere e scrivere
dont compress = *.gz *.gz2 *.zip Quali tipi di file non comprimere
auth users = li Abilita gli utenti virtuali e definisci come viene chiamato un utente virtuale. Devi crearlo da solo
secrets file = /etc/rsyncd_users.db Usato per specificare la posizione del file password dell'utente virtuale, che deve terminare in .db. Il formato del contenuto del file è "Nome utente: Password", uno per riga

Suggerimento!

L'autorizzazione del file della password deve essere 600.

Scrivi il contenuto del file su /etc/rsyncd.confe scrivi il nome utente e la password su /etc/rsyncd_users.db, il permesso è 600

[root@Rocky ~]# cat /etc/rsyncd.conf
address = 192.168.100.4
port = 873
pid file = /var/run/rsyncd.pid
log file = /var/log/rsyncd.log
[share]
comment = rsync
path = /rsync/
read only = yes
dont compress = *.gz *.bz2 *.zip
auth users = li
secrets file = /etc/rsyncd_users.db
[root@Rocky ~]# ll /etc/rsyncd_users.db
-rw------- 1 root root 9 November 2 16:16 /etc/rsyncd_users.db
[root@Rocky ~]# cat /etc/rsyncd_users.db
li:13579

Potrebbe essere necessario dnf -y install rsync-daemon prima di poter avviare il servizio: systemctl start rsyncd.service

[root@Rocky ~]# systemctl start rsyncd.service
[root@Rocky ~]# netstat -tulnp
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      691/sshd            
tcp        0      0 192.168.100.4:873       0.0.0.0:*               LISTEN      4607/rsync          
tcp6       0      0 :::22                   :::*                    LISTEN      691/sshd            
udp        0      0 127.0.0.1:323           0.0.0.0:*                           671/chronyd         
udp6       0      0 ::1:323                 :::*                                671/chronyd  

pull/scarica

Crea un file nel server per la verifica: [root@Rocky]# touch /rsync/rsynctest.txt

Il client fa quanto segue:

[root@fedora ~]# rsync -avz li@192.168.100.4::share /root
Password:
receiving incremental file list
./
rsynctest.txt
sent 52 bytes received 195 bytes 7.16 bytes/sec
total size is 883 speedup is 3.57
[root@fedora ~]# ls
aabbcc anaconda-ks.cfg fedora rsynctest.txt

successo! Oltre alla scrittura precedente basata sul protocollo rsync, puoi anche scrivere così: rsync://li@10.1.2.84/share

push/carica

[root@fedora ~]# touch /root/fedora.txt
[root@fedora ~]# rsync -avz /root/* li@192.168.100.4::share
Password:
sending incremental file list
rsync: [sender] read error: Connection reset by peer (104)
rsync error: error in socket IO (code 10) at io.c(784) [sender = 3.2.3]

Vieni informato che l'errore di lettura è relativo al "read only = yes" del server. Cambialo in "no" e riavvia il servizio [root@Rocky ~]# systemctl restart rsyncd.service

Prova di nuovo, ti viene negato il permesso:

[root@fedora ~]# rsync -avz /root/* li@192.168.100.4::share
Password:
sending incremental file list
fedora.txt
rsync: mkstemp " /.fedora.txt.hxzBIQ " (in share) failed: Permission denied (13)
sent 206 bytes received 118 bytes 92.57 bytes/sec
total size is 883 speedup is 2.73
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1330) [sender = 3.2.3]

Il nostro utente virtuale qui è li, che viene mappato all'utente di sistema nobody per impostazione predefinita. Naturalmente, è possibile cambiarlo in altri utenti del sistema. In altre parole, nobody non ha il permesso di scrittura nella directory /rsync/. Naturalmente, possiamo usare [root@Rocky ~]# setfacl -mu:nobody:rwx /rsync/ , riprovare, e avere successo.

[root@fedora ~]# rsync -avz /root/* li@192.168.100.4::share
Password:
sending incremental file list
fedora.txt
sent 206 bytes received 35 bytes 96.40 bytes/sec
total size is 883 speedup is 3.66

Author: tianci li

Contributors: Steven Spencer, Ganna Zhyrnova