Xgl/Compiz på flere brukere

alt om grafiske brukergrensesnitt (GNOME, KDE, osv.), applikasjoner tett knyttet til disse og multimedia.

Xgl/Compiz på flere brukere

Innleggav espenhogbakk » man 05.06.2006 15:25

Jeg har nå lagt inn Xgl og compiz på min Ubuntu Dapper maskin. Det fungerer utrolig bra og vært stabilt og fint. Deilig å få samme expose funksjonen som jeg har på Powerbooken med OS X.

Men det jeg lurer på er hvordan får jeg XGL og compiz til å kjøre på flere brukere. Jeg har opprettet flere brukere, men når jeg prøver å logge inn på disse brukerne med XGL sesjonen så henger X seg og logger ut automatisk. Noens om har en ide om hvordan jeg kan løse dette problemet? Jeg vil gjerne at de andre som bruker maskinen skal få glede av det samme som meg...

Jeg har innstallert Xgl og Compiz med disse howto'ene:

Xgl
Compiz
medlem i 223 måneder
 

Innleggav moma » man 05.06.2006 18:40

Hei,

1) Jeg foreslår at du kopierer alt som står i "/usr/bin/startxgl.sh" og "~/Desktop/compiz" inni "$HOME/.Xsession" filen. Ta backup-kopi av din gamle "$HOME/.Xsession" først.

F.eks min "$HOME/.Xsession" ser slik ut.
Kode: Merk alt
#!/bin/bash

# Start up Xgl, compiz, and GNOME
# Run Xgl server on :1, on top of normal X

Xgl :1 -fullscreen -ac -accel xv -accel glx:pbuffer &

# Tell subsequent X programs to access the Xgl server at :1
DISPLAY=:1

# Start Compiz window manager
gnome-window-decorator &

compiz --replace gconf decoration wobbly fade minimize cube rotate zoom scale move resize place menu switcher &

# Set keyboard layout
xmodmap /usr/share/xmodmap/xmodmap.no

# Start GNOME
exec gnome-session


2) Da velger du "Default system session" i login-bildet (under [Options]-knappen -> Select session...)

3) Alle nye login-brukere bør får egen kopi av .Xsession filen.
EDIT: Eventuel legg filen i /etc/skel/ slik at filen kopieres når konto opprettes. /etc/skel/ er mal for $HOME.
-------
PS. Jeg har tilberedt Xgl på en annen måte enn du.
Sist endret av moma den tir 06.06.2006 10:18, endret 3 ganger.

Erfaren
Brukerens avatar
medlem i 235 måneder
 

Innleggav espenhogbakk » man 05.06.2006 20:01

Jeg har faktisk prøvd det der også. Men det ville ikke fungere det heller. Har du klart å få Xgl og compiz til å fungere med flere brukere?

Må jeg gjøre noe annet enn å kopiere den Xsession fila til alle brukerne? Fordi det har jeg prøvd før som sagt.
medlem i 223 måneder
 

Innleggav moma » man 05.06.2006 21:16

Du har rett.
Saken er litt mer kompleks enn først antatt.

Kun den aller første brukeren (etter at maskinen har startet) kan logge inni Xgl / Compiz desktop. Hvorfor er det slik?

1) X-windows benytter Unix-socket for å kommunisere. Men hvem eier Unix socketen for display #1 ?

$ ls -l /tmp/.X11-unix/X1
srwxrwxrwx 1 moma moma 0 2006-06-05 20:52 /tmp/.X11-unix/X1

Som du ser, den første brukeren (i mitt tilfelle "moma") eier socketen og ingen andre brukere (utenom root og moma) kan skrive til den.

2) På /tmp området finnes også en lås (lås-fil) som opprettes og eies av den første login-brukeren (her moma).

$ ls -l /tmp/.X1-lock
-r--r--r-- 1 moma moma 11 2006-06-05 20:52 /tmp/.X1-lock

Ikke rart at ingen andre brukere kan logge inn i X-windows selv om X-serveren omstartes. Kommunikasjonskanaler (innad Xgl) ble opprettet og eies av den første brukeren.
-----------------------------------------------

Det skulle ha vært ROOT (altså root-brukeren) som skal eie både X-windows prosess og socket'en samt lås-filen på /tmp området. Problemet kommer av at vi starter Xgl prosessen som en vanlig bruker (via .Xsession skript). Altså vanlig bruker vil eie alt Xgl skaper og lager. DETTE ER FEIL !

Se filerettighetene til X, Xgl og Xorg på /usr/bin/.

$ ls -l /usr/bin/X*
-rwsr-sr-x 1 root root 18066 2006-05-28 21:35 /usr/bin/X
-rwxr-xr-x 1 root root 1423416 2006-04-10 09:43 /usr/bin/Xgl
-rwxr-xr-x 1 root root 1565880 2006-05-15 04:49 /usr/bin/Xorg

Merk at vi kjører Xgl (og ikke vanlig X) når vi kjører Xgl/Compiz desktop.

Du ser at Xgl mangler "s" (SUID, SGID) bits !

Vi må la Xgl kjøre med superuser (root) rettigheter. Altså s-bit må aktiveres.
Gjør

$ sudo chmod --reference=/usr/bin/X /usr/bin/Xgl
-----------------------------------------------------------

Restart X-server (desktop) med CNTR + ALT + BACKSPACE.

eller med
$ sudo init 1
....
# init 2
--------------------------------------------------------------

PS. Husk å sette rettigheter på .Xsession når du kopierer den fra én bruker til annen.

F.eks moma2 er ny bruker på denne maskinen.
$ sudo chown moma2:moma2 .Xsession
$ chmod +x .Xsession
--------------------------------------------------------------

Les mer om betydningen av 's' (SUID og SGID) her
http://www.linuxguiden.no/index.php/Filrettigheter
--------------------------------------------------------------
Saken bør egentlig rapporteres tilbake til Ubuntu forums.
http://ubuntuforums.org eller http://compiz.net
Sist endret av moma den tir 06.06.2006 8:14, endret 4 ganger.

Erfaren
Brukerens avatar
medlem i 235 måneder
 

Innleggav espenhogbakk » tir 06.06.2006 0:58

Tusen takk! Det ordnet seg med denne fiksen. Takk for en fantastisk flott forklaring. Nå er det ordnet på alle brukerne på maskinen, og det fungerer flott.
medlem i 223 måneder
 


Returner til Skrivebord / Multimedia



Hvem er i Forumene

Registrerte brukere: Google [Bot]