Seite 1 von 1

[workaround gefunden] root darf auf meinen X-Server zugreife

Verfasst: 04.09.2015 16:09:28
von smutbert
Hallo,

dieser Thread, "gksu und Anpassung von /etc/pam.d/su" hat mich wieder auf etwas aufmerksam gemacht, was ich schon seit einiger Zeit wissen wollte:

In Debian war es bei mir vor jessie eigentlich immer notwendig mit xhost den Zugriff zu erlauben bevor ich ein X-Programm als root ausführen konnte. Wobei das jetzt nichts mit jessie an sich zu tun haben muss sondern möglicherweise auch nur daran liegt, dass ich jetzt wieder meistens gdm und Gnome verwende davor die meisten Zeit slim/lightdm oder keinen Displaymanager und irgendeinen anderen Windowmanager oder eine anderen Desktopumgebung (aber das werde ich noch ausprobieren)

Kennt ihr eine ("debiangerechte") Art das mit gdm und gnome wieder so einzurichten, dass nur der lokal angemeldete Benutzer auf X zugreifen kann und niemand anderer?

lg smutbert

Re: root darf auf meinen X-Server zugreifen

Verfasst: 04.09.2015 18:15:55
von dufty2
Vermute kommt von systemd, genauer

Code: Alles auswählen

$ cat /etc/X11/xinit/xinitrc.d/50-systemd-user.sh
#!/bin/sh

systemctl --user import-environment DISPLAY XAUTHORITY

Re: root darf auf meinen X-Server zugreifen

Verfasst: 04.09.2015 18:19:12
von The Hit-Man
Ist das denn nicht egal? Denn root darf doch eh alles auch wenn du als user erst xhost eingeben müstest, kann root das doch eh umgehen. Von daher?

Re: root darf auf meinen X-Server zugreifen

Verfasst: 04.09.2015 18:30:27
von rendegast
Eigentlich doch sowas

Code: Alles auswählen

xhost
xhost -
xhost - ....

Aber richtig, habe mich auch schon immer gefragt,
wo so ein 'xhost +[local]' eigentlich abgelegt wird,
da ich das nie zweimal eingeben mußte (auch nach Neustart nicht).
Und in einem xterm bekommt root auch nicht mehr die Nachricht
"Nicht erlaubt".

Re: root darf auf meinen X-Server zugreifen

Verfasst: 04.09.2015 19:53:36
von smutbert
Das wird gespeichert - bist du sicher? Zumindest auf meinem Notebook ohne Displaymanager merkt sich das System da gar nichts.

@dufty2
Diese Datei gibt es auf meinem jessie gar nicht und ich finde auch auf Anhieb keine ähnliche/vergleichbare.
The Hit-Man hat geschrieben:Ist das denn nicht egal? Denn root darf doch eh alles auch wenn du als user erst xhost eingeben müstest, kann root das doch eh umgehen. Von daher?
Umgehen kann er es bestimmt, aber mir geht es um einen weiteren Aspekt:
Ich möchte nicht irrtümlich grafische Programme als root starten können. Die Folgen sind oft nur harmlos, aber zumindest lästig, wie zB wenn root dann Dateien unter dem /var/run/…-Verzeichnisses des Benutzers anlegt und so diesem zB den Weg zu einem funktionierenden Pulseaudio verbaut (wie hier geschehen).

Re: root darf auf meinen X-Server zugreifen

Verfasst: 04.09.2015 21:28:29
von dufty2
smutbert hat geschrieben: @dufty2
Diese Datei gibt es auf meinem jessie gar nicht und ich finde auch auf Anhieb keine ähnliche/vergleichbare.
Mea culpa, das ist das systemd aus stretch/testing, das enthält jene Datei.

Re: root darf auf meinen X-Server zugreifen

Verfasst: 05.09.2015 11:41:03
von smutbert
Trotzdem danke, ist ja gut zu wissen, wo man in Zukunft vielleicht suchen muss... bei mir unter jessie scheint jedenfalls gdm schuld zu sein. Ich habe nämlich ein paar Kombinationen ausprobiert:

