<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Oct 30, 2017 at 9:45 AM, Pekka Paalanen <span dir="ltr"><<a href="mailto:ppaalanen@gmail.com" target="_blank">ppaalanen@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span class="gmail-">On Mon, 30 Oct 2017 13:45:24 +0000<br>
"Ucan, Emre (ADITG/ESB)" <<a href="mailto:eucan@de.adit-jv.com">eucan@de.adit-jv.com</a>> wrote:<br>
<br>
> Hello Matt and Pekka,<br>
><br>
> Actually, we are OK with running weston with a static tty within a<br>
> systemd service file, but launcher_direct_connect() function is<br>
> failing when user is not root.<br>
><br>
> Therefore, we patched weston to remove the expilicit check for root<br>
> user.  I am planning to send this patch to the mailing list.<br>
><br>
> We also updated ownership of drm and tty devices accordingly, so that<br>
> weston can run as non-root user.<br>
<br>
</span>Hi,<br>
<br>
IMO that is bad practice. I'll explain why below, since Matt had a<br>
similar question. There is a reason why launcher-direct requires root.<br>
It has not been written for anything else.<br>
<span class="gmail-"><br>
> > -----Original Message-----<br>
> > From: wayland-devel [mailto:<a href="mailto:wayland-devel-">wayland-devel-</a><br>
> > <a href="mailto:bounces@lists.freedesktop.org">bounces@lists.freedesktop.org</a>] On Behalf Of Matt Hoosier<br>
> > Sent: Montag, 30. Oktober 2017 14:28<br>
> > To: Pekka Paalanen<br>
> > Cc: wayland mailing list<br>
> > Subject: Re: Automatically choosing a VT for DRM compositor?<br>
> ><br>
> > On Mon, Oct 30, 2017 at 5:10 AM, Pekka Paalanen<br>
> > <<a href="mailto:ppaalanen@gmail.com">ppaalanen@gmail.com</a>> wrote:<br>
> ><br>
<br>
> ><br>
</span><span class="gmail-">> >     Does this mean you would only cater for the "run weston as<br>
> > root" case? ;-)<br>
> ><br>
> > No, that wasn't the intent. Running a DRM instance of Weston as a<br>
> > non-root user doesn't require anything really more than adjusting<br>
> > ownership on the /dev/tty* character devices so that the VT can be<br>
> > configured. I.e. a user 'weston' would need added to the 'tty' Unix<br>
> > group to have permission to run ioctl(/dev/tty0, VT_OPENQRY) and<br>
> > would also need assigned ownership of /dev/tty[0...7] in order to<br>
> > do KDSETMODE. Nobody would want to do that on the desktop because<br>
> > of the security implications, but that seems fine to do on an<br>
> > embedded system.<br>
<br>
</span>You need elevated privileges for:<br>
- the tty unless already owning the session<br>
- the DRM KMS device node and DRM master<br>
- the input devices<br>
<br>
All these are preferably handled by an agent like weston-launch or<br>
logind, because giving weston and therefore usually all graphical<br>
applications access to them is a security risk. Particularly input<br>
devices: if Weston can open them, by default there is nothing to<br>
prevent random apps opening them as well.<br>
<br>
You are on embedded, you audit your software, you don't care about<br>
the above security issues because you don't have input devices or<br>
no-one can run arbitrary programs or whatever. You can invent your own<br>
security setups by running weston as one user and jumping through hoops<br>
to run apps as other users. Running apps as a different user does have<br>
its merits.<br>
<br>
But why would you bother inventing an inferior setup if you use systemd<br>
already and therefore you have logind where all this has already been<br>
implemented with security in mind?<br></blockquote><div><br></div><div>This discussion seems to hinge on whether logind can be made to work for Weston as spawned by system units (rather than user-session units). I find that sd_pid_get_session() has always failed for me (leading to the "logind not running in a systemd session" Weston log entry).</div><div><br></div><div>The documentation on sd_pid_get_session() says:</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Note that not all processes are part of a login session (e.g. system service processes, user processes that are shared between multiple sessions of the same user, or kernel threads).</blockquote><div><br></div><div>So both empirically and in documentation, this seems like something that won't work. Do you have some successful past experience in using logind with system service processes? I'm not seeing the path to success here for system units.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Even if you got everything right, I think it shows a bad example to<br>
others who are not aware of all the caveats you have carefully avoided.<br>
<br>
Is there something wrong with logind?<br>
<br>
<br>
Thanks,<br>
pq<br>
</blockquote></div><br></div></div>