Passer au contenu principal
  • Passer des commandes rapidement et facilement
  • Afficher les commandes et suivre l’état de votre expédition
  • Profitez de récompenses et de remises réservées aux membres
  • Créez et accédez à une liste de vos produits

Avamar:如何使用 sudo 在不使用根用户的情况下执行 Linux VMware 文件级恢复

Résumé: Avamar FLR Sudo

Cet article concerne Cet article ne concerne pas Cet article n’est associé à aucun produit spécifique. Toutes les versions du produit ne sont pas identifiées dans cet article.

Symptômes



Avamar FLR 背景:
Avamar 的文件级恢复是一种无代理恢复解决方案,可用于从虚拟机映像备份恢复一个或多个来宾文件。用于支持文件级恢复的机制是 VMware 工具和 vSphere API 来宾操作功能。在浏览过程中,虚拟机映像备份会在 Avamar 代理上装载虚拟磁盘 (.vmdk)。选择要恢复的文件后,系统会将传输文件从代理复制到目标虚拟机。

FLR 强制要求:
  1. 目标虚拟机必须处于开机状态。
  2. 目标虚拟机必须已安装 VMware 工具,并且在恢复操作过程中服务必须保持运行。 
  3. Avamar 管理员或 Avamar 备份/恢复操作/用户必须在目标来宾上具有有效的凭据(VMware 来宾操作 SDK 的要求),并且必须在文件级恢复操作开始时输入此凭据。
  4. 目标来宾用户必须具有写入位置的权限,否则操作将失败。对于 Windows 虚拟机,恢复 VM 用户还必须有权在没有 UAC 提升的情况下进行写入,对于 Linux 虚拟机,恢复虚拟机必须能够在没有 sudo 的情况下写入。 
FLR 可选要求:更快的 HTTPS 传输方法的要求。 
  1. 目标虚拟机必须具有对代理虚拟机的 TCP 443 访问权限。
  2. 对于 Linux 虚拟机,在恢复操作之前,必须在虚拟机内部安装现代 wget 应用程序。  
如果未满足操作要求,则在提交作业之前会显示以下警告:

如果目标虚拟机无法建立到代理的 HTTPS 连接,请执行以下操作:

kA23a000000GIVvCAO_3_0

在代理内:/usr/local/avamarclient/bin/logs/VSphereWebService.log,请参阅 wget 非零退出代码

