Quando a máquina está sem cabeça, o usuário não é mais privilegiado

12

A questão central é: QUALQUER sessão do gnome que não está sentada em cima de uma tela física / nativa real - ou sombreando aquela tela (ou seja, o modo de sombra do NXserver) - tem privilégios defeituosos. Mesmo quando executado como root!

Quaisquer comentários sobre uma maneira de corrigir o comportamento problemático para as sessões VNC / não-shadow NX?

Estou atualizando o meu servidor sem suporte Ubuntu depois de um longo tempo, e estou tendo muitos problemas que não me lembro de ter existido em versões anteriores do Ubuntu.

Alguns detalhes:

  • Comecei com o ubuntu-11.04-server-amd64.iso e depois instalei o ubuntu-desktop nele.
  • uname -a: Linux MiddleEarth 2.6.38-8-servidor # 42-Ubuntu SMP seg 11 de abril 03:49:04 UTC 2011 x86_64 x86_64 x86_64 GNU / Linux
  • O hardware é Intel D920, 2GB Ram, gfx é um nvidia sem ventilador 6600, 3xGigabit, 1x100mbit, sem monitor, teclado, mouse conectado.

Round 1

Enquanto eu estava fazendo o teste / configuração com um monitor conectado , tudo estava aveludado, tanto na frente daquele monitor quanto no VNCing da minha máquina (no vino).

Sem um monitor, porém, surgem problemas:

[Não resolvido / eliminado]

O próprio primeiro problema era o vino ser teimoso e não gostar de carregar antes / durante o GDM. Mas como este é um sistema sem cabeçalho, eu realmente não preciso dele para começar com X por padrão (ou seja, alterar o nível de inicialização) de qualquer maneira, de modo que é um pouco discutível. No entanto, lembro-me claramente que este é muito fácil fazer em uma versão mais antiga do Ubuntu (v9.04 eu acho). E funcionou bem; mas não mais!? ... de qualquer forma eu deixei cair essa ideia completamente.

[Resolvido]

Em seguida, foi Unity / efeitos messing VNC (resolvido por trapacear ).

[não resolvido]

Eu originalmente mudei para o NXserver, esperando que talvez os problemas a seguir sejam problemáticos ou não, mas não tem tanta sorte. (Nota: leia round2)

Ao remoting no via VNC (ou NXserver) minha conta de usuário perde a capacidade de montar / desmontar HDDs.

Ao remoting no via VNC (ou NXserver), minha conta de usuário não pode acessar algumas opções de configuração privilegiadas,
alguns exemplos:

  • não pode fazer nada (por exemplo, 'adicionar' um usuário ou 'configurações avançadas') em "Sistema - & gt; Administração - & gt; Usuários e grupos".
  • não pode usar "desbloquear" em "Sistema - & gt; Administração - & gt; Tela de login".
  • O gparted não consegue obter informações sobre os sistemas de arquivos.
  • etc. (vários outros diálogos admin / config também não funcionam corretamente)

Eu só posso imaginar que isso tem algo a ver com privilégios de usuário não sendo atribuídos corretamente quando um dispositivo de monitor físico real não está conectado.
A razão 'PORQUE' isso acontece no ubuntu 11.04, quando está sem cabeça, me escapa; Eu não me lembro desse comportamento em versões anteriores do Ubuntu.

Observe que o problema de montagem do disco rígido não é problema para os hdds internos / estáticos (acabei de adicioná-los ao fstab, pois eles são estáticos). Mas realmente uma grande dor para mídia USB removível.

O resto dos problemas, eu não descobri como consertar ...
Eu sei o que você está pensando ... faça o login no ssh, sudo su e execute o vncserver sob a raiz completamente?

Surpresa surpresa! O gui do root está quebrado também: o gparted não consegue obter informações, o usuário e os grupos estão totalmente desabilitados (esse é um comportamento diferente do meu usuário comum). Estranhamente, o programa de administração da tela de login parece funcionar bem.

Round 2

(NOTA: Eu não sei se isso fez ou não fez diferença no resultado.) Em algum momento entre a 1ª rodada e a 2ª rodada, eu apliquei as mudanças mencionadas nas postagens 21 e 24 em este tópico )

As sessões regulares de tightvnc / NXServer têm o mesmo comportamento, MAS ...

[Solução parcial / O problema real ainda está lá]

Nas configurações de conexão do NXClient, quando escolho o modo 'sombra' (a sombra o anexa à exibição nativa, ou seja, sombreamento da área de trabalho) ...

Tudo funciona perfeitamente nesta sessão!

Uma coisa que eu notei é que ele imediatamente me pede uma senha de chaveiro ... talvez toda a bagunça tenha algo a ver com o sistema de chaveiro que o gnome usa?

Mas, se eu me conectar com uma conexão NX regular (não sombreada) ou com um vnc normal, ele volta a ter os mesmos problemas.

