Как я могу запустить сценарий резервного копирования / репликации rsync от имени пользователя, отличного от root, с сохранением разрешений? Это многопользовательский файловый сервер, где у каждого пользователя есть учетная запись * nix для разрешений.
Работа с пользователем root представляет очевидный риск для безопасности, особенно когда вы используете ключи SSH без пароля, чтобы сделать это автоматически.
Но при запуске от имени пользователя, отличного от root (например, пользователя резервного копирования с полными разрешениями группы для каталогов данных), возникают проблемы с настройкой разрешений, потому что только владелец или root может изменять разрешения.
В идеальном мире пользователь производственного сервера имел бы доступ только для чтения.
Спасибо!
Вы можете использовать fakeroot -s:
-s save-file
Save the fakeroot environment to save-file on exit. This file
can be used to restore the environment later using -i. However,
this file will leak and fakeroot will behave in odd ways unless
you leave the files touched inside the fakeroot alone when out‐
side the environment. Still, this can be useful. For example, it
can be used with rsync(1) to back up and restore whole directory
trees complete with user, group and device information without
needing to be root. See /usr/share/doc/fakeroot/README.saving
for more details.
Я бы настроил сервер rsync в производственной системе так, чтобы он разрешал доступ только для чтения к производственным данным.
Что-то вроде этого могло бы справиться с этим:
# cat /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = yes
max connections = 4
syslog facility = local5
pid file = /var/run/rsyncd.pid
[prd_data]
path = /path/to/prd_data
comment = Production data
read only
# grep rsync /etc/inetd.conf
rsync stream tcp nowait root /usr/bin/rsync rsyncd --daemon
# grep rsync /etc/services
rsync 873/tcp
Затем на стороне резервного копирования вы можете настроить среду fakeroot, если это необходимо, а затем запустить:
# rsync -az --delete rsync://prod_server/prd_data /path/to/fakeroot
Скорее, используя другую учетную запись, вы рассматривали возможность разрешить только принудительные команды с вашим ключом ssh? Я писал о том, как настроить это для rsync на мой блог некоторое время назад.
Это означает, что ключ ssh может использоваться только для выполнения указанной вами команды rsync и ничего больше.
Настройка пользователя резервного копирования - это не то, на что я смотрел раньше, но я ожидал, что это будет намного больше работы - также, поскольку это многопользовательская система, как бы вы могли убедиться, что все файлы были доступны для чтения? этот пользователь?
Мое решение не открывать серверы для корневого доступа, когда это необходимо для работы rsync и сохранения всех прав собственности / привилегий, - это обе отправьте с живого сервера (ов) и потяните на резервные копии, используя промежуточную промежуточную область на дополнительной машине.
Таким образом, как резервный, так и рабочий серверы имеют доступ по SSH и привилегии root в промежуточной области, но никогда не нуждаются в общении. вообще напрямую, поэтому не нужен привилегированный доступ друг к другу. И промежуточному серверу не нужен доступ для подключения к рабочим или резервным машинам.
Это немного усложняет, но означает, что вам не нужно разрешать вход в привилегированные учетные записи через SSH на любом конце. Это также добавляет небольшую дополнительную полезную безопасность за счет разделения - если вы убедитесь, что рабочий и резервный серверы не разделяют никаких учетных данных, тогда, если кому-то удастся взломать (или просто получить / угадать пароль) привилегированный аккаунт на live или резервные серверы, которые они не могут затем использовать для доступа к одному, чтобы легко получить доступ к другому.