Avamar. Как выполнить восстановление File Level Restore VMware в Linux без использования sudo в учетной записи пользователя root
概要: Avamar FLR Sudo
現象
Общие сведения об Avamar FLR:
Avamar File Level Restore — это безагентное решение для восстановления, которое можно использовать для восстановления одного или нескольких гостевых файлов из резервной копии образа виртуальной машины. Для облегчения восстановления на уровне файлов используется механизм VMware Tools и vSphere API guest operation.functions. Резервная копия образа виртуальной машины виртуальный диск (.vmdk) монтируется на прокси-сервере Avamar во время просмотра. После выбора файлов для восстановления они будут скопированы с прокси-сервера на целевую виртуальную машину.
Обязательные требования FLR.
- Целевая виртуальная машина должна быть включена.
- На целевой виртуальной машине должны быть установлены инструменты VMware, а служба должна быть запущена во время операций восстановления.
- Администратор Avamar или операция/пользователь резервного копирования/восстановления Avamar должны иметь действительные учетные данные целевого гостя (требование VMware Guest Operations SDK), и эти учетные данные должны быть введены перед началом операций восстановления на уровне файлов.
- Целевой гостевой пользователь должен иметь права на запись в местоположение, иначе операция не будет выполнена. Для виртуальной машины Windows пользователь ВМ восстановления также должен иметь права на запись без повышения уровня прав с помощью UAC. Для виртуальных машин Linux ВМ восстановления должна иметь возможность записи без sudo.
- Целевые виртуальные машины должны иметь доступ к виртуальным машинам прокси через TCP 443.
- На виртуальных машинах Linux перед восстановлением необходимо установить современное приложение wget.
Если целевая виртуальная машина не может установить соединение HTTPS с прокси-сервером:
Внутри прокси-сервера: /usr/local/avamarClient/bin/logs/VSphereWebService.log, см. wget non zero exit code
[VWS - DEBUG] 2020/02/24 15:56:20 TID=2403 MID=398040: sGuestExeFullFilename = /usr/bin/wget --no-check-certificate --spider -t 1 -T 10 https://182proxy.burlington.lab:443/test
[VWS - DEBUG] 2020/02/24 15:56:20 TID=2403 MID=398041: sUnicodeExeDir = /usr/bin
[VWS - DEBUG] 2020/02/24 15:56:20 TID=2403 MID=398042: sExeFullPath = /usr/bin/wget
[VWS - DEBUG] 2020/02/24 15:56:20 TID=2403 MID=398043: sParameters = --no-check-certificate --spider -t 1 -T 10 https://182proxy.burlington.lab:443/test
[VWS - FUNC] 2020/02/24 15:56:2 TID=3662 MID=254389: VirtualMachineWs::CheckProcessStatus ENTER
[VWS - DEBUG] 2020/02/24 15:56:2 TID=3662 MID=254390: ullPid = 3053
[VWS - WARN] 2020/02/24 15:56:2 TID=140664473914958 MID=254428: CheckProcessStatus Succeeded
[VWS - DEBUG] 2020/02/24 15:56:2 TID=3662 MID=254441: StartProgramInGuest Succeeded. Ret: 4
Linux без wget:
Внутри прокси-сервера: /usr/local/avamarClient/bin/logs/VSphereWebService.log, см.:
[VWS - DEBUG] 2020/02/24 15:56:20 TID=2403 MID=398040: sGuestExeFullFilename = /usr/bin/wget --no-check-certificate --spider -t 1 -T 10 https://182proxy.burlington.lab:443/test
[VWS - DEBUG] 2020/02/24 15:56:20 TID=2403 MID=398041: sUnicodeExeDir = /usr/bin
[VWS - DEBUG] 2020/02/24 15:56:20 TID=2403 MID=398042: sExeFullPath = /usr/bin/wget
[VWS - DEBUG] 2020/02/24 15:56:20 TID=2403 MID=398043: sParameters = --no-check-certificate --spider -t 1 -T 10 https://182proxy.burlington.lab:443/test
[VWS - ERROR] 2020/02/24 15:56:20 TID=140363826202979 MID=398068: StartProgramInGuest Error: SOAP 1.1 fault: "":ServerFaultCode [no subcode]
"File /usr/bin/wget was not found"
Detail: <FileNotFoundFault xmlns="urn:vim25" xsi:type="FileNotFound"><file>/usr/bin/wget</file></FileNotFoundFault>
[VWS - DEBUG] 2020/02/24 15:34:22 TID=2397 MID=395783: StartProgramInGuest Succeeded. Ret: 1
Дополнительная функция FLR. Восстановление списка управления доступом ( ACL)
По умолчанию эта функция не включена.
Результат.
Без включенной функции ACL (по умолчанию).
Все восстановленные файлы из функции File Level Restore будут принадлежать пользователю ВМ с гостевыми учетными данными, введенными во время операций FLR, и предыдущие разрешения на доступ к файлам не будут установлены.
С включенной функцией ACL.
Чтобы для восстановленных файлов были установлены те же владельцы и разрешения, как и для исходных файлов, необходимо включить эту дополнительную функцию.
Результат.
Во время операций восстановления новые файлы будут созданы от имени пользователей FLR виртуальной машины. Затем владельцы и права доступа к файлам будут восстановлены в исходное состояние с помощью рабочего процесса ACL.
Внутри прокси-сервера: /usr/local/avamarClient/bin/logs/VSphereWebService.log, см.:
[VWS - FUNC] 2020/03/03 03:42:29 TID=140664473914958 MID=254066: VirtualMachineWs::ExecuteRestoreAcl ENTER
[VWS - FUNC] 2020/03/03 03:42:29 TID=140664473914958 MID=254067: VirtualMachineWs::ExecuteRestoreAcl RestoreAcl Input file created
[VWS - FUNC] 2020/03/03 03:42:29 TID=140664473914958 MID=254068: VirtualMachineWs::ExecuteRestoreAcl Input File transfer /usr/local/avamarclient/bin/7fc01f28-c871-4835-948d-2d8a14bd1d8b.xml to /tmp/7fc01f28-c871-4835-948d-2d8a14bd1d8b.xml
[VWS - FUNC] 2020/03/03 03:42:32 TID=140664473914958 MID=254140: VirtualMachineWs::ExecuteRestoreAcl Exe File transfer /usr/local/avamarclient/bin/RestoreAcl to /tmp/7fc01f28-c871-4835-948d-2d8a14bd1d8b.exe
[VWS - DEBUG] 2020/03/03 03:42:40 TID=3662 MID=254349: sGuestExeFullFilename = /tmp/7fc01f28-c871-4835-948d-2d8a14bd1d8b.exe /tmp/7fc01f28-c871-4835-948d-2d8a14bd1d8b.xml 0001
[VWS - FUNC] 2020/03/03 03:42:42 TID=3662 MID=254389: VirtualMachineWs::CheckProcessStatus ENTER
[VWS - DEBUG] 2020/03/03 03:42:42 TID=3662 MID=254390: ullPid = 3053
[VWS - WARN] 2020/03/03 03:42:47 TID=140664473914958 MID=254428: CheckProcessStatus Succeeded
[VWS - DEBUG] 2020/03/03 03:42:47 TID=3662 MID=254441: StartProgramInGuest Succeeded. Ret: 0
[VWS - FUNC] 2020/03/03 03:42:47 TID=140664473914958 MID=254519: VirtualMachineWs::ExecuteRestoreAcl LEAVE
原因
Однако при использовании VMware Tools и VMware SDK в большинстве операций (VM_LoginInGuest, CopyFileFromHostToGuest и ListFilesInGuest) невозможно выполнить команду sudo.
Операции восстановления, выполняемые от имени обычного пользователя могут завершаться сбоем из-за недостаточных прав.
解決方法
Вариант 1. Восстановление в альтернативное местоположение от имени обычного (не root) пользователя.
Пример:
Исходный файл: /root/test (ограничения на папку/файл)
Файл назначения: /home/flruser/ (местоположение, на которое не распространяются ограничения)
Гостевая учетная запись VM: «flruser»
Результат :
При просмотре FLR виртуальные диски монтируются на прокси-сервере Avamar и отображаются в пользовательском интерфейсе, включая все папки и файлы. Откройте папку /root и выберите файл file1.txt, затем выберите пункт «restore everything to a different location»и укажите или введите /home/flruser/ в качестве Absolution Destination.
Результат:
Файл root/test будет восстановлен в /home/flruser/test
Примечание. Файл будет иметь права гостевых пользователей FLR.
Вариант 2. Восстановление в альтернативное местоположение с помощью параметра Restore ACL и функции sudo.
В Avamar 18.2 установите исправление прокси-сервера 318791 (или более поздней версии)
В Avamar 19.2 установите исправление прокси-сервера 318791 (или более поздней версии).
Эти исправления добавляют новую функцию «enablesouserrestore», которая по умолчанию отключена.
Инструкции по включению функции sudo:
На прокси-сервере Avamar:
- На прокси-сервере установите указанное выше исправление.
- Отредактируйте файл /usr/local/avamarclient/bin/config.xml, добавьте в него или отредактируйте строку (<enablesudouserrestore>1</enablesudouserrestore>)
- Перезапустите FLR с помощью команды: service vmwareflr restart
- Создайте специального пользователя FLR: например, flruser. Для дополнительной безопасности можно отключить оболочку для этой учетной записи.
- Скопируйте двоичный файл /usr/local/avamarclient/bin/RestoreAcl из прокси-сервера Avamar в целевую виртуальную машину, используя исправленное местоположение /usr/bin/RestoreACL, и установите разрешение 755 с помощью chmod
- Измените /etc/sudoers, чтобы разрешить пользователю FLR из шага 1 запуск двоичного файла RestoreACL без пароля.
Примечание. Если параметр sudoers requiretty включен (в файле присутствует строка «Defaults requiretty»), то необходима также строка.
Вариант 3. Восстановление в исходное местоположение с помощью метода sudo wget с ACL.
Примечание.
- Этот вариант возможен, только если доступен дополнительный сетевой протокол HTTPS и если для восстановления выбрано более 5 Мбайт или 10 файлов.
- Просмотр местоположений виртуальных машин с ограниченным доступом к папкам через графический интерфейс пользователя Avamar может не работать, но явный ввод в поле «Absolution Destination» будет по-прежнему функционировать.
- Чтобы включить восстановление ACL, выполните на прокси-сервере действия, описанные в варианте 2.
- На прокси-сервере Avamar отредактируйте /usr/local/avamarclient/bin/wget_linux_script.template
После:
- Перезапустите FLR с помощью команды: service vmwareflr restart
- На каждой виртуальной машине Linux, на которой будет использоваться восстановление FLR в исходное местоположение, измените /etc/sudoers, чтобы разрешить пользователю FLR из шага 1 выполнять команду wget binary без пароля.