P.S. Houve um par de dias inbettween quando eu escrevi round1 e round2 (eu estava mantendo-o em um arquivo txt localmente). Eu estava testando várias sugestões para ver o que funcionaria, e é por isso que eu não sei ao certo se isso é xorg.conf VNC device edit ou aquele nomodeset fez a diferença.

[EDIT 2011-06-10]

NXServer e GDM

No momento em que escrevi, configurei o sistema para login automático, motivo pelo qual a conexão de sombra simplesmente funcionava. Quando mais tarde eu desabilitei isso e reiniciei o sistema, o NX deu um erro, mas com um pouco de Googling eu encontrei este tópico

Estes são os & amp; uncommenting & amp; alterações que fiz no meu /usr/NX/etc/server.cfg:

EnableAdministratorLogin = "1"
EnableSessionShadowing = "1"
EnableInteractiveSessionShadowing = "1"
EnableSessionShadowingAuthorization = "0"
EnableDesktopSharing = "1"
EnableInteractiveDesktopSharing = "1"
EnableFullDesktopSharing = "1"
EnableAdministratorDesktopSharing = "1"
EnableDesktopSharingAuthorization = "0"
EnableSystemDesktopSharingAuthorization = "0"

(Se fosse uma rede mais pública, ou seja, universidade / grande escritório, provavelmente usaria configurações um pouco mais restritas, mas elas me servem bem.)

Após a reinicialização, eu efetuei login com o nxclient na configuração 'shadow' (exibição original) da área de trabalho e obtive o GDM! : D

Infelizmente, a área de transferência não funciona na sessão 'shadow' (funciona nos outros / regulares)

[EDITAR 2011-06-11]
Deparei com o Xvfb mas ele tem os mesmos problemas quando usado assim:

Xvfb :2 -ac -screen 0 1280x1024x32 -pixdepths 8 24  2>&1 >/dev/null &
export DISPLAY=:2
gnome-session --session=2d-gnome 2>&1 >/dev/null &
x11vnc --display :2 --passwd blahblah
    
por DM8 10.06.2011 / 02:22

3 respostas

5

Eu localizei o culpado.
Testado em uma nova instalação, confirmou que é um bug.

Enviei um relatório de erros

Em suma, o problema é: A caixa de diálogo de autenticação do polkit será exibida em DISPLAY: 0, em vez de DISPLAY: 1, onde a sessão VNC / NX está.

Uma solução alternativa pode ser usar o chaveiro da libpam para autenticação automática no login.
ou ... riscar isso, que provavelmente não faria isso, uma alteração em todas as configurações do kit de políticas de 'auth_admin' para apenas 'sim' provavelmente resolveria o problema, e isso, é claro, tornaria o policyKit discutível ... suspiro

    
por DM8 16.06.2011 / 01:52
2

Acho que esse é o comportamento correto do PolicyKit.

A política para Ativo , Inativo e Qualquer outro usuário é diferente, então quando você está conectado através do NX você não está Ativo (clientes em sessões ativas em consoles locais), nem Inativo (clientes em sessões inativas em consoles locais), mas você resulta como Qualquer usuário.

Você pode ver a política padrão da Ação sob controle de política para os diferentes tipos de usuários com o comando

pkaction --verbose

Como você pode ver, o usuário do tipo Any é limitado em comparação com usuários ativos.

Para corrigir, você pode modificar a política padrão. A seguir, sugerimos um script awk para criar um arquivo de kit de política para colocar no local correto. Este é o script:

#!/usr/bin/awk -f

/^[^ ]/ {
  action = substr(
pkaction --verbose | ./create-policy > local.pkla 
, 1, length(
sudo mv local.pkla /var/lib/polkit-1/localauthority/50-local.d/
) - 1) } /^ / { if ( == "description:") { = "" description = substr(%pre%, 2) if (description == "") description = action } else if ( == "implicit") { if ( == "any:") any = else if ( == "inactive:") inactive = else if ( == "active:") { active = print "" print "[" description "]" print "Identity=unix-group:admin" print "Action=" action print "ResultActive=" active print "ResultInactive=" active print "ResultAny=" active } } }

Suponha que você chame isso de create-policy . Torne-o executável, execute o script com

%pre%

mova o arquivo resultante:

%pre%

Você agora deve ter o mesmo direito de um usuário da sessão local.

    
por enzotib 21.07.2011 / 22:29
0

Eu estava com um problema parecido com o NX e encontrei o seguinte tópico:

Por que eu recebo Unity em vez de Clássico ao usar o NX?

Eu editei meu cliente Windows NX para que a área de trabalho esteja definida como Unix & amp; Personalizado, configure-o para executar o seguinte comando:

gnome-session --session=classic-gnome

E selecionado Novo Desktop Virtual .
Depois disso, eu estava pronto para ir.

    
por David B 21.07.2011 / 20:37