16.5. Защита модулей rsync
Проблема
Вы последовали рекомендациям из раздела 16.4. Было бы удобно предоставить пользователям возможность самостоятельной загрузки своих файлов с сервера архивации или поручить обновление веб- и FTP-серверов кому-то ещё. Но доступ к файлам открыт для всех пользователей rsync — как организовать защиту модулей?
Решение
Rsync содержит простые средства аутентификации и контроля доступа. Чтобы активировать их, следует создать новый файл с парами «имя/пароль» и включить директивы «auth users» и «secrets file» в /etc/rsyncd.conf
.
Сначала создайте на сервере rsync файл паролей и присвойте ему разрешения chmod 600
:
# Пользователи rsync для server1
# Файл создан 2/7/2004
sue:sekkrit
Теперь отредактируйте /etc/rsyncd.conf
. Выделите пользователю Sue собственный модуль и заблокируйте доступ к нему всем, кроме Sue:
# Глобальные параметры
log file = /var/log/rsyncd.log
path = /archive
list = yes
read only = no
auth users = sue
secrets file = /etc/rsync/rsync-users
Чтобы обратиться к модулю, пользователь должен указать перед именем сервера своё имя rsync:
sue@workstation:~$ rsync sue@server1::sue_backup
Password:
drwx 192 2003/02/12 spreadsheets
-rw-r--r-- 21560 2003/09/17 aug_03
-rw-r--r-- 21560 2003/10/14 sept_03
-rw-r--r-- 21560 2003/11/10 oct_03
Теперь пользователь сможет архивировать и восстанавливать файлы так же, как раньше — при условии, что он помнит своё имя rsync. Не забудьте двойное двоеточие (::)
, используемое при подключении к серверу rsync.
Комментарий
Пары «имя/пароль» назначаются произвольно и не имеют отношения к системной учётной записи. Это позволяет легко и быстро создавать и изменять модули, а также добавлять и исключать пользователей.
Для повышения уровня безопасности добавьте следующие директивы в rsyncd.conf
:
strict modes = yes
— файл паролей не будет проверяться rsync, если он доступен для чтения кому-либо, кроме демона rsync, и пользователь не получит доступа. По умолчанию используется режимyes
, поэтому включать эту строку не обязательно (разве что как напоминание). Если вы не хотите использовать жёсткую проверку, включите директивуstrict modes = false
.
См. также