Я использую Ansible, среди прочего, для резервного копирования. Я запускаю ansible-playbook
с пользователем без полномочий root (скажем, это user
) и ssh как user
. После этого я настроил повышение привилегий, чтобы стать пользователем root
на каждом сервере. До сих пор проблем нет.
Чтобы получить удаленный каталог, у меня есть что-то эквивалентное следующему правилу:
- synchronize:
mode: pull
delete: true
src: "{{ dir }}/"
dest: "{{ tank_base }}/{{ inventory_hostname }}/{{ dir }}/"
rsync_opts:
- "--exclude=tmp*"
- "--exclude=~*"
- "--exclude=*~"
- "--exclude=.gvfs/"
- "--exclude=.cache/"
но для некоторого подкаталога это дает следующую ошибку (слегка отредактирован, чтобы скрыть личные данные):
Фатальный: [сервер]: СБОЙ! => {"updated": false, "cmd": "/usr/bin/rsync --delay-updates -F --compress --delete-after --архив --rsh 'ssh -S none -o StrictHostKeyChecking = нет '--exclude = tmp * --exclude = ~ * --exclude = * ~ --exclude = .gvfs/ --exclude = .cache/ --out-format =' <>% i% n% L ' \"сервер:/ var/ backup/ \" \"/ var/ tank/ snapshot/ server/ backup/ \" "," fail ": true," msg ":" rsync: opendir \"/ var/ backup/ subdir \"fail: Permission denied (13) \nrsync error: некоторые файлы / атрибуты не были перенесены (см. предыдущие ошибки) (код 23) в main.c (1650) [generator = 3.1.2] \n", "rc": 23}
Сбой подкаталога (/var/backup/subdir
в приведенном выше случае) принадлежит root:root
и он доступен для чтения / записи только владельцу. Я предполагаю, что rsync
пытается извлечь файлы как user
а не как root
.
Как я могу извлечь эти каталоги, не ставя под угрозу безопасность и, возможно, ничего не меняя на стороне сервера? Ведь повышение привилегий уже на месте и работает.