Исправление ошибки «xhost: невозможно открыть дисплей '0'» в Ubuntu

Убунту 13

В мире Ubuntu ошибки — обычное явление. Одной из таких ошибок является ошибка «xhost: невозможно открыть дисплей «0». Эта ошибка обычно возникает при попытке запустить графическое приложение от имени пользователя без полномочий root. В этой статье мы углубимся в причину этой ошибки и предоставим пошаговое руководство по ее устранению.

Чтобы исправить ошибку «xhost: невозможно открыть дисплей '0» в Ubuntu, вы можете попробовать установить правильную переменную DISPLAY, проверить состояние X-сервера, изменить конфигурацию PAM, используя команду xhost или сценарий обходного пути.

Понимание ошибки

Прежде чем мы углубимся в решения, важно понять, что означает эта ошибка. Сообщение об ошибке «xhost: невозможно открыть дисплей «0» обычно возникает из-за неправильной или отсутствующей конфигурации переменной DISPLAY. Эта переменная определяет используемый сервер отображения. Если настройка не установлена ​​правильно, система не сможет открыть дисплей, что приведет к ошибке.

Проверка статуса X-сервера

Первым шагом в диагностике этой проблемы является проверка состояния вашего X-сервера. X-сервер отвечает за управление отображением системы. Вы можете проверить его статус, выполнив следующую команду:

pgrep -a Xorg

Эта команда проверяет наличие запущенных процессов, связанных с Xorg, который является общедоступной реализацией системы X Window с открытым исходным кодом. Если X-сервер не запущен, вам необходимо его запустить.

Установка правильной переменной DISPLAY

Следующий шаг включает установку правильной переменной DISPLAY. Вместо установки DISPLAY=0 используйте DISPLAY=:0, чтобы указать сервер отображения. Это следует сделать до запуска команды. Вот пример:

ДИСПЛЕЙ=:0 /usr/local/stata/xstata-mp

В этой команде DISPLAY=:0 задает сервер отображения, а /usr/local/stata/xstata-mp — это команда, которую вы хотите запустить.

Изменение конфигурации PAM

Другое решение — изменить конфигурацию PAM (подключаемые модули аутентификации). Это включает в себя редактирование файлов /etc/pam.d/su и /etc/pam.d/sudo и добавление необязательного сеанса строки pam_xauth.so. Это изменение позволяет X-аутентификации работать как для пользователей root, так и для пользователей без полномочий root.

Для редактирования этих файлов вы можете использовать любой текстовый редактор. Например, чтобы открыть файл с помощью nano, вы должны ввести:

судо нано /etc/pam.d/su

Затем добавьте в файл необязательную строку session pam_xauth.so, сохраните изменения и выйдите. Повторите процедуру для файла /etc/pam.d/sudo.

Использование команды xhost

Команду xhost также можно использовать для исправления этой ошибки. Эта команда контролирует доступ к вашему X-серверу. Запустив xhost +si:localuser:root, вы разрешаете соединения от локального пользователя root. Эту команду следует выполнить перед запуском приложения.

Использование обходного сценария

Более сложное, но эффективное решение предполагает создание сценария, который добавляет файл cookie xauth пользователя к файлам cookie корневой учетной записи. Вот пример такого скрипта:

#!/bin/bash X=`xauth list $DISPLAY` sudo — bash -c “xauth add $X && $@”

В этом сценарии список xauth $DISPLAY извлекает файл cookie xauth для текущего дисплея, а xauth add $X добавляет этот файл cookie в файл xauth учетной записи root. Часть && $@ запускает команду, которую вы передаете сценарию.

Сохраните этот скрипт как xsudo.sh и запустите его как обычную команду sudo. Например: xsudo.sh /usr/local/stata/xstata-mp.

Заключение

Устранение ошибки «xhost: невозможно открыть дисплей '0» в Ubuntu включает в себя ряд шагов, требующих хорошего понимания среды Ubuntu. Однако, при правильном руководстве и немного терпения, вы можете легко найти выход из этой проблемы. Всегда не забывайте проверять состояние вашего X-сервера, устанавливать правильную переменную DISPLAY, при необходимости изменять конфигурацию PAM, использовать команду xhost или даже использовать обходной сценарий. Имея в своем распоряжении эти инструменты, вы должны быть хорошо подготовлены к устранению этой ошибки.

X-сервер в Ubuntu отвечает за управление дисплеем системы. Это программный компонент, который позволяет отображать графические приложения на экране.

Вы можете проверить состояние X-сервера, выполнив команду pgrep -a Xorg. Эта команда отобразит все запущенные процессы, связанные с Xorg, реализацией системы X Window с открытым исходным кодом.

Чтобы установить правильную переменную DISPLAY, используйте формат DISPLAY=:0. Например, DISPLAY=:0 /usr/local/stata/xstata-mp устанавливает для сервера отображения значение :0 перед запуском указанной команды.

Чтобы изменить конфигурацию PAM, вы можете отредактировать файлы /etc/pam.d/su и /etc/pam.d/sudo с помощью текстового редактора. Добавьте необязательную строку сеанса pam_xauth.so в оба файла, сохраните изменения и выйдите.

Команда xhost управляет доступом к X-серверу. Запустив xhost +si:localuser:root, вы разрешаете соединения от локального пользователя root.

Вы можете создать обходной сценарий, который добавляет файл cookie xauth пользователя к файлам cookie корневой учетной записи. Сохраните скрипт как xsudo.sh и запустите его с помощью sudo. Например: xsudo.sh /usr/local/stata/xstata-mp. Скрипт добавит файл cookie xauth, а затем выполнит указанную команду.

Похожие записи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *