Не удается открыть Xterm в качестве другого пользователя: XT Ошибка: не могу открыть дисплей :: 0

Самый простой метод - использовать одинарные кавычки с правой стороны:

if [ "$line" == '#orb_plugins = ["local_log_stream", "iiop_profile", "giop", "iiop"];' ]

Таким образом, строка, которую нужно сопоставить, интерпретируется буквально.

Если вы предпочитаете использовать двойные кавычки, вы не должны избегать скобок ([]), а только двойных кавычек ( "" ):

if [ "$line" == "#orb_plugins = [\"local_log_stream\", \"iiop_profile\", \"giop\", \"iiop\"];" ]
-1
10.10.2018, 20:25
4 ответа

Когда вы делаете su, он отбрасываетDISPLAYпеременную среды (, которая используется, чтобы указать терминалу, где отображать его окно ). Если вы установите DISPLAY, вы столкнетесь с другой проблемой (по сути разрешениями ), которые запрашивались более одного раза, например. X «Не удается открыть дисплей::0», в то время как переменная DISPLAY верна (, отмечая, что одна из них была неправильно помечена как дубликат для еще одной связанной проблемы ).

1
28.01.2020, 05:12

Нет смысла использовать sudo, за которым следует su, если можно использовать su.

Проблема в том, что другой используемый не может использовать $DISPLAY. Вы не хотите, чтобы произвольные пользователи подключались к вашему дисплею. Если вы действительно хотите разрешить другим пользователям подключаться к вашему дисплею, вы также должны предоставить им доступ к вашему файлу $XAUTHORITY. Обычно ваш файл $XAUTHORITYне содержит информации более чем для одного дисплея, поэтому вы можете просто сделать содержимое файла доступным для целевого пользователя или скопировать файл.

Вы также можете извлечь информацию и объединить ее с файлом $XAUTHORITYцелевого пользователя. Комментарий от @mosvy предполагает ssh, но suтоже работает.

xauth extract - $DISPLAY | su sebastien -c 'xauth merge - <&7' 7<&0 </dev/tty
2
28.01.2020, 05:12

Наконец-то я наткнулся на эту команду, и теперь она работает:

$ xhost local:$USER
non-network local connections being added to access control list
$ sudo su - michel -c "xterm -e 'sleep 1'"
$
-1
28.01.2020, 05:12

Я перепробовал буквально каждое решение из всех подобных вопросов. Ни один из них не работает. Однако решение, которое я нашел здесь(Написано на китайском языке ), решено.

Вам просто нужно удалить ~/.Xauthorityи перезапустить оболочку.

После повторного входа в систему все работает отлично.

0
28.04.2021, 07:05

Теги

Похожие вопросы