Перейти до змісту

Демонстрація на основі протоколу rsync

У vsftpd є віртуальні користувачі (імітовані користувачі, налаштовані адміністратором), тому що використовувати анонімних і локальних користувачів небезпечно. Ми знаємо, що сервер, заснований на протоколі SSH, повинен забезпечувати наявність системи користувачів. Коли існує багато вимог до синхронізації, може знадобитися створити багато користувачів. Це, очевидно, не відповідає стандартам роботи та обслуговування GNU/Linux (чим більше користувачів, тим небезпечніше), у rsync з міркувань безпеки існує метод автентифікації протоколу rsync для входу в систему.

Як це зробити?

Просто запишіть відповідні параметри та значення у файл конфігурації. У Rocky Linux 8 вам потрібно вручну створити файл /etc/rsyncd.conf.

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

Деякі параметри та значення цього файлу наведені нижче, ось тут є інші описи параметрів:

ЕлементОпис
address = 192.168.100.4IP-адреса, яку rsync прослуховує за замовчуванням
port = 873порт прослуховування за замовчуванням rsync
pid file = /var/run/rsyncd.pidРозташування файлу процесу pid
log file = /var/log/rsyncd.logРозташування файлу журналу
[share]Назва спільного доступу
comment = rsyncПримітки або опис
path = /rsync/Розташування системного шляху, де він розташований
read only = yesyes означає лише читання, no означає читання та запис
dont compress = *.gz *.gz2 *.zipЯкі типи файлів не стискають його
auth users = liВмикає віртуальних користувачів і визначає назву віртуального користувача. Його потрібно створити самостійно
secrets file = /etc/rsyncd_users.dbВикористовується для вказівки розташування файлу пароля віртуального користувача, який має закінчуватися на .db. Формат вмісту файлу: «Ім’я користувача: пароль», по одному на рядок

Підказка

Дозвіл доступу до файлу паролів має бути 600.

Запишіть деякий вміст файлу в /etc/rsyncd.conf, а ім’я користувача та пароль – у /etc/rsyncd_users.db, дозвіл 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 
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

Можливо, вам знадобиться dnf -y встановити rsync-daemon, перш ніж ви зможете запустити службу: 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  

витягти/завантажити

Створіть файл на сервері для перевірки: [root@Rocky]# touch /rsync/rsynctest.txt

Клієнт робить наступне:

[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

успіх! На додаток до написання вище на основі протоколу rsync, ви також можете написати так: rsync://li@10.1.2.84/share

передати/відвантажити

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

Вам буде запропоновано, що помилка читання пов’язана з параметром «read only = yes» сервера. Змініть його на "no" та перезапустіть службу [root@Rocky ~]# systemctl перезапустіть rsyncd.service

Спробуйте ще раз, запитуючи дозвіл заборонено:

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

Наш віртуальний користувач тут li, який за замовчуванням зіставлено з системним користувачем nobody. Звичайно, ви можете змінити його на інших користувачів системи. In other words, nobody does not have write permission to the /rsync/ directory. Звичайно, ми можемо використати [root@Rocky ~]# setfacl -mu:nobody:rwx /rsync/ , спробувати ще раз і вдасться.

[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