http://bugzilla.suse.com/show_bug.cgi?id=966671
http://bugzilla.suse.com/show_bug.cgi?id=966671#c34
--- Comment #34 from Stefan Brüns
(In reply to Stefan Brüns from comment #32)
Probably better approach: https://github.com/sddm/sddm/issues/733 (last comment)
We have an equivalent (for this purpose) fix for a while now. Anyway, this is not an SDDM/DM issue.
SDDM calls xauth. xauth uses uname, which returns the transient host name. Using the transient host name as a stable identifier (xauth cookie) causes problems. Having an X server listen on a local socket, DISPLAY omitting any hostname, it seems awkward to me to insist on a hostname for the xauth cookie. FamilyWild gets rid of the hostname, for me it seems like the better (working?) fix.
(In reply to Stefan Brüns from comment #31)
hostnamed recommends to use a single DNS label and not the FQDN for the hostname, but it does not stop you doing it. It uses whatever it finds in /etc/hostname.
hostname != nodename. man 2 uname: Note that there is no standard that says that the hostname set by sethostname(2) is the same string as the nodename field of the struct returned by uname() (...), but this is true on Linux.
I was told that the nodename must never be a FQDN, so hostnamectl is wrong here. A systemd bug?
Apparently different people disagree how to interpret nonexisting standards. - hostname(1) says FQDN in hostname is ok - it also says the FQDN should be set in /etc/hosts - uname(2) tells size of hostname may be 256 bytes, although a DNS label is at most 63 ("indeed, some systems allow a 256-byte hostname and an 8-byte nodename") - although this may only be relevant for other (extinct) name services - get/sethostname seems to be agnostic to short name or FQDN In my interpretation - on Linux, hostname is the nodename, it *may* contain the domainname, but everyone discourages it. The hostname is stored in /etc/hostname. Something apparently writes the FQDN to /etc/hostname - Yast? Maybe it should split it and save only the shortname to /etc/hostname, and the domainname in /etc/hosts? [...]
No, NM starts hostnamed when it starts the connection. hostnamed uses whatever it finds in /etc/hostname. Your hostname is changed *before* the DHCP handshake completes.
I just tried to confirm this, on a system using wicked. The hostname is configured to "fussheizung.suse.de" in yast lan.
uname -n fussheizung hostnamectl Static hostname: fussheizung.suse.de Transient hostname: fussheizung cat /etc/hostname fussheizung.suse.de uname -n fussheizung NetworkManager uname -n fusszeizung.suse.de hostnamectl Static hostname: fussheizung.suse.de (no transient hostname anymore)
As hostnamectl starts hostnamed, starting hostnamed is not enough to override the hostname. It's actively done by NM.
Apparently NM removes the old transient hostname. It does not change the static hostname. The transient hostname could also be something like dhcp-123-456, i.e. completely unrelated to the static hostname.
The issue here is the switch of the nodename from just the host part to the FQDN. This must not happen at all, even if starting hostnamed before sddm works around the effect on X cookies.
Easily solved if xauth (on behalf of SDDM) stops using unstable identifiers. -- You are receiving this mail because: You are on the CC list for the bug.