"su - other-account" 이후 xsel이 인식되지 않습니다.

"su - other-account" 이후 xsel이 인식되지 않습니다.

저는 Linux를 처음 사용하고 다음 버전의 Ubuntu를 VirtualBox VM으로 설정했습니다.이 과정:

ubuntu-20.04.3-desktop-amd64.iso

처음 생성된 계정은 관리자 계정이었습니다. 설치 xsel하고 작동하는지 확인했습니다. 그런 su다음 관리자가 아닌 계정을 만들고 su - non-admin-account. 그 시점에서 xsel그는 이렇게 불평합니다.

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

다른 계정에 접속한 xsel후 액세스 하려면 어떻게 해야 합니까 ?su

su현재는 관리자가 아닌 계정에 로그인했을 때 자체 클라이언트 창을 시작하는 앱을 시작하는 데 관심이 없습니다 . 나는 단지 간단한 배관을 원한다표준 출력Vim이나 Bash 명령줄에서 Shift+In(예: echo dog | xsel -ib또는 ) 을 사용하여 검색할 수 있도록 클립보드에 저장합니다 echo dog | xsel -ip.

/tmp/tmp.txt내 현재 계획은 로그인 화면에서 로그인한 사용자와 로그인한 사용자 간에 텍스트를 전달하기 위해 쓰거나 리디렉션하는 것입니다 su. 나는 터미널이 시작된 계정에 관계없이 클립보드가 공유되는 Cygwin의 동작에 익숙합니다.


문제 해결

su비관리자 계정과 관리자 계정에 로그인해도 동일한 동작이 발생합니다 . xsel내가 로그인한 비관리자 계정에서는 작동하지만 내가 로그인한 관리자 계정에서는 작동하지 않습니다 su.

기본적 xsel으로 su.

댓글대로 살펴보니이 문제의 답. 오류 메시지가 상당히 다르기 때문에 문제 설명을 인식할 수 없습니다. 따라서 오류 메시지를 기반으로 보는 사람은 해당 질문을 인식하지 못할 것입니다. 게다가 나는 답변을 이해하지 못합니다. 내 솔루션에 적용될 수 있는 것처럼 보였지만 xhost +localhost적어도 내가 사용하고 있는 Ubuntu 버전에서는 구문이 잘못되어 작동하지 않았습니다. 나는 그 구문을 게시하다아래 내 답변에서 작업하십시오.

위에 인용된 페이지가 원격으로 누군가에게 알릴 수 있기 전에 문제는 X 서버에 액세스할 수 있는 계정의 권한이 부족하다는 점을 알아야 한다고 생각합니다. 예를 들어, Cygwin의 X-windows를 사용해 본 경험이 있다면 문제가 거기에서 나타나지 않기 때문에 아마도 이것을 추측하지 못할 것입니다.

답변1

당신은 사용할 수 있습니다pam_xauthsu더 일반적으로 해당 사용자에게 X 서버를 공개하지 않고 호출 전반에 걸쳐 X11 세션 쿠키를 전달하는 인증 모듈입니다 .

또한 디렉터리의 구성 파일을 통해 어떤 사용자가 다른 사용자에게 자격 증명을 전달할 수 있는지를 세밀하게 제어할 수 있습니다 $HOME/.xauth/.

답변2

기반월티네이터님의 댓글을 찾았습니다.이 페이지. xhost​해당 정보를 통해 다음이 작동한다는 것을 알았습니다.

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

한 번에 한 명씩 사용자를 추가하는 것에 대한 유용한 대안은 xhost +local:모든 로컬 사용자가 클라이언트 창을 열 수 있도록 허용하는 것입니다. 이는 컴퓨터에 로그온한 모든 사람을 신뢰한다는 의미입니다. 따라서 이는 단일 사용자 컴퓨터와 같은 통제된 환경에서만 수행되어야 합니다.

많은 환경에서 PRIMARY 선택 항목을 레지스터의 [G]Vim에 붙여넣을 수도 있습니다 *.

마찬가지로, CLIPBOARD 버퍼는 종종 레지스터의 [G]Vim +이나 Ctrl+V를 사용하는 다른 앱에서 붙여넣을 수 있습니다.

관련 정보