Xpra: Ticket #1616: Domain users can not start a session

Good afternoon. CentOS 7.3 64 bit. Xpra any version, including v2.1-r16525. Local users of Linux without any problems start the session both via ssh and tcp. Domain users can not start the session. You receive an error when starting:

[user@srvusi06 ~]$ xpra start --start-child=firefox --bind-tcp=0.0.0.0:10001    2017-08-08 09:23:10,657 server failure: disconnected before the session could be established
2017-08-08 09:23:10,657 server requested disconnect: server error (failed to start a new session)
Warning: cannot use the system proxy for 'start' subcommand,
 FAILURE
[user@srvusi06 ~]$ Entering daemon mode; any further errors will be reported to:
  /run/user/16777219/xpra/S23948.log
Actual display used: :13
Actual log file name is now: /run/user/16777219/xpra/:13.log

--

[user@srvusi06 xpra]$ cat /run/user/16777219/xpra/:13.log
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
_XSERVTransSocketUNIXCreateListener: ...SocketCreateListener() failed
_XSERVTransMakeAllCOTSServerListeners: server already running
X.Org X Server 1.17.2
Release Date: 2015-06-16
X Protocol Version 11, Revision 0
Build Operating System:  2.6.32-573.18.1.el6.x86_64
Current Operating System: Linux srvusi06 3.10.0-514.26.2.el7.x86_64 #1 SMP Tue J                                                                                                                                                             ul 4 15:04:05 UTC 2017 x86_64
Kernel command line: BOOT_IMAGE=/vmlinuz-3.10.0-514.26.2.el7.x86_64 root=/dev/ma                                                                                                                                                             pper/cl-root ro crashkernel=auto rd.lvm.lv=cl/root rd.lvm.lv=cl/swap rhgb quiet                                                                                                                                                              LANG=ru_RU.UTF-8
Build Date: 06 November 2016  12:43:39AM
Build ID: xorg-x11-server 1.17.2-22.el7
Current version of pixman: 0.34.0
        Before reporting problems, check http://wiki.x.org
        to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
        (++) from command line, (!!) notice, (II) informational,
        (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(++) Log file: "/run/user/16777219/xpra/Xorg.S23948.log", Time: Tue Aug  8 09:23                                                                                                                                                             :10 2017
(++) Using config file: "/etc/xpra/xorg.conf"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
2017-08-08 09:23:13,560 created unix domain socket: /run/user/16777219/xpra/srvu                                                                                                                                                             si06-13
2017-08-08 09:23:13,561 created unix domain socket: /home/ABC/user/.xpra/srvusi0                                                                                                                                                             6-13
2017-08-08 09:23:13,562 created unix domain socket: /run/xpra/srvusi06-13
2017-08-08 09:23:13,972 html server unavailable, cannot find websockify module
2017-08-08 09:23:13,981 Warning: webcam forwarding is disabled
2017-08-08 09:23:13,981  the virtual video directory '/sys/devices/virtual/video                                                                                                                                                             4linux' was not found
2017-08-08 09:23:13,981  make sure that the 'v4l2loopback' kernel module is inst                                                                                                                                                             alled and loaded
2017-08-08 09:23:13,982 found 0 virtual video devices for webcam forwarding
2017-08-08 09:23:13,989 pulseaudio server started with pid 24108
2017-08-08 09:23:14,123 GStreamer version 1.4.5 for Python 2.7.5 64-bit
2017-08-08 09:23:14,139 D-Bus notification forwarding is available
2017-08-08 09:23:14,147 started command 'firefox' with pid 24137
2017-08-08 09:23:14,147 xpra X11 version 2.1-r16525 64-bit
2017-08-08 09:23:14,148  uid=16777219 (user), gid=16777216 (пользователи домена)
2017-08-08 09:23:14,148  running with pid 24064 on Linux CentOS Linux 7.3.1611 C                                                                                                                                                             ore
2017-08-08 09:23:14,148  connected to X11 display :13 with 24 bit colors
E: [pulseaudio] pid.c: Daemon already running.
2017-08-08 09:23:14,456 printer forwarding enabled using postscript and pdf
2017-08-08 09:23:14,456 3.7GB of system memory
Traceback (most recent call last):
  File "/usr/lib64/python2.7/site-packages/xpra/server/server_core.py", line 565                                                                                                                                                             , in add_listen_socket
    sock.listen(5)
  File "/usr/lib64/python2.7/socket.py", line 224, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 22] Недопустимый аргумент
