LINUX.ORG.RU
ФорумAdmin

Gtk-WARNING **: cannot open display:


0

0

Имеется проблема, я о ней уже писал тут. Не получается запускать gui-программы из-под рута, выдаётся сообщение, указанное в заголовке темы. Мне в той теме писали что не стоит запускать gui из-под рута и советовали настроить sudo. Да, я всё понимаю, запускать gui из-под рута это очень небезопасно, да, sudo я настроил. Но существуют же проприетарные программы, которые устанавливаются исключительно с помощью gui-инсталяторов, не прописывать же мне каждый раз в sudoers путь к инсталятору, а потом удалять его оттуда. Кроме того, та же ошибка выводится при набирании xfwm4 --daemon, а поэксперементировать с этой штукой мне хочется. Вобщем, тема пока что не закрыта.

★★★★★



kdesudo
gksu
ssh -XY -l root localhost

Sylvia ★★★★★
()

anon_666, растолкуйте, пожалуйста, то что написано на форуме, ссылку на который вы мне дали. Для того чтобы export DISPLAY=:0 выполнялась при каждом запуске, мне нужно прописать его в /root/.bashrc? Или просто прописать DISPLAY=:0 без export? Чем отличаются эти две формы записи? А куда прописывать xhost?

sunny1983 ★★★★★
() автор топика

Я в этих манах всё равно не разберусь и в результате создам уже третью тему, а зачем плодить лишних сущностей. Может кто-нибудь объяснить:

1) чем отличаются записи:

переменная=значение

set переменная=значение

export переменная=значение

2) какие файлы мне нужно отредактировать, чтобы оно работало при КАЖДОЙ загрузке?

sunny1983 ★★★★★
() автор топика
Ответ на: комментарий от sunny1983

> Я в этих манах всё равно не разберусь

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

1. описано в любой документации по shell, коей и на русском языке - хоть зачитайся.

2. какие угодно. можно изменить загрузочный скрипт xfce, добавив туда строку «xhost +localhost». можно эту же команду дергать из какого-нибудь $XDG_CONFIG_HOME/autostart/xhost.desktop (курить спеки xdg по-поводу автозапуска программ). если вы такой любитель консоли - можно ее-же загнать в .profile. там-же, только для рута, можно гвоздями прибить установку DISPLAY. а можно просто освоить наконец sudo с NOPASSWD и не париться.

выбирать вам.

ananas ★★★★★
()

Ну вот, началось, будете посланы...

До того как вы мне сказали читать доки по шеллам, откуда мне было знать что мне нужны доки ИМЕННО по шеллам?

Я понимаю, что есть «какие угодно» способы. Но тут сидят опытные админы, имеющие по этому делу сертификат с печатью, им что трудно подсказать максимально рациональный способ, а не тот который «какой угодно»? А sudo между прочим пользоваться я умею.

sunny1983 ★★★★★
() автор топика
Ответ на: комментарий от sunny1983

>Но тут сидят опытные админы

Опытные админы сидят в толкс.

anon_666
()
Ответ на: комментарий от sunny1983

с set не сталкивался.

export - для текущего терминала
без export - для текущей команды

типо следующее идентично

export VAR1="hello"
cmd1
VAR1="hello cmd1
vertexua ★★★★★
()
Ответ на: комментарий от sunny1983

> До того как вы мне сказали читать доки по шеллам, откуда мне было знать что мне нужны доки ИМЕННО по шеллам?

вы тот mousepad из предыдущего топика в космосе запускали, или все-таки в шэле? иногда и головой полезно думать.

ananas ★★★★★
()

vertexua, а зачем тогда в инициализационных скриптах применяются две конструкции одновременно

PATH=/sbin:/usr/sbin:/bin:/usr/bin
export PATH
Да, да, да, это уже оффтоп получается.

А в гугле я уже сутки сижу и вот хоть убей не пойму почему переменные нужно прописывать в /root/.bashrc, а не например в /etc/bash.bashrc.

Дальше. Нагуглил вот что:

в DISPLAY указывается адрес X-сервера в формате [server_address]:<display_number>там есть еще одна циферка но она тебе не понадобится для локальной машины это всегда :0 вот, собсно. Когда ты пускаешь X, эта переменнаяавтоматом выставляется в :0. Но если ты перейдешь в консоль, т.е. нажмешь скажем CTRL-ALT-F1, то там этой переменной не будет, тебе нужно будет ее писать ручками. Подытоживая все вышесказанное, скажу, что если прога требует эту вариаблу, то ей нужен УЖЕ запущенный Х.

То есть, устанавливая export DISPLAY=:0, я сообщаю любой gui-программе что x-сервер находится на том же компьютере что и запускаемая программа.

Но зачем нужен xhost и почему в других дистрибутивах всё нормально работает без него? Задолбался уже башкой в открытую дверь стучаться.

sunny1983 ★★★★★
() автор топика
Ответ на: комментарий от sunny1983

и почему в других дистрибутивах всё нормально работает без него

Потому что в других дистрибутивах оно настроено искаропки, ментейнерами

$ xhost 
access control enabled, only authorized clients can connect
SI:localuser:vga
SI:localuser:gdm
SI:localuser:root

Fedora. Как видно отсюда, руту и гдм можно подключаться к моим иксам.

vga ★★
()
Ответ на: комментарий от sunny1983

Но зачем нужен xhost

Чтобы контролировать доступ пользователей к икссерверу. Если бы его не было, к твоим иксам мог бы подключиться любой пользователь и грабил бы корованы (скриншоты делал, клавиатуру перехватывал).

vga ★★
()

Чтобы контролировать доступ пользователей к икссерверу. Если бы его не было, к твоим иксам мог бы подключиться любой пользователь и грабил бы корованы (скриншоты делал, клавиатуру перехватывал).

Так. xhost изменяет правила доступа к x-серверу. То есть она изменяет параметры уже запущеного x-сервера? То есть она изменяет параметры уже запущенного процесса? То есть она вносит изменения в /proc? Так куда же прописывать xhost +localhost? В конец скрипта /etc/X11/Xsession? Где он прописан в вышеупомянутой федоре?

sunny1983 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.