xsel não reconhecido após "su - outra conta"

xsel não reconhecido após "su - outra conta"

Sou novo no Linux e configurei a seguinte versão do Ubuntu como uma VM VirtualBox usandoEste processo:

ubuntu-20.04.3-desktop-amd64.iso

A primeira conta criada foi uma conta de administrador. Instalei xsele verifiquei se funcionava. Em seguida, criei uma conta de não administrador e suentrei nela com su - non-admin-account. Nesse momento, xselreclama:

xsel: Can't open display: (null)
: Inappropriate ioctl for device

O que devo fazer para tornar xselacessível depois de suentrar em outra conta?

Atualmente, não estou interessado em iniciar aplicativos que iniciam suas próprias janelas de cliente quando suinseridos na conta de não administrador. Eu só quero uma tubulação simples depadrãopara a área de transferência para que eu possa recuperá-lo no Vim ou na linha de comando do Bash usando Shift + Ins, por exemplo, echo dog | xsel -ibou echo dog | xsel -ip.

Meu plano atual é escrever ou redirecionar para (digamos) /tmp/tmp.txtpara passar texto entre um usuário que efetuou login a partir de uma tela de login e aquele que foi sudirecionado. Estou acostumado com o comportamento do Cygwin, onde a área de transferência é compartilhada independentemente da conta em que o terminal é iniciado.


Solução de problemas

Obtenho o mesmo comportamento se fizer login na conta de não administrador e suna conta de administrador. xselfunciona no não administrador em que faço login, mas não na conta de administrador em que faço sulogin.

Essencialmente, xselnão funciona depois de um arquivo su.

De acordo com os comentários, olheias respostas deste problema. Não reconheço a descrição do problema, pois as mensagens de erro são bem diferentes, então alguém que procura com base nas mensagens de erro não reconhecerá essa pergunta. Além disso, não entendo as respostas. A parte que parecia se aplicar à minha solução era xhost +localhost, mas não funcionou porque a sintaxe está errada, pelo menos para a versão do Ubuntu que estou usando. Eu posto a sintaxe quefaztrabalhe na minha resposta abaixo.

Acho que antes que aquela página citada acima possa informar alguém mesmo remotamente, é preciso saber que o problema é a falta de permissão de uma conta para acessar o servidor X. Por exemplo, se você já usa o X-windows do Cygwin, provavelmente não adivinharia isso porque o problema não se manifesta aí.

Responder1

Você pode usar opam_xauthmódulo de autenticação para encaminhar cookies de sessão X11 através de suinvocações, sem abrir seu servidor X para esses usuários de forma mais geral.

Isso também permite um controle refinado sobre quais usuários podem encaminhar credenciais para outros usuários, por meio de arquivos de configuração em seus $HOME/.xauth/diretórios.

Responder2

Baseado emWaltinadorcomentário de, eu encontreiesta páginaem usar xhost. A partir dessas informações, descobri que o seguinte funciona:

# Log into admin-username from the login screen,
# then issue:
$ xhost +SI:localuser:nonadmin-username

   localuser:nonadmin-username being added to access control
   list.

$ xhost

   SI:localuser:nonadmin-username
   SI:localuser:admin-username

$ su - nonadmin-username
# Enter password when prompted

# Match DISPLAY to its value in the admin account
$ export DISPLAY=:0

$ ls | xsel -ip # Use PRIMARY selection e.g. X-windows mouse highlighting
$ ls | xsel -ib # Use CLIPBOARD buffer e.g. Windows's Ctrl+C/X/V
$ exit # Exit the "su" session

# Paste then works in admin account as expected.
# To test the PRIMARY selection:
$ cat # In admin account
# Paste using middle mouse button or Shift+Ins
Ctrl+D to end input into "cat"

Uma alternativa útil para adicionar usuários um por vez é o xhost +local:, que permite que qualquer usuário local abra janelas do cliente. Isso implica que você confia em todos os que estão conectados à máquina. Portanto, isso só deve ser feito em ambientes controlados, como máquinas de usuário único.

Em muitos ambientes, a seleção PRIMARY também pode ser colada no [G]Vim do registro *.

Da mesma forma, o buffer CLIPBOARD muitas vezes pode ser colado no [G]Vim do registro +ou de qualquer outro aplicativo que use Ctrl+V.

informação relacionada