проблеммы с запуском приложения, cannot connect to X server |
Здравствуйте, гость ( Вход | Регистрация )
проблеммы с запуском приложения, cannot connect to X server |
nikita |
13.12.2012, 8:54
Сообщение
#1
|
Студент Группа: Участник Сообщений: 34 Регистрация: 19.10.2012 Пользователь №: 3570 Спасибо сказали: 2 раз(а) Репутация: 0 |
Всем привет!Помогите плиз разобраться с проблеммой : Пишу приложение которое создает файл в нужной мне директории. Собираю его СиМэйком и все прекрасно работает. Далее устанавливаю права доступа к директории в которой приложение создает файл (чтение\запись\запуск только для владельца) а у исполняемого файла(sr-survey) устанавливаю флаги привелегии UID и GID. Перегружаю машину под другим пользователем и запускаю консольный вариант данной программы - все работает отлично (в указанной директории создается файл, хотя пользователь даже просмотреть содержимое каталога не может), а вот при запуске оконного варианта в терминал выскакивает ошибка :
sr-survey : cannot connect to X server : 1.0 Что это за ошибка и как все таки запустить это оконное приложение? P.S.: Пишу под Debian, C++, QT4 |
|
|
Iron Bug |
13.12.2012, 9:14
Сообщение
#2
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
http://stackoverflow.com/questions/646930/...-qt-application
скорее всего, у юзера нет прав на запуск графических приложений. |
|
|
nikita |
13.12.2012, 11:46
Сообщение
#3
|
Студент Группа: Участник Сообщений: 34 Регистрация: 19.10.2012 Пользователь №: 3570 Спасибо сказали: 2 раз(а) Репутация: 0 |
|
|
|
Iron Bug |
13.12.2012, 13:32
Сообщение
#4
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
попробуй запустить
Цитата xhost +localhost это разрешит вызов графики из консоли. в общем, более детально надо читать маны на xhost. и ещё DISPLAY должен быть определён для юзера. вроде Цитата env DISPLAY=:0.0 some_program или в bash профайле для этого юзера, чтобы сразу при старте консоли работало. Сообщение отредактировал Iron Bug - 13.12.2012, 13:38 |
|
|
iReset |
13.12.2012, 15:33
Сообщение
#5
|
Участник Группа: Участник Сообщений: 178 Регистрация: 6.6.2012 Пользователь №: 3414 Спасибо сказали: 23 раз(а) Репутация: 2 |
попробуй запустить Это разрешит выдачу графики в данный сеанс всем, у кого X-клиент запущен на этой машине (lovalhost).Цитата xhost +localhost это разрешит вызов графики из консоли. в общем, более детально надо читать маны на xhost.и ещё DISPLAY должен быть определён для юзера. вроде Цитата env DISPLAY=:0.0 some_program или в bash профайле для этого юзера, чтобы сразу при старте консоли работало. Ну если запуск этой программы производится уже в иксах, то DISPLAY указывать не нужно. А вся проблема, действительно, в том, что по умолчанию X-сервер настроен таким образом, что от кого попало запрос на отображение не примет - только от текущего пользователя. А поскольку программа принадлежит другому пользователю, а суидный бит говорит, что её надо запускать с правами владельца, то она и запускается с правами того пользователя. Соответственно, ей нет доступа на твой дисплей. Это стандартное ограничение, и сама программа в этом не виновата. Просто администратор (в данном случае ты, nikita) сказал запускаться ей от определённого пользователя. А тот пользователь, что запускает программу, может либо разрешить ей выдаваться на свой экран, либо нет. Чтобы обойти это ограничение, можно попробовать поиграться с идентификаторами процесса через функцию setuid(). |
|
|
Iron Bug |
13.12.2012, 16:53
Сообщение
#6
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
короче говоря, под дебианом (вот только что дома проверила) надо писать
xhost local:user_name где user_name - юзер, от которого запускается программа, а запускать эту команду надо от юзера, который открыл графическую сессию (локальный юзер). |
|
|
nikita |
14.12.2012, 9:19
Сообщение
#7
|
Студент Группа: Участник Сообщений: 34 Регистрация: 19.10.2012 Пользователь №: 3570 Спасибо сказали: 2 раз(а) Репутация: 0 |
короче говоря, под дебианом (вот только что дома проверила) надо писать xhost local:user_name где user_name - юзер, от которого запускается программа, а запускать эту команду надо от юзера, который открыл графическую сессию (локальный юзер). Огромное спасибо! Все прекрасно заработало) |
|
|
Текстовая версия | Сейчас: 29.3.2024, 18:28 |