Команда работает с пользователем "heo". Но я получаю сообщение об ошибке "$ su another_user; cat file | xclip":

No protocol specified Error: Can't open display: :0.0

Суперпользователь имеет черный CLI, без сообщения об ошибке или текста, с помощью команды xauth.

  1. Как я могу сохранить один и тот же дисплей со многими пользователями?

  2. Как я могу изменить отображение на:0 или:1 для всех пользователей?

  3. Почему команда xauth черная с одним суперпользователем?

2 ответа2

5

xclip не может общаться с вашим X-сервером. Убедитесь, что $ DISPLAY установлен правильно. Другие X-клиенты работают с тем же параметром $ DISPLAY?

Это:

$ echo 'hello' | xclip

у меня просто отлично работает

редактировать

Вы получаете ошибку после того, как Инг su пользователя , потому что пользователь не имеет соответствующие разрешения для подключения к вашему X серверу. X использует протокол проверки прав доступа, известный как MIT magic cookie, который работает путем создания случайной строки для использования в качестве пароля. Этот пароль хранится в файле $XAUTHORITY , или ~/.Xauthority если переменная окружения не установлена. Управляется инструментом xauth . Например,

$ xauth list
…
Feynman/unix:0  MIT-MAGIC-COOKIE-1  <<redacted>>
…

Я не уверен, для чего вы делаете su, но:

  • если это так, вы можете прочитать файл, а затем просто запустить cat от имени другого пользователя и направить вывод su в xclip. Таким образом, xclip работает как ваш пользователь и работает.
  • если вы пытаетесь установить буфер обмена для сеанса X другого пользователя, то вам нужно установить $DISPLAY для дисплея этого пользователя и $XAUTHORITY для файла полномочий X этого пользователя. Просмотрите ConsoleKit (если вы его используете) и /var/lib/gdm (если вы используете gdm), чтобы найти указанные вещи.

Если ничего из вышеперечисленного нет, вам придется использовать xauth для настройки авторизации и помнить, что все, что подключается к вашему X-серверу, может принести все виды зла, например, наблюдать за всеми нажатиями клавиш.

PS: $DISPLAY указывает, к какому X-серверу они подключены. Если вы не настроили несколько работающих серверов (чтобы одновременно могли войти несколько пользователей), это будет одинаковым для всех пользователей.

0

Развернув другой ответ, пользователь "sudo" не может использовать сеанс или показ X непривилегированного пользователя. Обходным путем может быть использование su -c .

$ sudo su # echo 'hello' | su -c 'xclip -selection clipboard' nonprivusername

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .