Citrix Workspace 应用程序

为使用 LD_PRELOAD 功能的应用程序配置允许列表

注意:

使用 LD_PRELOAD 功能配置允许列表仅面向适用于 Linux 的 Citrix Workspace 应用程序。

如果其他正在运行的应用程序使用 LD_PRELOAD,App Protection 会阻止启动受保护的会话。 如果有正版应用程序或者获得了管理员批准,则可以使用允许列表功能。 要允许使用其他使用 LD_PRELOAD 的应用程序,必须配置允许列表。

如果其他使用 LD_PRELOAD 的应用程序正在运行,App Protection 会停止启动受保护的会话。 但是,如果有合法的应用程序或者管理员批准,可以使用允许列表功能。 要允许这些应用程序运行,您需要设置允许列表。

可以使用以下步骤将具有预加载功能的应用程序添加到允许列表:

  1. 确定阻止启动受保护的 VDA/应用程序会话的进程。
  2. 为允许列表创建配置文件并添加已识别的进程。

确定阻止启动受保护的 VDA 的流程

当 AppProtection 由于使用 LD_PRELOAD 而阻止启动受保护的 VDA 时,请使用 LD_PRELOAD 验证进程。 可以将真实流程添加到允许列表中。

要使用 LD_PRELOAD 识别进程,请使用以下脚本。 使用 .sh 扩展名将其保存并在终端窗口中以 sudo 的形式运行:

     #!/bin/bash

      for pid in /proc/*/; do
          pid=${pid%*/}
          pid=${pid##*/}
          environ_file="/proc/$pid/environ"

          if [[ !   -f "$environ_file" ]]; then
              continue
          fi

          ld_preload_entry=$(tr '\0' '\n' < "$environ_file" | grep -w "LD_PRELOAD")
          if [[ -n "$ld_preload_entry" ]]; then
              cmdline_file="/proc/$pid/cmdline"
              cmdline=$(tr '\0' ' ' < "$cmdline_file" | awk '{print $1}')
              echo "\"$ld_preload_entry\" : \"$cmdline\""
          fi
      done
<!--NeedCopy-->

根据前面脚本的输出,确定导致受保护的 VDA 启动失败的进程,并将这些进程添加到允许列表中。

下面是显示输出结果的示例图像,其中包含带有预加载列表的应用程序列表。

输出显示屏

创建允许列表配置文件

出于安全原因,默认情况下不安装进程允许列表配置文件。 您需要在第一次需要时创建此配置文件。

  1. 在“$ICAROOT/config/”文件夹中创建一个名为 AppProtection_Preload_Allowlist.json 的空文件。
  2. 按以下格式添加流程详细信息:

          { 
              "LD_PRELOAD_PATH1" : "PROCESS_PATH1",
              "LD_PRELOAD_PATH2" : "PROCESS_PATH2"
          }
    <!--NeedCopy-->
    

    下面是显示新添加的配置的示例图像: 配置文件

  3. 保存该文件,然后使用以下命令设置 AppProtection_Preload_Allowlist.json 文件的权限。

sudo chmod 644 $ICAROOT/config/AppProtection_Preload_Allowlist.json

注意:

为了防止冗余,配置条目中允许使用最少的正则表达式。 必须检查特殊的正则表达式字符,并使用双反斜杠 (\) 进行转义。

  • 例如,假设脚本输出如下所示:

LD_PRELOAD=:/snap/blue-recorder/126/$LIB/bindtextdomain.so" : "/snap/blue-recorder/126/blue-recorder

  • 您可以看到输出包含“.”、“$”,这是正则表达式模式中的特殊字符。 因此,您必须使用反斜线对其进行转义,如下所示:

LD_PRELOAD=:/snap/blue-recorder/126/\\$LIB/bindtextdomain\\.so" : "/snap/blue-recorder/126/blue-recorder

  • 要使用数字 126 之类的可变元素,可以使用正则表达式来创建更通用的允许列表条目:

LD_PRELOAD=:/snap/blue-recorder/\\d+/\\$LIB/bindtextdomain\\.so" : "/snap/blue-recorder/\\d+/blue-recorder

为使用 LD_PRELOAD 功能的应用程序配置允许列表