Mate oder Gnome, egal ob ohne Displaymanager oder mit lightdm:

Code: Alles auswählen

$ xhost 
access control enabled, only authorized clients can connect
SI:localuser:smutbert
Mate oder Gnome mit gdm:

Code: Alles auswählen

$ xhost 
access control enabled, only authorized clients can connect
SI:localuser:smutbert
SI:localuser:Debian-gdm
SI:localuser:root
Debian-gdm ist nehme ich an notwendig, weil die Bildschirmsperre von gdm kommt?
Ich habe aber bis jetzt kein Skript und keine Konfigurationsdatei in gdm gefunden, wo das festgelegt wird.

@Rendegast
In keiner der von mit gestesteten Konstellationen wurde das, was ich mit xhost angestellt habe, über einen Neustart hinweg gespeichert. Nur An-/Abmelden habe ich gar nicht getestet, aber selbst da würde ich erwarten, dass die Änderungen futsch sind.

Re: root darf auf meinen X-Server zugreifen

Verfasst: 05.09.2015 13:18:11
von rendegast
Da kommt noch was her
/etc/X11/Xsession.d/35x11-common_xhost-local (Debianx11-common)

Code: Alles auswählen

if type xhost >/dev/null 2>&1; then
  xhost +si:localuser:$(id -un) || :
fi
und nach manpage in eventuellen /etc/X#.hosts.

SI:localuser:Debian-gdm
SI:localuser:root
sollte nach der NEWS aus gdm3(jessie) nicht mehr da sein(?)
===============
Version 2.30.1
===============
...
- Drop xhost localuser:gdm and localuser:root when the user session starts.
Fixes bug #605350.
(Bug Debian Bugreport605350 beschäftigt sich aber gar nicht mit xhost
EDIT Ups, gemeint ist https://bugzilla.gnome.org/show_bug.cgi?id=605350)
Durch debian wieder hineingepatcht,
oder (hier) eine aus früheren gdm-Versionen verbliebene Session-Datei?

Re: root darf auf meinen X-Server zugreifen

Verfasst: 05.09.2015 17:27:48
von smutbert
===============
Version 2.30.1
===============
ist ja schon ein Zeiterl her, wurde gdm danach nicht schon einmal komplett neu geschrieben und aufgeräumt. Ich habe da auch noch in Erinnerung, dass gdm die umask auf einen fixen Wert gesetzt hat und einige weitere Ungereimtheiten, die seit gdm3 (?) weg sind.

Und meinst du eine beim Paketbauen übriggebliebene Datei oder eine auf meinem System übriggebliebene?
Zweiteres kanns eigentlich nicht sein, weil mir das hier auf einer nigelnagelneuen Installation (wieder) aufgefallen ist.

___

/etc/X11/Xsession.d/35x11-common_xhost-local ist jedenfalls nicht die Ursache (bin mir nicht sicher was du gemeint hast), dieses Skript wird ja bereits vom Benutzer ausgeführt, dh durch Deaktivieren wird man nur die einzige Zeile los, die mich überhaupt nicht stört

Code: Alles auswählen

$ xhost 
access control enabled, only authorized clients can connect
SI:localuser:Debian-gdm
SI:localuser:root
aber ich habe diese Datei jetzt für einen Workaround genutzt.
/etc/X11/Xsession.d/35x11-common_xhost-local

Code: Alles auswählen

# This file is sourced by Xsession(5), not executed.

# If xhost (from x11-xserver-utils) is installed, use it to give access 
# to the X server to any process from the same user on the local host.
# Unlike other uses of xhost, this is safe since the kernel can check 
# the actual owner of the calling process.

if type xhost >/dev/null 2>&1; then
  xhost +si:localuser:$(id -un) || :
  xhost -si:localuser:Debian-gdm || :
  xhost -si:localuser:root || :
fi
vielleicht schreib ich es noch stattdessen in eine andere neuangelegte Datei, damit es bei einem Update nicht verlorengeht...

wieder einmal ein herzliches Dankeschön :THX: