Fórum Ubuntu CZ/SK

Ostatní => Otevřená diskuze kolem Linuxu a OSS => Téma založeno: Avogadrus 12 Srpna 2011, 09:52:03

Název: Aplikace pro login druhého uživatele
Přispěvatel: Avogadrus 12 Srpna 2011, 09:52:03
Zdravíčko pánové, jednou jsem někde vyštrachal aplikaci ve které jste se zalogovali za jiného uživatele do okna. Neříká to někomu něco? Nevzpomínám si na název a nejsem schopný ji znovu najít.
Název: Re: Aplikace pro login druhého uživatele
Přispěvatel: ntz_reloaded 12 Srpna 2011, 09:58:27
Xnest ?
Xvnc ? (s klientem pres localhost) ?

Kód: [Vybrat]
Xnest -geometry 1200x900 :7 &
xauth add :7 . `mcookie` &
DISPLAY=:7 xterm &
Název: Re: Aplikace pro login druhého uživatele
Přispěvatel: Vojtěch Trefný 12 Srpna 2011, 10:46:35
Pokud ti jde jen o spouštění grafických aplikací pod jiným uživatelem, tak navrhuju sux
Název: Re: Aplikace pro login druhého uživatele
Přispěvatel: Avogadrus 13 Srpna 2011, 15:15:34
Díky za radu. Momentálně se hraju s Xnest a mám drobný problém když spustím trošku obalený kod od ntz_reloaded
.next_user.sh
Kód: [Vybrat]
#/bin/sh
resolution=$(zenity --title="Uživatel v okně" --entry --text "zadej rozlišení" --entry-text "1152x720")
display=$(zenity --title="Uživatel v okně" --scale --text "Zadej unikátní číslo obrazu" --min-value=2 --max-value=20 --value=2 --step 1)
Xnest -geometry $resolution :$display &> /dev/null &
xauth add :$display . $(mcookie) &
DISPLAY=:$display xterm &
exit 0
a přeloguju se, při náběhu graf. prostředí Xnest spadne. Pokud xterm nahradím fvwm-crystal tak se bez problému přihlásím jako druhé sezení stejného uživatele a je to v celku stabilní (spuštění vlc nebo thunderbirda způsobuje životnost v minutách :) ). Takže jsem zkusil něco jako spouštění pod jiným uživatelem
.change_user.sh
Kód: [Vybrat]
#/bin/sh
login=$(zenity --title="Uživatel v okně" --entry --text "zadej login" --entry-text "hokuson")
gksu -wg --message "Zadej heslo pro uživatele: $login" --user $login "sh cesta_tam_a_zpatky/.next_user.sh"
no a to se Xnest nespustí vůbec.
Název: Re: Aplikace pro login druhého uživatele
Přispěvatel: ntz_reloaded 13 Srpna 2011, 15:34:07
ja osobne doporucuju spis to Xvnc ..

http://sourceforge.net/projects/tigervnc/files/tigervnc/1.0.1/

stahni Xvnc-1.0.1.tar.gz a tigervnc-1.0.1.tar.gz, rozbal, zkompiluj s nejakym rozumnym prefixem (--prefix=/opt/tigervnc) slozku unix a nalinkuj do /usr/bin (vncserver, vncconfig, vncviewer) a jeste dej do usr/bin Xvnc .. potom uz jen

vncserver -geometry 1220x960 -depth 24 :9 ##napriklad
vncviewer localhost:9
Název: Re: Aplikace pro login druhého uživatele
Přispěvatel: Avogadrus 14 Srpna 2011, 22:15:16
Xnest je opravdu dost nestabilní, ale Xvnc funguje bez problémů. Čili díky.
Oplácal sem do do vyskakovacích okýnek, ty dva zakomentované řádky jsou snaha spouštět|ukončovat pod konkrétním uživatelem, ale při vytvoření to vypisovalo grafické errory ucty hodnou rychlostí. Takhle to ale taky není nic proti ničemu. 
Kód: [Vybrat]
#bin/sh
zadani_rozliseni() {
resolution=$(zenity --title="Uživatel v okně" --entry --text "Zadej rozlišení" --entry-text "1152x720");echo $resolution
}

zadani_obrazovky() {
display=$(zenity --title="Uživatel v okně" --scale --text "Zadej unikátní číslo obrazu" --min-value=2 --max-value=20 --value=2 --step 1);echo $display
}

druhy_uzivatel() {
display=$(zadani_obrazovky)
login=$(zenity --title="Uživatel v okně" --entry --text "Zadej login uživatele" --entry-text "hokuson")
#gksu -wg --message "Zadej heslo pro uživatele: $login" --user $login "vncserver -geometry $(zadani_rozliseni) -depth 24 :$(zadani_obrazovky) &> /dev/null &"
gksudo -u $login -g --message "Zadej heslo zprávce" "vncserver -geometry $(zadani_rozliseni) -depth 24 :$display"
if [ -e /home/$login/.vnc/$(uname -n):$display.pid ];then zenity --info --text "Server běží";else zenity --error --text "Server neběží"; fi
}

sam_sobe() {
display=$(zadani_obrazovky)
vncserver -geometry $(zadani_rozliseni) -depth 24 :$display
if [ -e /home/$(whoami)/.vnc/$(uname -n):$display.pid ];then zenity --info --text "Server běží";else zenity --error --text "Server neběží"; fi
}


zabiti_serveru() {
login=$(zenity --title="Uživatel v okně" --entry --text "Kterému uživateli ukončíš server?" --entry-text "hokuson")
#gksu -wg --message "Zadej heslo pro uživatele: $login" --user $login "vncserver -kill :$(zadani_obrazovky)"
gksudo -u $login -g --message "Zadej heslo zprávce" "vncserver -kill :$(zadani_obrazovky)"
}

odpoved=$(zenity  --list  --title "" --text "" --radiolist --hide-header --column "Volba" --column "Odpověď" FALSE "Spustit VNCserver jiného uživatele"  FALSE "Spustit VNCserver sobě" true "Otevřít sezení" FALSE "Zabít běžící server")
case $odpoved in
"Spustit VNCserver jiného uživatele") druhy_uzivatel;;
"Spustit VNCserver sobě") sam_sobe;;
"Otevřít sezení") vncviewer localhost :$(zadani_obrazovky);;
"Zabít běžící server") zabiti_serveru;;
esac

exit 0