[Spice-devel] Brainstorming help with x11spice on socket permissions across users
Jeremy White
jwhite at codeweavers.com
Tue May 26 16:15:45 UTC 2020
On 5/26/20 10:44 AM, Frediano Ziglio wrote:
> I suppose you are talking about the unix socket for vdagent, right?
Right, but the same mechanism works well for adding audio for example
(but you have pulseaudio write to a socket).
>
>>
>> Hi all,
>>
>> I'm trying to get x11spice and spice-html5, at least as packaged for
>> Fedora, into a pretty much 'turn key' state.
>>
>> I've got 3 use cases. The first is user A sharing their current
>> desktop, either for themselves, or to get help. That case is largely
>> done, imho, modulo some documentation and perhaps some streamlining.
>> The second is user A getting access to a new session for themselves. I
>> don't feel blocked on this case; the work should be straight forward, if
>> fiddly (I may regret those words; doing a secure 'su' like function out
>> of apache may be harder than I think).
>>
>
> I would check for the 2nd case if the session is maintained in case you
> are using SystemD. I suppose the user could want to launch a background
> X11 session and disconnect from the system.
Yeah, good point. In fact, gdm had a cool bug in stock Fedora 32 that
was fixed by a recent update. (If you logged in via xdmcp to any user
other than the console user, the console switched to the new user).
>
>> The 3rd case, however, has me troubled. This is the case that user A
>> (potentially apache) starts x11spice which then does an xdmcp request to
>> gdm, and eventually supports a log in by user B. This makes it
>> challenging to provide a way for user B to launch a spice agent or a
>> pulseaudio daemon and have it securely connect back to the spice process
>> started by user A. The approach I've used in the past is to have a
>> privileged binary use information from an X atom to adjust socket
>> permissions. But that feels unsatisfying, and it seems to me that this
>> is an area with a lot of modern thinking that I've largely missed.
>>
>
> As far as I know in the normal (physical) case in case of XDMCP two X11
> sessions are involved and X11 client have to reconnect to another session.
> So for symmetry you should reconnect the client and have separate socket
> for vdagent. Sockets are associated (permission) to different users and
> processes are associated to same user.
>
>> As an added complexity, in the ideal case, you have a vdagent running as
>> user A during the login process, which knows to reap itself and give way
>> to a vdagent launched by user B.
>>
>> I was hoping that others would have modern instincts on how to more
>> correctly implement the third use case. Clue bats or other ideas welcome.
>>
>> Cheers,
>>
>> Jeremy
>
> To be honest I don't remember last time I used XDMCP.
Yeah, the option I'm leaning towards is discarding that use case. (And,
tbh, the point of this exercise it is mostly to increase the overall
usability; I don't really have a specific problem I'm trying to solve).
Cheers,
Jeremy
More information about the Spice-devel
mailing list