Как загружать на VPS файлы с помощью Rsync с помощью пользователя с пониженными привилегиями?
Приведённая ниже команда работает нормально при запуске c Windows (разве что IP-адрес и имя папки скрыл):
rsync -azvr -e /bin/ssh --progress ./04-ProductionBuild/ root@160.XXX.XX.XX1:/var/www/example.com
На всякий случай скажу, что Rsync для Windows доступен, только его надо специально устанавливать (например с помощью пакетного менеджера chocolatey
).
Однако как Вы знаете, отправлять данные с помощью учётной записи root небезопасно. Но что будет, если отправить данные с помощью другой учётной записи?
rsync -azvr -e /bin/ssh --progress ./04-ProductionBuild/ non_root_admin@160.XXX.XX.XX1:/var/www/example.com
Такая вот ошибка:
rsync: change_dir#1 "/var/www/example.com" failed: Permission denied (13)
rsync error: errors selecting input/output files, dirs (code 3) at main.c(638) [Receiver=3.1.3]
Хотя система доступа в UNIX-подобных операционных системах (одна из которых установлена на VPS) - настоящий кошмар для пользователей Windows, пока в принципе всё объяснимо с токи зрения логики: видимо по умолчанию пользователь с пониженными привелениями не может ничего создавать, удалять, а иногда и вносить измененения.
Опять же, с точки зрения логики эти права надо дать, но отсюда возникает много вопросов:
- Какие минимальные права надо дать пользователю, который загружает данные через Rsync?
- Если дать права на запись, изменение и удаление файлов из дректории "var/www/example.com", эти права будут распространяться на всё файлы, что в этой директории? Что-то мне подсказывает, что нет.
Нагугленное решение добавить нижеследующую строку
non_root_admin ALL= NOPASSWD:/usr/bin/rsync
ничего не дало.