2017-08-08 09:23:14,645 xpra is ready.
2017-08-08 09:23:15,650 Warning: pulseaudio has terminated shortly after startup                                                                                                                                                             .
2017-08-08 09:23:15,650  pulseaudio is limited to a single instance per user acc                                                                                                                                                             ount,
2017-08-08 09:23:15,658  and one may be running already for user 'user'
2017-08-08 09:23:15,658  to avoid this warning, either fix the pulseaudio comman                                                                                                                                                             d line
2017-08-08 09:23:15,658  or use the 'pulseaudio=no' option
[Parent 24137] WARNING: pipe error: Обрыв канала: file /builddir/build/BUILD/fir                                                                                                                                                             efox-52.2.0/firefox-52.2.0esr/ipc/chromium/src/chrome/common/ipc_channel_posix.c                                                                                                                                                             c, line 685

---

[root@srvusi06 ~]# groups user
user : пользователи домена wheel xpra user linuxusers BUILTIN\users

Help me plz



Tue, 08 Aug 2017 06:23:12 GMT - Antoine Martin: owner, description changed

I don't know what this says: socket.error: [Errno 22] Недопустимый аргумент Google says "invalid argument". I'm not sure why 5 would be an invalid argument. Socket errors are normally detected when we create them, not when we start listening to them.

Since you are creating the 3 standard socket locations:

created unix domain socket: /run/user/16777219/xpra/srvu si06-13
created unix domain socket: /home/ABC/user/.xpra/srvusi0 6-13
created unix domain socket: /run/xpra/srvusi06-13