[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



没有 wget 的 Linux:

kA23a000000GIVvCAO_3_1

在代理内:/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 功能(默认):

来自文件级恢复功能的所有已恢复文件将归在 FLR 操作期间输入的虚拟机来宾凭据用户所有,并且将不会设置以前的文件权限。

启用 ACL 功能:
如果用户希望获得已恢复文件的原始创建文件所有权和权限集,则必须启用此可选功能。

kA23a000000GIVvCAO_3_2

结果:
在恢复操作期间,新文件将创建为 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

Cause

在某些 Linux 发行版(如 Ubuntu 或 Photon 操作系统)中,默认情况下不会设置或配置操作系统根用户。相反,Linux 管理员依赖于 sudo 命令来运行提升操作。  

但是,由于 VMware 工具和 VMware SDK,因此 VMware 工具不能执行 sudo 命令的大多数操作(VM_LoginInGuest、CopyFileFromHostToGuest 和 ListFilesInGuest)。

当使用普通用户执行恢复操作时,该操作可能会因目标来宾权限不足而失败。

Résolution

对于禁用、未配置或出于安全考虑而无法共享 Linux 根用户的环境,请考虑以下解决方案步骤:

选项 1.以非根用户身份恢复至备用位置。
示例:
源文件:  /root/test(受限文件夹/文件)
目标文件:  /home/flruser/(不受限位置)
虚拟机来宾创建:  “flruser”

结果:
在 FLR 浏览期间,虚拟磁盘将装载到 Avamar 代理并显示在用户界面中(其中包括所有文件夹和文件),浏览 /root 文件夹并选择 file1.txt,然后选择“restore everything to a different location”,并浏览至或键入 /home/flruser/ 作为 Absolution 目标。

kA23a000000GIVvCAO_2_0

结果
root/test 文件将被恢复到 /home/flruser/test
注意,文件将具有 FLR 来宾用户权限。

选项 2.使用 sudo 功能恢复至具有恢复 ACL 选项的备用位置。
在 Avamar 18.2 中,安装代理修补程序 318791(或更高版本)
在 Avamar 19.2 中,安装代理修补程序 318791(或更高版本)


这些修补程序添加默认情况下禁用的新“enablesudouserrestore”功能。

启用 sudo 功能的说明:
在 Avamar 代理上:
  1. 在代理上,安装上面的修补程序
  2. 编辑 /usr/local/avamarclient/bin/config.xml,向文件添加 /edit 行 (<enablesudouserrestore>1</enablesudouserrestore>)
  3. 通过此命令重新启动 FLR:service vmwareflr restart
在每个将启用 FLR 功能的 Linux 虚拟机上:
  1. 创建专用 FLR 用户:  示例 flruser。  为增强安全性,可以为此帐户禁用 shell
  2. 使用固定位置 /usr/bin/RestoreACL 将 /usr/local/avamarclient/bin/RestoreAcl 二进制文件从 Avamar 代理复制到目标虚拟机,并使用 chmod 将权限设置为 755
示例:
linux-da91:~ # ls -l /usr/bin/RestoreAcl
-rwxr-xr-x 1 root root 148016 Feb 13 17:48 /usr/bin/RestoreAcl
  1. 修改 /etc/sudoers 以允许步骤 1 中的 FLR 用户在无需密码的情况下执行 RestoreACL 二进制文件。 
示例
flruser ALL=(ALL) NOPASSWD: /usr/bin/RestoreAcl

注:如果启用了 sudoers requiretty 设置(文件中存在“Defaults requiretty”行),我们还需要此行。  
Defaults!/usr/bin/RestoreAcl !requiretty


选项3:使用 sudo wget 方法和 ACL 恢复至原始位置。

注: 

  • 此选项仅当可选网络 HTTPS 可用并且恢复选择选择了大于 5 Mb 或 10 个文件时才可用。
  • 使用 Avamar GUI 浏览具有受限文件夹位置的活动目标虚拟机位置可能会失败,但在“Absolution Destination”中明确键入可正常工作。 
  1. 在代理上执行选项 2 中的步骤以启用 ACL 恢复。
  2. 在 Avamar 代理上,编辑 /usr/local/avamarclient/bin/wget_linux_script.template 
之前:
wget "$url/$filepath" -N  -nH -x -P "$dest" --no-check-certificate -S --restrict-file-names=nocontrol  --no-parent --tries 5 --header="Authorization:$token" --cut-dirs=2 --content-disposition 2>>    $logfile

之后:
sudo wget "$url/$filepath" -N  -nH -x -P "$dest" --no-check-certificate -S --restrict-file-names=nocontrol  --no-parent --tries 5 --header="Authorization:$token" --cut-dirs=2 --content-disposition 2>>    $logfile
  1. 通过此命令重新启动 FLR:service vmwareflr restart
  2. 在每个将使用 FLR 恢复至原始位置的 Linux 虚拟机上,将 /etc/sudoers 修改为允许步骤 1 中的 FLR 用户无需密码即可执行 wget 二进制文件。 
示例:
flruser ALL=(ALL) NOPASSWD: /usr/bin/RestoreAcl
flruser ALL=(ALL) NOPASSWD: /usr/bin/wget
 
注:如果启用了 sudoers requiretty 设置(文件中存在“Defaults requiretty”行),我们还需要这些行:
Defaults!/usr/bin/RestoreAcl !requiretty
Defaults!/usr/bin/wget !requiretty

Produits concernés

Avamar

Produits

Avamar, Avamar Client for VMware
Propriétés de l’article
Numéro d’article: 000081871
Type d’article: Solution
Dernière modification: 20 nov. 2020
Version:  2
Trouvez des réponses à vos questions auprès d’autres utilisateurs Dell
Services de support
Vérifiez si votre appareil est couvert par les services de support.