构建电子 Linux 发行版:已找到 SUID 沙箱帮助程序二进制文件,但配置不正确

2024-07-03

我正在为 Linux 生成电子发行版。 这就是应用程序的构建方式 这就是在 packge.json 中构建应用程序的方式

 "builderForLinx": "electron-packager --out linx64 --overwrite --platform linux --appname myApp --asar"  

这个应用程序结构 myApp -> myApp(linux 可执行文件), mian.js, resources -> myApp.asar

这给出了linux版本的电子包。但我必须运行以下命令才能运行该应用程序

sudo chmod +x ./myApp
sudo chown root chrome-sandbox
sudo chmod 4755 chrome-sandbox

实际上,我从 tfs 构建工件中获取了该应用程序,当我下载该应用程序时,我想直接运行 ./myApp。

这是我的 tfs 定义,我在 bash 中运行所有这些,而不是我的代理/构建机器是 Windows 机器。

#!/bin/bash 
cd "$(Build.ArtifactStagingDirectory)/myApp" ; pwd
chown <<username>> chrome-sandbox
chmod 4755 chrome-sandbox

注意:$(Build.ArtifactStagingDirectory) 是指向工件目录的 tfs 变量。 当我直接在 Linux 机器上运行应用程序时,我看到这个错误

The SUID sandbox helper binary was found, but is not configured correctly. Rather than run without sandboxing I'm aborting now. You need to make sure that /home/staff/kjeeva/licregsNew/v211/licensingclient/linx64/ClientSettings-asar/chrome-sandbox is owned by root and has mode 4755.

我不太熟悉linux环境,对此的任何帮助或建议都会有很大帮助。


The SUID sandbox helper binary was found ...这似乎是 Linux 中 Electron 框架的一个热点问题。你可以检查这次讨论 https://github.com/electron/electron/issues/17972更多细节。

以下是该讨论中可用的解决方法:

1.首先像您所做的那样 chown 并 chmod 文件。

sudo chown root chrome-sandbox
chmod 4755 chrome-sandbox

2.如果你得到一个appimage,你可以直接运行它--no-sandbox arguemnt

3.sysctl kernel.unprivileged_userns_clone=1 to 启用非特权访问 https://github.com/electron/electron/issues/17972#issuecomment-486927073.

您已经使用过#1,但您也可以检查是否#2/#3更适合你的场景。

这是我的 tfs 定义,我在 bash 中运行所有这些,而不是我的代理/构建 机器是windows的。

由于您的代理部分是Linux,其他是Windows,我建议您可以使用管理 bash 任务。您可以有两个不同的 bash 任务/步骤,一个用于 Linux,另一个用于 Windows。然后设置它们的条件以有条件地运行正确的命令。像这样的事情:

- task: Bash@3
  inputs:
    targetType: 'inline'
    script: |
      # Write commands here
      # ...
  displayName: 'Bash command for Linux'
  condition: and(succeeded(), eq(variables['Agent.OS'], 'Linux'))

- task: Bash@3
  inputs:
    targetType: 'inline'
    script: |
      # Write commands here
      # ...
  displayName: 'Bash command for Windows'
  condition: and(succeeded(), eq(variables['Agent.OS'], 'Windows_NT'))

关于预定义变量Agent.OS,你可以检查.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

