Запуск GUI-программы от имени пользователя (При запуске Х'ов root'ом)

Настройка графического интерфейса, Иксов, десктопов, оконных менеджеров и иксовых терминалов

Модератор: Модераторы разделов

Аватара пользователя
Zeus
Сообщения: 694

Запуск GUI-программы от имени пользователя

Сообщение Zeus »

Эксперимент у меня заключается в следующем:
нужно запустить графическую программу под голыми X'ами, без запуска всяких сессий, оконных менеджеров и т.п.

Для этого загружаю 3й уровень и в rc.local вызываю startx.
Xы запускаются от имени root'а.
В /root/.xinit.rc прописан запуск графической софтины от имени пользователя user:
su user --command=/home/myprog/start.sh
Она стартует (процесс появляется), но окно не появляется и процесс падает - что-то там про X-протокол говорит.

Вопрос:
а как правильно и на каком этапе в таком вот случае сменить пользователя?

Спасибо.
Спасибо сказали:
Аватара пользователя
BaZilio
Сообщения: 457
Статус: Say оПХБЕР again!

Re: Запуск GUI-программы от имени пользователя

Сообщение BaZilio »

А разрешено ли другим пользователям подключаться к этой Х-сессии? Попробуйте почитать man xhost, мне кажется это именно то, что вам нужно.

Windows XP:
Netbook - Acer Aspire One A150.
Debian Squeeze amd64:
Laptop - Acer TravelMate 5520G.
Laptop_work - Toshiba Satellite C660.
Windows 7 x64:
Desktop - Core2Duo 6600 2.4GHz/6 GB/i965/GeForce 9500GT.

4 the lulz!
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: Запуск GUI-программы от имени пользователя

Сообщение Zeus »

BaZilio писал(а):
02.09.2006 02:48
А разрешено ли другим пользователям подключаться к этой Х-сессии? Попробуйте почитать man xhost, мне кажется это именно то, что вам нужно.

Спасибо. Посмотрю.
Я запускал ось на 5м уровне (с графикой) и ps --forest'ом смотрел как там развивалась загрузка системы.
Так вот X'ы запускаются root'ом.
А gnome-session - уже этим пользователем (после входа в систему, конечно).
Вот я и подумал, что вместо этой gnome-session вполне могла бы запускаться только требуемая софтина и тоже не под root'ом, а под user'ом.
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Запуск GUI-программы от имени пользователя

Сообщение sash-kan »

(Zeus @ Sep 2 2006, в 08:14) писал(а):Так вот X'ы запускаются root'ом.
а почему бы не требуемым пользователем?
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: Запуск GUI-программы от имени пользователя

Сообщение Zeus »

sash-kan писал(а):
02.09.2006 12:06
(Zeus @ Sep 2 2006, в 08:14) писал(а):Так вот X'ы запускаются root'ом.
а почему бы не требуемым пользователем?

Можно было бы и так.
Прописывал в rc.local запуск X'ов от имени нужного юзера:
su user --command=startx
а у user'а в .xinitrc запуск уже необходимой проги.
Но так X'ы вообще не стартуют.
Говорят что-то про PAM autorization что-ли. "Возможно вы не являетесь собственником консоли".
Что-то вроде этого.
Спасибо сказали:
Аватара пользователя
Aectann
Бывший модератор
Сообщения: 3491
Статус: ...
ОС: OS X, GNU_и_не_только/Linux

Re: Запуск GUI-программы от имени пользователя

Сообщение Aectann »

Zeus писал(а):
02.09.2006 14:28
Можно было бы и так.
Прописывал в rc.local запуск X'ов от имени нужно юзера:
su user --command=startx
а у user'а в .xinitrc запуск уже необходимой проги.
Но так X'ы вообще не стартуют.
Говорят что-то про PAM autorization что-ли. "Возможно вы не являетесь собственником консоли".
Что-то вроде этого.


А если попробовать su -l user --command=startx ?
My god... it's full of stars!...
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: Запуск GUI-программы от имени пользователя

Сообщение Zeus »

Aectann писал(а):
02.09.2006 15:30
Zeus писал(а):
02.09.2006 14:28

Можно было бы и так.
Прописывал в rc.local запуск X'ов от имени нужно юзера:
su user --command=startx
а у user'а в .xinitrc запуск уже необходимой проги.
Но так X'ы вообще не стартуют.
Говорят что-то про PAM autorization что-ли. "Возможно вы не являетесь собственником консоли".
Что-то вроде этого.