It is fair to assume that error comes from the last one of those, which requires "xpra" group membership. (maybe you didn't logout and login again after adding the group?) You should be able to workaround this by removing socket-dirs = /run/xpra from /etc/xpra/conf.d/10_network.conf.


Tue, 08 Aug 2017 07:56:00 GMT - Alexander:

Thanks for the answer.

I don't know what this says: socket.error: [Errno 22] Недопустимый аргумент

Yes, its "invalid argument".

It is fair to assume that error comes from the last one of those, which requires "xpra" group membership. (maybe you didn't logout and login again after adding the group?)

Im reboot. without changes

You should be able to workaround this by removing socket-dirs = /run/xpra from /etc/xpra/conf.d/10_network.conf.

I tried it. Rebooted. Without changes

Calculating the difference between local ("alex") and domain users ("user"), I found the following:

[root@srvusi06 ~]# groups user
user : domain users linuxusers BUILTIN\users xpra
[root@srvusi06 ~]# groups alex
alex : alex xpra

I tried changing the main group to the domain user "user":

[root@srvusi06 ~]# usermod user -g xpra
Usermod: user "user" does not exist in /etc/passwd

I manually added a line to /etc/passwd (982 - its gid xpra):

user:x:16777219:982::/home/ABC/user:/bin/bash

Everything worked! The session started, I was able to connect to it from a remote computer. However, now the command

[root@srvusi06 ~]# getent passwd

returns 2 users "user" with the same ID:

...
alex:x:1002:1003::/home/alex3:/bin/bash
user:x:16777219:982::/home/ABC/user:/bin/bash
administrator:*:16777216:16777216:administrator:/home/ABC/administrator:/bin/bash
guest:*:16777217:16777217:guest:/home/ABC/guest:/bin/bash
krbtgt:*:16777218:16777216:krbtgt:/home/ABC/krbtgt:/bin/bash
user:*:16777219:16777216:User aa. family:/home/ABC/user:/bin/bash
....

It's probably wrong ... Any ideas?


Tue, 08 Aug 2017 11:22:21 GMT - Antoine Martin:

What exactly do you mean by "Domain users"? How can I set one up? (without requiring a network server)

I manually added a line to /etc/passwd

Probably a bad idea as this will conflict with your domain user, this may take precedence over it.


Tue, 08 Aug 2017 11:31:54 GMT - Alexander:

What exactly do you mean by "Domain users"?

Its user Windows Server 2008 R2 (domain ABC). CentOS join to realm Windows (use samba & winbind)

How can I set one up? (without requiring a network server)

Probably nothing ... I'll try to find a solution on the CentOS forum


Tue, 08 Aug 2017 16:11:01 GMT - Alexander:

I installed CentOS 7.3 again. Connect to the domain using sssd (instead of winbind). Happened. Works under domain users.

And the last question: I develop a load balancer between servers (asp.net core mvc), on which xpra may work. The servers will need to use a single file server, which hosts user profiles (home directories). I need to completely end the xpra session when the user is disconnected (and turn off the socket running under the user who is disconnected). I tried (cmd-file on Windows-client):

Xpra stop ssh/user:password@192.168.1.103/1 --start-child=firefox
Xpra start ssh/user:password@192.168.1.103/1 --start-child=firefox --window-close=shutdown
Xpra attach ssh/user:password@192.168.1.103/1 --start-child=firefox --window-close=shutdown

The server is terminated, but this happens when you click on any "cross", for example in the firefox window "about the program." Also, you can not use the "cross" to use the "file-exit" menu. Then the xpra server does not shut down.

How to implement this?


Tue, 08 Aug 2017 16:16:55 GMT - Antoine Martin:

I installed CentOS 7.3 again. Connect to the domain using sssd (instead of winbind). Happened. Works under domain users.

Do you mean to say that the problem is resolved when using sssd instead of winbind?

The servers will need to use a single file server, which hosts user profiles

You may want to look into sqlite auth (#1488) - that's easier to synchronize

I need to completely end the xpra session when the user is disconnected

Look at exit-with-client and exit-with-children. Only problem with exit-with-children is that firefox sometimes does not exit when you close it... (most other application work fine). window-close is not what you want.


Tue, 08 Aug 2017 17:10:07 GMT - Alexander:

Do you mean to say that the problem is resolved when using sssd instead of winbind?

Yes.

Look at exit-with-client and exit-with-children.

exit-with-children -not create socket use this key. exit-with-client - not work. And not found in https://xpra.org/manual


Tue, 08 Aug 2017 17:17:32 GMT - Antoine Martin:

exit-with-children -not create socket use this key.

I don't understand what that means.

exit-with-client - not work

How so? Just tried it now and it worked fine, when I disconnected my client, the server printed:

xpra client 1 disconnected.
Last client has disconnected, terminating

And not found in ​https://xpra.org/manual

Oops: exit-with-client was added a very long time ago (r5246), r16670 finally adds it to the man page


Wed, 09 Aug 2017 05:44:53 GMT - Alexander:

I don't understand what that means.

There were problems if the user was included in the xpra group. When specifying --exit-with-client --exit-with-client the server started under this user, but firefox did not start on the client. Simply connected to the session, but nothing was displayed. When the "empty" session was broken, the xpra server was terminated. As a result, I deleted the user from the group 'xpra' and everything worked as it should. I specify the keys -exit--whith-children -exit--with-client when the server is started, and after the closing of the firm on the client, the server exits. It works, thanks!

The truth is I still do not understand the meaning of the option --exit-with-client. All works (the server completes the work after the client closes firefox) and without it, but just in case, I use both options at the same time: On the server CentOS:

xpra start :5 --start-child=firefox --exit-with-children --exit-with-client

On the client Windows:

xpra attach ssh/login:IP/5

I use GSSAPI therefore for domain users when entering the SSH-server the password is not necessary to enter (SSO).

Its work. Thnx!


Wed, 09 Aug 2017 08:45:17 GMT - Antoine Martin: status changed; resolution set

... but firefox did not start on the client

This often happens when there is already a firefox process running as that user, any new firefox commands will be forwarded to the existing firefox process. No xpra options have any effect on this (mis)feature.

The truth is I still do not understand the meaning of the option --exit-with-client.

As per the man page: the server will terminate when the last client connection is closed. I don't know how to make this clearer.


Sat, 23 Jan 2021 05:29:12 GMT - migration script:

this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/1616