Sou novo no Linux e configurei a seguinte versão do Ubuntu como uma VM do VirtualBox usando este processo :
ubuntu-20.04.3-desktop-amd64.iso
A primeira conta criada foi uma conta de administrador. Instalei xsel
e verifiquei se funcionou. Em seguida, criei uma conta de não administrador e entrei su
nela com o su - non-admin-account
. Nesse momento, xsel
reclama:
xsel: Can't open display: (null)
: Inappropriate ioctl for device
O que tenho que fazer para tornar xsel
acessível depois de su
entrar em outra conta?
Atualmente, não estou interessado em iniciar aplicativos que iniciam suas próprias janelas su
de cliente quando entram na conta de não administrador. Eu só quero uma tubulação simples do padrão para 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 -ib
ou echo dog | xsel -ip
.
Meu plano atual é escrever ou redirecionar para (digamos) /tmp/tmp.txt
para passar texto entre um usuário que fez login de uma tela de login versus um que foi su
d. Estou acostumado com o comportamento do Cygwin, onde a área de transferência é compartilhada independentemente de qual conta um terminal é iniciado.
Solução de problemas
Eu recebo o mesmo comportamento se eu entrar na conta de não administrador e su
na conta de administrador. xsel
funciona no não administrador em que eu faço login, mas não na conta de administrador que eu faço su
.
Essencialmente, xsel
não funciona após um arquivo su
.
De acordo com os comentários, olhei para as respostas deste problema . Não reconheço a descrição do problema, pois as mensagens de erro são bem diferentes, portanto, alguém que procure 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 que funciona na minha resposta abaixo.
Acho que antes que a página citada acima possa até mesmo informar remotamente alguém, é preciso saber que o problema é a falta de permissão para uma conta acessar o servidor X. Por exemplo, se você vem de um histórico de uso do X-windows do Cygwin, provavelmente não adivinharia isso porque o problema não se manifesta lá.
Com base no comentário de waltinator , encontrei esta página sobre o uso do
xhost
. A partir dessas informações, encontrei o seguinte para funcionar:Uma alternativa útil para adicionar usuários um de cada vez é
xhost +local:
, que permite que qualquer usuário local abra janelas de clientes. Isso implica que você confia em todos os usuários conectados à máquina. Portanto, isso deve ser feito apenas em ambientes controlados, como máquinas de usuário único.Em muitos ambientes, a seleção PRIMARY também pode ser colada em [G]Vim do registro
*
.Da mesma forma, o buffer CLIPBOARD geralmente pode ser colado em [G]Vim de register
+
, ou de qualquer outro aplicativo que use Ctrl+V.Você pode usar o
pam_xauth
módulo de autenticação para encaminhar cookies de sessão X11 entresu
invocações, sem abrir seu servidor X para esses usuários em geral.Isso também permite um controle refinado sobre quais usuários podem encaminhar credenciais para quais outros usuários, por meio de arquivos de configuração em seus
$HOME/.xauth/
diretórios.