xsel wird nach „su - other-account“ nicht erkannt

xsel wird nach „su - other-account“ nicht erkannt

Ich bin neu bei Linux und habe die folgende Version von Ubuntu als VirtualBox VM eingerichtet mitdieser Prozess:

ubuntu-20.04.3-desktop-amd64.iso

Das erste erstellte Konto war ein Administratorkonto. Ich habe es installiert xselund überprüft, ob es funktioniert. Dann habe ich ein Nicht-Administratorkonto erstellt und sumich mit angemeldet su - non-admin-account. An diesem Punkt xselbeschwerte sich:

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

Was muss ich tun, um den Zugriff xselnach suder Anmeldung bei einem anderen Konto möglich zu machen?

Derzeit bin ich nicht daran interessiert, Apps zu starten, die ihre eigenen Client-Fenster starten, wenn susie mit dem Nicht-Administrator-Konto angemeldet sind. Ich möchte nur eine einfache Weiterleitung vonStandardausgangin die Zwischenablage, damit ich es in Vim oder der Bash-Befehlszeile beispielsweise mit Umschalt+Einfg echo dog | xsel -iboder abrufen kann echo dog | xsel -ip.

Mein aktueller Plan ist, zu schreiben oder umzuleiten (sagen wir), /tmp/tmp.txtum Text zwischen einem Benutzer zu übergeben, der sich über einen Anmeldebildschirm angemeldet hat, und einem, der suangemeldet war. Ich bin an das Verhalten von Cygwin gewöhnt, bei dem die Zwischenablage unabhängig davon freigegeben wird, unter welchem ​​Konto ein Terminal gestartet wird.


Fehlerbehebung

suWenn ich mich beim Nicht-Administrator-Konto und beim Administrator-Konto anmelde, tritt dasselbe Verhalten auf . xselFunktioniert beim Nicht-Administrator-Konto, bei dem ich mich anmelde, aber nicht beim Administrator-Konto, bei dem ich sumich anmelde.

Funktioniert im Wesentlichen xselnicht nach einem su.

Wie in den Kommentaren beschrieben, habe ich mirAntworten auf dieses Problem. Ich erkenne die Problembeschreibung nicht, da die Fehlermeldungen sehr unterschiedlich sind. Jemand, der anhand von Fehlermeldungen sucht, wird diese Frage also nicht erkennen. Außerdem verstehe ich die Antworten nicht. Der Teil, der auf meine Lösung zutreffen könnte, war xhost +localhost, aber es funktionierte nicht, weil die Syntax falsch ist, zumindest für die Ubuntu-Version, die ich verwende. Ich poste die Syntax, dietutArbeite an meiner Antwort unten.

Ich denke, bevor die oben zitierte Seite auch nur annähernd jemanden informieren kann, muss man wissen, dass das Problem darin besteht, dass einem Konto die Berechtigung zum Zugriff auf den X-Server fehlt. Wenn Sie beispielsweise bisher Cygwins X-Windows verwendet haben, würden Sie das wahrscheinlich nicht vermuten, da das Problem dort nicht auftritt.

Antwort1

Du kannst den ... benutzenpam_xauthAuthentifizierungsmodul zum Weiterleiten von X11-Sitzungscookies über suAufrufe hinweg, ohne Ihren X-Server allgemein für diese Benutzer zu öffnen.

Dies ermöglicht auch eine detaillierte Kontrolle darüber, welche Benutzer über Konfigurationsdateien in ihren $HOME/.xauth/Verzeichnissen Anmeldeinformationen an welche anderen Benutzer weiterleiten können.

Antwort2

Bezogen aufAbonnieren's Kommentar, ich fanddiese Seitezur Verwendung xhost. Anhand dieser Informationen habe ich herausgefunden, dass Folgendes funktioniert:

# 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"

Eine nützliche Alternative zum Hinzufügen einzelner Benutzer ist xhost +local:, wodurch jeder lokale Benutzer Clientfenster öffnen kann. Dies setzt voraus, dass Sie jedem vertrauen, der an der Maschine angemeldet ist. Daher sollte dies nur in kontrollierten Umgebungen, wie z. B. Einzelbenutzermaschinen, durchgeführt werden.

In vielen Umgebungen kann die PRIMARY-Auswahl auch in [G]Vim aus dem Register eingefügt werden *.

Ebenso kann der CLIPBOARD-Puffer häufig in [G]Vim aus dem Register +oder aus jeder anderen App, die Strg+V verwendet, eingefügt werden.

verwandte Informationen