#桌面应用程序 #pulse-audio #安全 #wayland #sudo

应用 ego

Alter Ego: 在不同的本地用户下运行 Linux 桌面应用程序

11 个版本 (7 个稳定)

1.1.7 2023年6月26日
1.1.6 2023年1月21日
1.1.5 2022年1月2日
1.1.3 2021年11月12日
0.3.1 2020年3月17日

#3#sudo

MITLGPL-2.1

39KB
783

ego (也称为 Alter Ego)

Crates.io version Tests status

你的所有游戏都需要访问你的文档、浏览器历史记录、SSH 私钥吗?

... 不需要?只需运行 ego steam

ego 是一个在另一个本地用户下运行 Linux 桌面应用程序的工具。目前与 Wayland、Xorg、PulseAudio 和 xdg-desktop-portal 集成。你可以把它看作是 Wayland 和 PulseAudio 的 xhost。这是通过文件系统 ACL 和 xhost 命令实现的。

免责声明:请勿通过 ego 运行不受信任的程序。

发行版软件包

以下发行版提供软件包:

安装软件包后,将自己添加到 ego-users 组中。注销并重新登录后,ego 命令应该可以正常工作。

(varia/README.md 文件包含针对发行版打包者的建议)

手动设置

ego 旨在提供合理的默认设置并易于设置。

要求

  • Rust & cargo
  • libacl.so 库(Debian/Ubuntu: libacl1-dev; Fedora: libacl-devel; Arch: acl)
  • xhost 二进制文件(Debian/Ubuntu: x11-xserver-utils; Fedora: xorg-xhost; Arch: xorg-xhost)

推荐:(使用 --sudo 模式时不需要,但某些桌面功能可能无法正常工作)。

  • machinectl 命令(Debian/Ubuntu/Fedora: systemd-container; Arch: systemd)
  • xdg-desktop-portal-gtk(Debian/Ubuntu/Fedora/Arch: xdg-desktop-portal-gtk)

安装

  1. 运行

    cargo install ego
    sudo cp ~/.cargo/bin/ego /usr/local/bin/
    
  2. 创建名为 "ego" 的本地用户:[1]

    sudo useradd ego --uid 155 --create-home
    
  3. 这就完成了,试试吧

    ego xdg-open .
    

[1] ego 用户不需要额外的组。UID 小于 1000 的用户会在登录屏幕上隐藏。

避免密码提示

如果使用 "machinectl" 模式(默认情况下,如果可用),则需要较新的 systemd 版本 >=247 和 polkit >=0.106 来安全地进行此操作。

创建文件 /etc/polkit-1/rules.d/50-ego-machinectl.rules,polkit 会自动加载它(将 <myname> 替换为您的用户名)

polkit.addRule(function(action, subject) {
    if (action.id == "org.freedesktop.machine1.host-shell" &&
        action.lookup("user") == "ego" &&
        subject.user == "<myname>") {
            return polkit.Result.YES;
    }
});
sudo 模式

对于 sudo,将以下内容添加到 /etc/sudoers 中(将 <myname> 替换为您的用户名)

<myname> ALL=(ego) NOPASSWD:ALL

变更日志

1.1.7 (2023-06-26)
  • 发行版打包:添加 tmpfiles.d 配置以创建缺失的 ego 用户主目录 (#134,修复了问题 #131)
  • Ego 现在会检测并警告目标用户的主目录不存在或所有权错误 (#139)
  • 最低支持的 Rust 版本 (MSRV) 现在是 1.64.0 (#116)
  • 各种小的清理工作,替换了不维护的依赖项,依赖项更新。
1.1.6 (2023-01-21)
  • 更新到 clap 4.0.x (#101) 和许多其他依赖项更新
  • 修复新 clippy 检测的 bug (#95, #93, #111)
  • 使用 snapbox 代替手动编写的快照测试 (#102)
  • 最低支持的 Rust 版本 (MSRV) 被确定为 1.60.0 (#113)
1.1.5 (2022-01-02)
  • 记录 xhost 要求,改进 xhost 错误报告 (#76)
  • 升级到 clap 3.0.0 稳定版 (#71)

(版本 1.1.4 已被撤回,它意外地带有回归)

1.1.3 (2021-11-12)
  • 锁定 clap 版本(修复 #65) (#68)
1.1.2 (2021-05-08)
  • 如果设置了 SUDO_ASKPASS,则启用 sudo askpass 辅助程序 (#58)
    • 以下是如何使用 sudo 设置 GUI 密码提示的示例: https://askubuntu.com/a/314401
    • 注意:对于 machinectl 模式下的 GUI 密码提示,您需要运行 Polkit 身份验证代理
1.1.1 (2021-03-23)
  • 包含 polkit、sudoers.d、sysusers.d 的插入文件 -- 用于发行版包 (#53)
  • 文档调整 (#51, #53)
1.1.0 (2021-03-07)
  • 如果可用,则默认为 machinectl,否则回退到 sudo (#47)
  • 文档和小的改进 (#46, #48)
0.4.1 (2021-01-29)
  • 在 Ubuntu、Debian 的 dash shell 中修复了 --machinectl (#42)
  • 修复了命令执行失败时的错误报告 (#43)
  • 记录了如何避免使用 machinectl 的密码提示以及其他文档调整 (#41)
0.4.0 (2021-01-29)
  • 改进了与桌面环境的集成
    • 在 machinectl 会话中启动 xdg-desktop-portal-gtk (#6, #31)
    • 旧行为仍然可以通过 --machinectl-bare 开关使用。
  • Shell 完成文件现在使用 clap-generate 3.0.0-beta.2 自动生成 (#36, #28)
    • bash、zsh 和 fish shell 默认支持。
  • 代码重构和 CI 改进 (#21, #23)
  • 依赖项更新 (#20, #24, #27, #22, #26, #33, #35, #38, #37, #39)
0.3.1 (2020-03-17)
  • 改进了缺失目标用户时的错误消息 (#16)
0.3.0 (2020-03-02)
  • 初始 machinectl 支持(使用 --machinectl) (#8)
  • 更新:posix-acl (#9)
0.2.0 (2020-02-17)
  • 添加了 zsh 完成支持 (#5)
  • 添加了 --verbose 标志 (#4)
  • 添加了 --user 参数和命令行解析 (#3)
0.1.0 (2020-02-13)

初始版本

附录

Ego 根据 MIT 许可证授权(见 LICENSE 文件)。Ego 由 Marti Raudsepp 创建。Ego 的主要网站在 https://github.com/intgr/ego

感谢 Alexander Payne (myrrlyn) 放弃未使用的 "ego" crate 名称。

依赖项

~3MB
~55K SLoC