Re: [PATCH] newrole: preserve environment variable XDG_RUNTIME_DIR

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Am Di., 26. Jan. 2021 um 08:57 Uhr schrieb Petr Lautrbach <plautrba@xxxxxxxxxx>:
>
> Nicolas Iooss <nicolas.iooss@xxxxxxx> writes:
>
> >
> > Hello,
> > I am quite uncomfortable with this approach of keeping only one more
> > variable: why is only XDG_RUNTIME_DIR added, and not also
> > XDG_DATA_DIRS, XDG_SESSION_ID, XDG_SESSION_PATH, etc.? For example
> > someone pointed out in
> > https://github.com/systemd/systemd/issues/18301#issuecomment-763933678
> > that DBUS_SESSION_BUS_ADDRESS could also need to be preserved, so
> > there seem to be a long list of items.
> >
> > Moreover I am wondering whether this would be fine to keep such
> > environment variables while newrole uses the information from another
> > user (i.e. when newrole is built with USE_AUDIT and
> > audit_getloginuid() != getuid() because the user changed their UID ;
> > in such a situation newrole resets $HOME and $SHELL to the HOME of
> > audit_getloginuid()).
> >
> > In my humble opinion, I also do not understand why TERM, DISPLAY and
> > XAUTHORITY are kept but not LANG, LC_ALL, and all other LC_...
> > variables. I understand that there exist dangerous environment
> > variables (LD_LIBRARY_PATH, LD_PRELOAD, ...), that resetting the
> > environment to a minimal one is nice, and that using "newrole
> > --preserve-environment" could seem dangerous. For information, sudo
> > has been maintaining a list of "bad" variables, of variables with
> > potential dangerous values and of variables preserved by default, in
> > https://github.com/sudo-project/sudo/blob/SUDO_1_9_5p1/plugins/sudoers/env.c#L134-L228.
> >
> > This being said, I have never really used newrole but to expose a bug
> > in "sudo -r" a few years ago
> > (https://bugzilla.sudo.ws/show_bug.cgi?id=611 "root user can change
> > its SELinux context without password"). Since then I have always used
> > sudo to change role, with the advantage that it can be configured to
> > keep some environment variables, so I am not really the best reviewer
> > for such a patch (and also I am a little bit confused about the
> > "isolation guarantees" that newrole implements, and I am not sure
> > whether keeping XDG_RUNTIME_DIR would not break such guarantees).
> >
> > TL;DR: can another maintainer more familiar with newrole review this
> > patch, please?
> >
> > Thanks,
> > Nicolas
>
> I think it does not make much sense to keep XDG_RUNTIME_DIR
>
> When you change a role, type or level, it's like changing a
> linux user and it should be completely new session.
>
> In Fedora, sysadm_t is not even allow to get status of
> staff_t units:
>
>     [staff@rawhide ~]$ echo $XDG_RUNTIME_DIR
>     /run/user/1001
>     [staff@rawhide ~]$ newrole -r sysadm_r
>     Password:
>     [staff@rawhide ~]$ export XDG_RUNTIME_DIR=/run/user/1001
>     [staff@rawhide ~]$ systemctl --user list-units
>     Failed to list units: Access denied
>
>     systemd[33326]: selinux: avc:  denied  { status } for auid=n/a uid=1001 gid=1001 cmdline="" scontext=staff_u:sysadm_r:sysadm_t:s0-s0:c0.c1023 tcontext=staff_u:staff_r:staff_t:s0-s0:c0.c1023 tclass=system permissive=0
>     systemd[33326]: selinux: avc:  denied  { status } for auid=n/a uid=1001 gid=1001 cmdline="" scontext=staff_u:sysadm_r:sysadm_t:s0-s0:c0.c1023 tcontext=staff_u:staff_r:staff_t:s0-s0:c0.c1023 tclass=system permissive=0
>
> There's also question why one would use newrole to control their a
> systemd user session when it's possible to control it directly.
>

Thanks for your comments.
Seems this uncommon use case is not worth the trouble at all, and one
can as fallback set environment variables via the user's shell
settings (~/.bashrc).
Please disregard this patch.



[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux