http://bugzilla.opensuse.org/show_bug.cgi?id=1205169 Bug ID: 1205169 Summary: With sudo the XDG variables point to SUDO_UID aka calling user instead of 0 aka root Classification: openSUSE Product: openSUSE Tumbleweed Version: Current Hardware: All OS: openSUSE Leap 15.4 Status: NEW Severity: Normal Priority: P5 - None Component: Basesystem Assignee: screening-team-bugs@suse.de Reporter: werner@suse.com QA Contact: qa-bugs@suse.de CC: zimtsui@gmail.com Depends on: 1205109 Found By: --- Blocker: --- Note that the description below is not fully correct: /suse/werner> sudo printenv | grep XDG XDG_CONFIG_DIRS=/etc/xdg:/usr/local/etc/xdg:/usr/etc/xdg XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session11 XDG_MENU_PREFIX=fvwm- XDG_CONFIG_HOME=/suse/werner/.config XDG_SEAT=seat0 XDG_SESSION_DESKTOP= XDG_SESSION_TYPE=x11 XDG_CURRENT_DESKTOP=FVWM XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0 XDG_CACHE_HOME=/suse/werner/.cache/noether:0 XDG_SESSION_CLASS=user XDG_DESKTOP_DIR=/suse/werner/Desktop XDG_SESSION_COOKIE=noether XDG_VTNR=7 XDG_SESSION_ID=733 XDG_RUNTIME_DIR=/run/user/223 XDG_DATA_DIRS=/usr/local/share:/usr/share:/usr/share/gdm:/var/lib/menu-xdg that is sudo does *not* remove the XDG variables from the ennvirnment nor does the pam_systemd module set the correct XDG variables. +++ This bug was initially created as a clone of Bug #1205109 +++ # Description Emacs checks whether environment variable `XDG_RUNTIME_DIR` exists to determine where a certain socket file should be placed. If `XDG_RUNTIME_DIR` doesn't exist, emacs will fallback to some other location. See <https://git.savannah.gnu.org/cgit/emacs.git/tree/lib-src/emacsclient.c?h=emacs-27.2#n1393> `sudo` defaults to unset all environment variables and set some certain ones. So any program run by `sudo` should miss `XDG_RUNTIME_DIR` in its environment. If I run `sudo emacs-nox`, everything goes expectedly. But if I run `sudo emacs`, emacs prompts `Unable to set up transient service directory: XDG_RUNTIME_DIR "/run/user/0" not available: No such file or directory`. # Possible reason The binary `/usr/bin/emacs` is not built from emacs source, but made by the SUSE package maintainer. The binary checks whether it's run in terminal or X to determine whether it should exec `emacs-nox` or `emacs-x11`. The `/usr/bin/emacs` binary defines an environment variable `XDG_RUNTIME_DIR` as `/run/user/<USER_ID>` arbitrarily. But `/run/user/0` doesn't exist because it should be created by `/etc/profile` in a login shell. And `sudo` doesn't spawn a new login shell. # Reproduction 1. Install `emacs` and `emcas-nox` from zypper, and don't install `emacs-x11`. 1. Restart your computer and don't login as root in any tty, but login as a regular user. 1. `sudo emacs` 1. Quit emacs. 1. You will see the prompt. # Versions openSUSE Leap 15.4 Emacs 27.2 Sudo 1.9.9 -- You are receiving this mail because: You are on the CC list for the bug.