构建电子 Linux 发行版:已找到 SUID 沙箱帮助程序二进制文件,但配置不正确 的相关文章

  • Linux Sync() 等效 Windows API

    Linux sync API 会将内存中缓冲的任何数据写入磁盘 Windows 中是否有等效的调用 The 刷新文件缓冲区 http msdn microsoft com en us library windows desktop aa36
  • {app, BrowserWindow} 在 JavaScript (node.js) 中意味着什么?

    在阅读制作软件的文档时electron https electron atom io 我在一开始就遇到过这种类型的代码index jsfile 通常执行开始的文件 const app BrowserWindow require electr
  • 此版本的 MongoDB 太新,无法在现有数据文件上启动。尝试 MongoDB 4.2 或更早版本

    我最近将 mongodb 版本从 4 2 更新到了 4 4 似乎它发生了一些重大变化 现在该服务根本没有运行 并向我显示此错误 我知道降级不是一个选择 但这有解决办法吗 提前致谢 在使用 mongodb 4 4 之前 您首先需要将数据库升级
  • 来自我的廉价中国 IP 网络摄像头的 JPEG 流是什么格式?

    我有一个便宜的中国 IP 网络摄像头 它有一个显示实时视频的网络界面 该视频似乎是输入浏览器的一系列 jpeg 图像 如果我将 wget 指向 URLhttp my ip camera video cgi http my ip camera
  • PyCharm 项目文件消失了

    我当时正在做一个 python 项目JetBrains PyCharm 2016 2 https www jetbrains com pycharm 在 Lubuntu 上 突然之间 我的所有项目文件都从 IDE 中消失了 我尝试了以下方法
  • 部分程序的性能统计

    perf 是否可以仅收集程序执行的一部分的硬件计数器统计信息 如果是这样 怎么办 likwid 提供了能够定义命名区域的功能 但如果这可以在仅安装了 perf 的系统上实现 那就太好了 之前的一些问题已经返回了相关答案 但仍然存在一些不足
  • 什么是文件通配符?

    我只是想知道什么是文件通配符 我以前从未听说过它 当我尝试在网上查找它时也找不到它的定义 通配符是 and 以及您可能熟悉的其他一些模式匹配器 通配符解释标准通配符 和 方括号中的字符列表以及某些其他特殊字符 例如用于否定匹配意义的 当 s
  • 什么是文件通配符?

    我只是想知道什么是文件通配符 我以前从未听说过它 当我尝试在网上查找它时也找不到它的定义 通配符是 and 以及您可能熟悉的其他一些模式匹配器 通配符解释标准通配符 和 方括号中的字符列表以及某些其他特殊字符 例如用于否定匹配意义的 当 s
  • 使用另一个运行 Ansible 的 Vagrant Linux VM 来配置 Vagrant Linux VM

    我知道 Ansible 在 Windows 上运行时存在问题 这就是为什么我想避免将它用于我的主机 我想配置一个在 VirtualBox 中运行的本地 Linux 虚拟机 我想知道是否有人可以告诉我是否可以使用 vagrant 在同一个机器
  • 让应用程序在启动时运行

    我正在制作一个 mac 应用程序原子壳层 https github com atom atom shell位于菜单栏中 我想知道我的选择是什么让它在启动时运行 是否必须由用户手动完成 我需要获得用户的许可才能执行此操作吗 我将如何使用 No
  • Android API 中断

    我已经在 Ubuntu 上安装了 android studio 有一个带有中断图像的 API 我也尝试过重新安装 我应该怎么做才能克服这个问题 删除它后 它不会显示在 sdk 管理器中 提前致谢 首先选择并删除Intel x86 Atom
  • Android API 中断

    我已经在 Ubuntu 上安装了 android studio 有一个带有中断图像的 API 我也尝试过重新安装 我应该怎么做才能克服这个问题 删除它后 它不会显示在 sdk 管理器中 提前致谢 首先选择并删除Intel x86 Atom
  • “source script.sh”和“./script.sh”有什么区别?

    有什么区别source
  • “source script.sh”和“./script.sh”有什么区别?

    有什么区别source
  • Linux:“用户名”不在 sudoers 文件中。此事件将被报告[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 在 Linux 机器上登录 ssh 后 我收到以下消息 用户名 不在 sudoers 文件中 此事件将被报告 我该如何解决这个问题 我正在
  • 从 VS Team Services 构建中运行的 Powershell 创建工作区

    我正在编写一个 Powershell 脚本作为 Visual Studio Team Services 构建的一部分 该构建使用托管构建控制器 该脚本旨在签出文件 进行更改 然后将其重新签入 在脚本中我试图调用tf命令创建新工作区 但我遇到
  • 被杀死的进程/线程会释放互斥锁吗?

    多个进程访问共享内存 并使用互斥体锁定它pthread mutex lock 为了同步 每个进程都可以随时被杀死 事实上我描述过php fpm with APC扩展 但这并不重要 如果进程锁定互斥锁然后被杀死 互斥锁会自动解锁吗 或者有什么
  • 无法在 Visual Studio Code 中安装扩展

    我是 Arch Linux 的用户 我的问题是无法安装扩展 我遵循了 Microsoft 页面 其中说我应该单击 ctrl P 然后写入ext install package what I m looking for 所以我就这么做了 单击
  • Linux 共享库中缺少函数

    我支持一个 Linux 程序 该程序允许用户编写自己的基于 so 文件的插件 这些插件在运行时使用 dlopen 加载 有时 用户会忘记在 makefile 中包含包含必要函数定义的 C 文件 当插件管理器使用 dlsym 从依赖于这些缺失
  • 在bash脚本中输入MySQL密码

    我有一个 bash 脚本 需要在 MySQL 中执行一些操作 到目前为止我有这样的事情 bin sh read p Enter your MySQL username sqluname read sp Enter your MySQL pa

随机推荐