Aller au contenu

Démonstration basée sur le protocole rsync

Dans vsftpd, il y a des utilisateurs virtuels (utilisateurs personnalisés par l'administrateur) parce qu'il est très déconseillé d'utiliser des utilisateurs anonymes et des utilisateurs locaux. On sait qu'un serveur basé sur le protocole SSH doit garantir l'existence d'un système d'utilisateurs. Quand il y a beaucoup d'exigences de synchronisation, il peut être nécessaire de créer de nombreux utilisateurs. Cela ne répond évidemment pas aux normes de fonctionnement et de maintenance de GNU/Linux (plus il y a d'utilisateurs, plus il y a d'utilisateurs non sécurisés). Dans rsync, pour des raisons de sécurité, il y a une méthode d'authentification du protocole rsync.

Comment faire?

Il suffit d'écrire les paramètres et valeurs correspondants dans le fichier de configuration. Dans Rocky Linux 8, vous devez créer manuellement le fichier /etc/rsyncd.conf.

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

Certains paramètres et leurs valeurs de ce fichier sont présentés ci-dessous, ici vous trouverez d'autres descriptions de paramètres :

Élément Observation
address = 192.168.100.4 L'adresse IP sur laquelle rsync écoute par défaut
port = 873 port d'écoute par défaut de rsync
pid file = /var/run/rsyncd.pid Emplacement du fichier pid du processus
log file = /var/log/rsyncd.log Emplacement du fichier log
[share] Partage de nom
comment = rsync Remarques ou informations de description
path = /rsync/ L'emplacement du chemin système où il est situé
read only = yes yes signifie lecture seule, pas d'écriture
dont compress = *.gz *.gz2 *.zip Quels types de fichiers ne sont pas compressés
auth users = li Activez les utilisateurs virtuels et définissez un utilisateur virtuel. Besoin de le créer vous-même
secrets file = /etc/rsyncd_users.db Utilisé pour spécifier l'emplacement du fichier de mot de passe de l'utilisateur virtuel, qui doit se terminer en .db. Le format de contenu du fichier est "Username : mot de passe", un par ligne

tip

La permission du fichier de mot de passe doit être 600.

Écrire du contenu du fichier dans /etc/rsyncd.conf et écrire le nom d'utilisateur et le mot de passe dans /etc/rsyncd_users.db, la permission est de 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

Vous devrez peut-être executer dnf -y install rsync-daemon avant de pouvoir démarrer le service : 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/download

Créer un fichier dans le serveur pour vérification : [root@Rocky]# touch /rsync/rsynctest.txt

Le client fait ce qui suit :

[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

success ! En plus de l'écriture ci-dessus basée sur le protocole rsync, vous pouvez également écrire comme ceci : rsync://li@10.1.2.84/share

push/upload

[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]

On vous indique que l'erreur de lecture est liée à la configuration "read only = yes" du serveur. Changez-la en "no" et redémarrez le service [root@Rocky ~]# systemctl restart rsyncd.service

Essayez à nouveau, à l'affichage de la permission refusée :

[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]

Notre utilisateur virtuel ici est li, qui est mappé à l'utilisateur système nobody par défaut. Bien sûr, vous pouvez le changer à d'autres utilisateurs du système. En d'autres termes, nobody n'a pas de permission d'écriture dans le répertoire /rsync/ . Bien sûr, nous pouvons utiliser [root@Rocky ~]# setfacl -mu:nobody:rwx /rsync/ , essayer à nouveau.

[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