Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

{activation-scripts,activate-system}: purify environment #1303

Merged
merged 3 commits into from
Jan 27, 2025

Conversation

emilazy
Copy link
Collaborator

@emilazy emilazy commented Jan 27, 2025

Split off from the Plan stack; see commit messages for details.

It seems like a bad idea to keep restarting the activation daemon
when it fails.
I believe this has been obsolete since `set -e` was added in
8708ebb.
This ensures that system activation does not depend on various
details of its process environment, ensuring uniformity across various
invocation contexts and with the `activate-system` daemon. This becomes
more important in a post‐user‐activation world to avoid problematic
dependencies like `$SUDO_USER`, but is a good idea in general.

The `sudoers(5)` defaults on my Sequoia system are:

    Defaults	env_reset
    Defaults	env_keep += "BLOCKSIZE"
    Defaults	env_keep += "COLORFGBG COLORTERM"
    Defaults	env_keep += "__CF_USER_TEXT_ENCODING"
    Defaults	env_keep += "CHARSET LANG LANGUAGE LC_ALL LC_COLLATE LC_CTYPE"
    Defaults	env_keep += "LC_MESSAGES LC_MONETARY LC_NUMERIC LC_TIME"
    Defaults	env_keep += "LINES COLUMNS"
    Defaults	env_keep += "LSCOLORS"
    Defaults	env_keep += "SSH_AUTH_SOCK"
    Defaults	env_keep += "TZ"
    Defaults	env_keep += "DISPLAY XAUTHORIZATION XAUTHORITY"
    Defaults	env_keep += "EDITOR VISUAL"
    Defaults	env_keep += "HOME MAIL"

Of these preserved environment variables, the ones that are set in
practice when I run `sudo env` that aren’t set in the activation
script here are:

* `$COLORTERM`
* `$DISPLAY`
* `$EDITOR`
* `$MAIL`
* `$SSH_AUTH_SOCK`
* `$TERM`
* `$__CF_USER_TEXT_ENCODING`

Most of these seem either pointless or actively harmful to set for
the purpose of the system activation script.

This will mean that tools run during activation won’t print output
in the user’s preferred language, but that’s probably the right
trade‐off overall, as that is likely to break activation scripts
that parse command output anyway.
@emilazy emilazy requested a review from Enzime January 27, 2025 22:32
export PATH="${pkgs.gnugrep}/bin:${pkgs.coreutils}/bin:@out@/sw/bin:/usr/bin:/bin:/usr/sbin:/sbin"
export USER=root
export LOGNAME=root
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was this the primary user previously?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nope, mainly $HOME is weird like that (on macOS):

yuyuko:~
❭ sudo env
COLORTERM=truecolor
EDITOR=kak
DISPLAY=/private/tmp/com.apple.launchd.BNiGA7fTUw/org.xquartz:0
__CF_USER_TEXT_ENCODING=0x0:0:2
PATH=/etc/profiles/per-user/emily/bin:/run/current-system/sw/bin:/usr/local/bin:/System/Cryptexes/App/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/local/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/bin:/var/run/com.apple.security.cryptexd/codex.system/bootstrap/usr/appleinternal/bin:/Library/Apple/usr/bin
LANG=en_GB.UTF-8
HOME=/Users/emily
SSH_AUTH_SOCK=/Users/emily/.ssh/agent
TERM=xterm-ghostty
MAIL=/var/mail/root
LOGNAME=root
USER=root
SHELL=/bin/zsh
SUDO_COMMAND=/usr/bin/env
SUDO_USER=emily
SUDO_UID=501
SUDO_GID=20

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Interesting, on Linux $SUDO_HOME exists

@emilazy emilazy merged commit 5c12a6f into LnL7:master Jan 27, 2025
3 checks passed
@emilazy emilazy deleted the push-ulxuwyrnkwpq branch January 27, 2025 23:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants