$DISPLAY

 ( kea | 2010. december 30., csütörtök - 13:04 )

Kedves Tanult Főrumtársak!

Adott egy asztali gép, amelyen fut(hat) egyszerre több felhasználó több X-e. Honnan lehet kideríteni adott felhasználó képernyőjét (az adott felhasználó $DISPLAY változójának tartalmát) root jogon?

Üdv:
KEA.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Ubuntu Lucid, root-ként:


XUSER=pts # Felhasználónév.
for F in /var/run/gdm/auth-for-"$XUSER"-*/database; do
xauth -f "$F" list | perl -ne 'print "$1\n" if m@/unix(:\d\S*)@'
done

Általános megoldás: /proc/*/environ -ból kihalászod a $DISPLAY és $XAUTHORITY változókat, az xauth paranccsal kiiratod az adott $XAUTHORITY fájlhoz tartozó cookie-kat, és megpróbálsz velük az adott lokális $DISPLAY-hez kapcsolódni.

Közben már én is kidolgoztam egy megoldást:

taxy@msi:~$ ps uax --forest
...
root  4500  10956  1800 ?        Ss   09:55   0:00 /usr/sbin/gdm
root  4501  11360  2620 ?        S    09:55   0:00  \_ /usr/sbin/gdm
root  4504  20892 14756 tty7     Ss+  09:55   5:41      \_ /usr/bin/X :0 -br -audit 0 -auth /var/
taxy  4942  23072  5664 ?        Ssl  09:56   0:00      \_ xfce4-session
...

És így látod melyik X process-nek a testvére az adott felhasználó process.

ez hasonló ehhez :)

pstree -nu

pstree -nu $(ps -ef | awk "\$2 ~ /$(sed /tmp/.X0-lock -e 's/ //g')/ { print \$3; }")

Ekkor csak "/tmp/.X0-lock" testvérei rajzolódnak ki. :)

Sziasztok!

Köszi mindkettőtöknek a tippet.

Nálam Slack van; szétnéztem az environ fájlokban, de szerintem problémás(abb) megállapítani, hogy a temérdek /proc//environ fájlból melyikekre is van szükségem.

A ps számomra rokonszenvesebb:
ps uax --forest | grep X | grep ' :' | grep -v X11
pont a szükséges sorokat adja, amiből már ki lehet bányászni a szükséges számokat.

Köszi,
KEA.

akkor tovább viddve a dolgot:

DISPLAY=$(ps uax --forest | grep X | grep ' :' | grep -v X11 | grep -oE "X.*:[0-9\.]*" | grep -oE ":[0-9\.]*")

Ebből meg pont az nem derül ki hogy mi a felhasználó név.
Javaslom a fenti megoldást.
Ez lehet egy szkript aminek a paramétere:
/tmp/.X$1-lock