А если попробовать su -l user --command=startx ?

Попробую. Попозже доложусь :)
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Запуск GUI-программы от имени пользователя

Сообщение Portnov »

AFAIK Иксы не под рутом запустить вообще невозможно: не хватит прав на запись в видеоустройство. Поэтому и пишут враперы типа xinit, которые запускают Иксы от рута, а клиентов - от пользователя.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
Aectann
Бывший модератор
Сообщения: 3491
Статус: ...
ОС: OS X, GNU_и_не_только/Linux

Re: Запуск GUI-программы от имени пользователя

Сообщение Aectann »

Portnov писал(а):
02.09.2006 16:28
AFAIK Иксы не под рутом запустить вообще невозможно: не хватит прав на запись в видеоустройство. Поэтому и пишут враперы типа xinit, которые запускают Иксы от рута, а клиентов - от пользователя.

Гм.. То есть если я делаю startx из под пользователя, то X-сервер стартует с правами root, а потом уже пользователь там авторизуется, так что ли?
My god... it's full of stars!...
Спасибо сказали:
Аватара пользователя
sash-kan
Администратор
Сообщения: 13939
Статус: oel ngati kameie
ОС: GNU

Re: Запуск GUI-программы от имени пользователя

Сообщение sash-kan »

(Portnov @ Sep 2 2006, в 15:28) писал(а):Иксы не под рутом запустить вообще невозможно: не хватит прав на запись в видеоустройство
$ ps -u al
PID TTY TIME CMD
3674 tty2 00:00:00 bash
5174 tty2 00:00:00 startx
5187 tty2 00:00:00 xinit

5209 tty2 00:00:00 icewm-session-e
5250 ? 00:00:00 icewmbg-experim
5251 ? 00:00:00 icewm-experimen
5252 ? 00:00:00 icewmtray-exper
5253 tty2 00:00:00 sim
5255 ? 00:00:00 kdeinit
5258 ? 00:00:00 kdeinit
5260 ? 00:00:00 kdeinit
5262 ? 00:00:00 kdeinit
5267 ? 00:00:39 firefox-bin
5288 ? 00:00:00 xterm
5296 pts/1 00:00:00 bash
5301 pts/1 00:00:00 ps
$ groups
al tty dialout cdrom floppy audio dip src video plugdev staff users
Писать безграмотно - значит посягать на время людей, к которым мы адресуемся, а потому совершенно недопустимо в правильно организованном обществе. © Щерба Л. В., 1957
при сбоях форума см.блог
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Запуск GUI-программы от имени пользователя

Сообщение Portnov »

sash-kan
ваш пост собственно подтверждает мой. От пользователя запущены startx и xinit. А сам X-сервер у вас даже не выписан здесь. Дело обстоит например так (у меня):

Код: Выделить всё

root      3791  2.9  1.6 15432 12496 ?       R    12:44   0:39 X :2
portnov   3790  0.0  0.0  2392  616 tty4     S+   12:44   0:00 xinit /home/portnov/.xinitrc -- :2

Т.е. xinit стартует от имени юзера и запускает сервер от рута.

Aectann
В общих чертах так.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: Запуск GUI-программы от имени пользователя

Сообщение Zeus »

Aectann писал(а):
02.09.2006 15:30
А если попробовать su -l user --command=startx ?

Всё-равно X'ы не запускаются. Жалуются на авторизацию.
"Возможно вы не являетесь собственником консоли".
Спасибо сказали:
Аватара пользователя
Portnov
Модератор
Сообщения: 1786
Статус: Матёрый линуксоид
ОС: Debian testing/unstable

Re: Запуск GUI-программы от имени пользователя

Сообщение Portnov »

см. man xauth, man xhost. И соответствующие хауту на opennet.ru.
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Спасибо сказали:
Аватара пользователя
router
Сообщения: 363
ОС: Debian, на работе rhel

Re: Запуск GUI-программы от имени пользователя

Сообщение router »

При запуске графического приложения от имени другого пользователя нужно
1) Установить переменную DISPLAY
2) Установить переменную XAUTHORITY, например, XAUTHORITY=~router/.Xauthority
ну или xhost, но это хак безопасности...
Спасибо сказали: