Sessão Embedded VNC

0

O que eu preciso é permitir o acesso de um usuário remoto a uma máquina host (Ubuntu) via VNC. O problema é que o usuário só deve ter permissão para usar um software específico e nada mais.

Minha solução por enquanto é usar o x-gtk-vnc para incorporar um Xwindow específico em uma página html no lado do cliente. Isso funciona ... exceto que as opções de pop-up não serão registradas no lado do cliente (já que são consideradas janelas separadas).

A possível solução # 1 gira em torno do uso de um script para relatar quando uma nova janela é aberta. No entanto, eu não sei de nenhum comando shell que possa fazer isso (o xwininfo requer que você escolha uma janela) e provavelmente terei que codificar vários possíveis pop-ups no html.

A possível solução # 2 gira em torno da criação de uma área de trabalho virtual vazia onde o software de interesse é executado como o aplicativo principal (não pode ser minimizado ou fechado e nenhuma barra de tarefas, etc.) e todos os menus pop-up aparecem em primeiro plano. Infelizmente, não tenho ideia de como fazer isso. Eu posso me conectar à área de trabalho específica usando o x-gtk-vnc incorporado em um html também.

Alguém poderia me apontar na direção certa com qualquer solução? Pessoalmente prefiro # 2. Outras soluções são bem-vindas também.

    
por Reuben L. 01.04.2011 / 09:25

1 resposta

2

A solução 2 será muito mais fácil.

Supondo que você esteja usando o pacote vnc4viewer incluído no Ubuntu, basta editar o script ~/.vnc/xstartup da conta de usuário em que o usuário remoto estará sendo executado e substituí-lo pelo seguinte conteúdo:

#!/bin/bash

function start_and_wait {
    #Put the command line for the program you need to run here, followed by an
    #ampersand (&). For example, we'll start gedit:
    gedit &

    wait $!
    start_and_wait
}

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
metacity &
start_and_wait

Isso ativará o gerenciador de janelas metacity do GNOME sozinho, portanto, as janelas pop-up podem ser manipuladas adequadamente. (Eles podem até mesmo Alt + Tab se precisarem.) Embora o usuário possa minimizar e redimensionar a janela, ele apenas dará ao usuário uma área de trabalho vazia eles não podem fazer nada com. Nenhum painel, nenhum menu, nenhum ícone, nada. O script também reiniciará o programa se for encerrado por qualquer motivo.

Depois de fazer isso, basta acionar vncserver e você é de ouro. Você pode colocar este comando no seu arquivo /etc/rc.local (ou escrever um script apropriado), antes da linha exit 0 para que o servidor inicie em cada inicialização:

su username -c "vncserver :7"

Isso iniciará o servidor na área de trabalho :7 (porta 5907) para que qualquer outro servidor VNC que você inicie de outra forma não atrapalhe e você terá um número de área de trabalho previsível para colocar no arquivo HTML. / p>

Verifique se você está usando uma conta de usuário separada para o usuário remoto que esteja suficientemente bloqueada, porque mesmo quando eles só têm acesso a um programa, ainda há muitas maneiras de obter mais acesso ao sistema. (Diálogos de arquivo, comandos que podem abrir um shell, etc.)

Note que, embora seja possível usar qualquer gerenciador de janelas e a maioria das pessoas usaria os simples como twm (ou o que as crianças estão usando atualmente), eu colei metacity porque ele é incluído por padrão e mantenha as coisas simples.

    
por 01.04.2011 / 10:44