xsel no reconocido después de "su - otra cuenta"

xsel no reconocido después de "su - otra cuenta"

Soy nuevo en Linux y configuré la siguiente versión de Ubuntu como VirtualBox VM usandoeste proceso:

ubuntu-20.04.3-desktop-amd64.iso

La primera cuenta creada fue una cuenta de administrador. Lo instalé xsely verifiqué que funcionaba. Luego creé una cuenta que no es de administrador y sula ingresé con su - non-admin-account. En ese momento xselse queja:

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

¿Qué tengo que hacer para que sea xselaccesible después de suingresar a otra cuenta?

Actualmente, no estoy interesado en iniciar aplicaciones que inicien sus propias ventanas de cliente cuando suestén en la cuenta que no es de administrador. Sólo quiero una tubería simple desalida estándaral portapapeles para poder recuperarlo en Vim o en la línea de comando Bash usando Shift+Ins, por ejemplo, echo dog | xsel -ibo echo dog | xsel -ip.

Mi plan actual es escribir o redirigir a (digamos) /tmp/tmp.txtpara pasar texto entre un usuario que inició sesión desde una pantalla de inicio de sesión y uno al que se suaccedió. Estoy acostumbrado al comportamiento de Cygwin, donde el portapapeles se comparte independientemente de con qué cuenta se inicia una terminal.


Solución de problemas

Obtengo el mismo comportamiento si inicio sesión en la cuenta que no es de administrador y suen la cuenta de administrador. xselfunciona en la cuenta que no es de administrador en la que inicio sesión, pero no en la cuenta de administrador en la que inicio susesión.

Básicamente, xselno funciona después de un archivo su.

Según los comentarios, mirélas respuestas de este problema. No reconozco la descripción del problema, ya que los mensajes de error son bastante diferentes, por lo que alguien que busque basándose en los mensajes de error no reconocerá esa pregunta. Además, no entiendo las respuestas. Lo que parecía que podría aplicarse a mi solución fue xhost +localhost, pero no funcionó porque la sintaxis es incorrecta, al menos para la versión de Ubuntu que estoy usando. Publico la sintaxis quehacetrabaja en mi respuesta a continuación.

Creo que antes de que la página citada anteriormente pueda informar siquiera remotamente a alguien, hay que saber que el problema es la falta de permiso para que una cuenta acceda al servidor X. Por ejemplo, si usted tiene experiencia en el uso de X-windows de Cygwin, probablemente no lo adivinaría porque el problema no se manifiesta allí.

Respuesta1

Puedes usar elpam_xauthmódulo de autenticación para reenviar cookies de sesión X11 a través de suinvocaciones, sin abrir su servidor X a esos usuarios en general.

Esto también permite un control detallado sobre qué usuarios pueden reenviar credenciales a otros usuarios, a través de archivos de configuración en sus $HOME/.xauth/directorios.

Respuesta2

Residencia enWaltinadorcomentario, encontréesta páginasobre el uso xhost. A partir de esa información, encontré que lo siguiente 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"

Una alternativa útil para agregar usuarios uno por uno es xhost +local:, que permite a cualquier usuario local abrir ventanas del cliente. Esto implica que usted confía en todos los que iniciaron sesión en la máquina. Por lo tanto, esto sólo debe hacerse en entornos controlados, como máquinas de un solo usuario.

En muchos entornos, la selección PRIMARIA también se puede pegar en [G]Vim desde el registro *.

De manera similar, el búfer CLIPBOARD a menudo se puede pegar en [G]Vim desde el registro +o desde cualquier otra aplicación que use Ctrl+V.

información relacionada