Crates.io | ego |
lib.rs | ego |
version | 1.1.7 |
source | src |
created_at | 2018-12-15 14:56:26.588438 |
updated_at | 2023-06-26 00:44:54.665985 |
description | Alter Ego: run Linux desktop applications under a different local user |
homepage | https://github.com/intgr/ego |
repository | https://github.com/intgr/ego |
max_upload_size | |
id | 102036 |
size | 62,994 |
Do all your games need access to your documents, browser history, SSH private keys?
... No? Just run
ego steam
!
Ego is a tool to run Linux desktop applications under a different local user. Currently
integrates with Wayland, Xorg, PulseAudio and xdg-desktop-portal. You may think of it as xhost
for Wayland and PulseAudio. This is done using filesystem ACLs and xhost
command.
Disclaimer: DO NOT RUN UNTRUSTED PROGRAMS VIA EGO. However, using ego is more secure than running applications directly under your primary user.
Distribution packages are available for:
After installing the package, add yourself to the ego-users
group. After logout and login,
the ego
command should just work.
(varia/README.md documents recommendations for distro packagers)
Ego aims to come with sane defaults and be easy to set up.
Requirements:
libacl.so
library (Debian/Ubuntu: libacl1-dev; Fedora: libacl-devel; Arch: acl)xhost
binary (Debian/Ubuntu: x11-xserver-utils; Fedora: xorg-xhost; Arch: xorg-xhost)Recommended: (Not needed when using --sudo
mode, but some desktop functionality may not work).
machinectl
command (Debian/Ubuntu/Fedora: systemd-container; Arch: systemd)xdg-desktop-portal-gtk
(Debian/Ubuntu/Fedora/Arch: xdg-desktop-portal-gtk)Installation:
Run:
cargo install ego
sudo cp ~/.cargo/bin/ego /usr/local/bin/
Create local user named "ego": [1]
sudo useradd ego --uid 155 --create-home
That's all, try it:
ego xdg-open .
[1] No extra groups are needed by the ego user. UID below 1000 hides this user on the login screen.
If using "machinectl" mode (default if available), you need the rather new systemd version >=247 and polkit >=0.106 to do this securely.
Create file /etc/polkit-1/rules.d/50-ego-machinectl.rules
, polkit will automatically load it
(replace <myname>
with your own username):
polkit.addRule(function(action, subject) {
if (action.id == "org.freedesktop.machine1.host-shell" &&
action.lookup("user") == "ego" &&
subject.user == "<myname>") {
return polkit.Result.YES;
}
});
For sudo, add the following to /etc/sudoers
(replace <myname>
with your own username):
<myname> ALL=(ego) NOPASSWD:ALL
snapbox
instead of hand-coded snapshot testing (#102)(Version 1.1.4 was yanked, it was accidentally released with a regression)
machinectl
if available, fall back to sudo
otherwise (#47)--machinectl
on Ubuntu, Debian with dash shell (#42)--machinectl-bare
switch.--machinectl
) (#8)--verbose
flag (#4)--user
argument and command-line parsing (#3)Initial version
Ego is licensed under the MIT License (see the LICENSE
file). Ego was created by Marti Raudsepp.
Ego's primary website is at https://github.com/intgr/ego
Thanks to Alexander Payne (myrrlyn) for relinquishing the unused "ego" crate name.