Назад | Перейти на главную страницу

Получение файлов с ограниченным доступом для чтения из удаленной системы с помощью rsync и sudo

Удаленная система каждые 5 минут генерирует файлы статистики и помещает их в определенный каталог. В любой момент времени в этом каталоге находится более 1000 файлов. Каждые 5 минут я хочу копировать самый новый файл на свой сервер для анализа. Проблема, с которой я столкнулся, заключается в том, что файлы в удаленной системе не доступны для чтения «всем», и удаленный системный администратор не хочет предоставлять мне доступ к логину, который может их читать, потому что у этого логина есть разрешения на запись, которых у меня нет. необходимость.

Системный администратор не возражает предоставить мне доступ для чтения ко всей системе.

Я успешно использовал эту команду каждые 5 минут:

rsync -az -e "ssh -tt" --rsync-path="sudo rsync" REMOTE_SYSTEM:/var/logs/ .

У меня нет доступа к / etc / sudoers, поэтому я не знаю точных настроек «tty_require» и «tty_tickets». Когда я изначально настроил его -t не сработало но -tt сделал .... не уверен в точной разнице.

Эта команда работала месяцами, пока мы не обновили наш локальный сервер с Redhat5.11 -> CentOS6.6. Теперь я получаю ошибку:

tcgetattr: Invalid argument
unexpected tag 87 [receiver]
rsync error: error in rsync protocol data stream (code 12) at io.c(1134) [receiver=3.0.6]

Версия / протокол RSYNC одинаковы при обновлении на обоих серверах. Версия SSH изменилась с OpenSSH_4.3p2 на OpenSSH_5.3p1 с обновлением CentOS.

Google ничего не дал для "тега 87". Сменить sudoers в удаленной системе сложно.

Я не привязан к этому решению, но оно работало до обновления и соответствовало требованиям. Если я могу решить эту проблему, настроив параметры на своей стороне, это предпочтительнее, чем заставить системного администратора внести изменения на своей стороне. Я полагаю, что могу использовать исходный код RSYNC и отладить / исправить проблему, но параметры настройки гораздо более желательны.

Другие предложения приветствуются!

Я думаю ты не можешь использовать ssh -tt с помощью rsync.

От RedHat Bugzilla (Ошибка 1019923, создан 16.10.2013, ответил 17.10.2013 Павел Шимерда):

Я не думаю, что такие инструменты, как rsync, обычно готовы передавать данные через псевдотерминал, и я бы не ожидал, что это сработает. Передачи, которые выполняет rsync, имеют двоичную природу, и любой уровень, который работает со специальными символами, естественно, нарушает это.

Мне интересно узнать причину использования двойного '-t', поскольку это означает принудительное выделение TTY, даже если это явно не имеет смысла (например, локальная сторона - это демон, который хочет передавать данные, а не терминал сеанс).

Есть ли какая-либо причина использовать '-tt', кроме намеренного нарушения любого двоичного протокола через транспорт SSH (например, в целях тестирования)?

Мое единственное предложение - отключить requiretty только для одного пользователя, см. sudoers: как отключить requiretty для каждого пользователя.