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
39KB
783 行
ego (也称为 Alter Ego)
你的所有游戏都需要访问你的文档、浏览器历史记录、SSH 私钥吗?
... 不需要?只需运行
ego steam
!
ego 是一个在另一个本地用户下运行 Linux 桌面应用程序的工具。目前与 Wayland、Xorg、PulseAudio 和 xdg-desktop-portal 集成。你可以把它看作是 Wayland 和 PulseAudio 的 xhost
。这是通过文件系统 ACL 和 xhost
命令实现的。
免责声明:请勿通过 ego 运行不受信任的程序。
发行版软件包
以下发行版提供软件包:
- Arch Linux (用户贡献的软件包) https://aur.archlinux.org/packages/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)
安装
-
运行
cargo install ego sudo cp ~/.cargo/bin/ego /usr/local/bin/
-
创建名为 "ego" 的本地用户:[1]
sudo useradd ego --uid 155 --create-home
-
这就完成了,试试吧
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