LINUX.ORG.RU
решено ФорумAdmin

sudo + Xserver


0

0

Пытаюсь заставить системного пользователя http запускать иксовые приложения через sudo. Не запускаются. Консольные запускаются. http - дефолтный пользовать Апача. (А под sudo -u root запускаются!)

(ArchLinux, KDE4, домашний десктоп, системные пакеты из стабильного репозитория)

По смыслу задачи - нет, я не наркоман, это нужно для удобной локальной отладки python под mod_wsgi с помощью WingIDE.

В passwd я поменял /bin/false на /bin/bash

/etc/passwd:

http:x:33:33:http:/srv/http:/bin/bash

И дал http права на доступ к своей домашней директории:

chown -R http /srv/http
chgrp -R http /srv/http
chmod -R g+rw /srv/http

ls -al /srv | grep http

drwxrwxr-x  4 http http 4096 Июл 12 12:32 http

Потом дописал новую команду в sudoers и разрешил выполнять ее от имени http

/etc/sudoers:

Cmnd_Alias STJOBSCMDS = /usr/bin/wingide

olegchir ALL=(http) NOPASSWD:STJOBSCMDS

И запустил эту команду:

sudo -u http /usr/bin/wingide

No protocol specified
No protocol specified

Вот такая вот ошибка вылезла. «No protocol specified».

Я погуглил, и нашел что ошибка «No protocol specified» может быть связана с xauth. Поэтому сделал как в вот этой статье: (http://www.debian-administration.org/articles/494)

$ xauth list $DISPLAY
You'll get something like

somehost.somedomain:10 mit-magic-cookie-1 4d22408a71a55b41ccd1657d377923ae

Then, after having done su, tell the new user what the cookie is:

$ xauth add somehost.somedomain:10 MIT-MAGIC-COOKIE-1 4d22408a71a55b41ccd1657d377923ae

Но если это и подействовало, то эффект прошел мимо.

При этом (внимание!) если запускать из-под рута, то всё будет ОК. Не работает только http.

Еще замечания.

Абсолютно точно известно, что можно сделать su http, и после этого выполнить иксовую прогу. Она будет работать.

Еще можно использовать kdesu, тоже будет работать. Но эта гадость не понимает NOPASSWD в sudoers. Я задолбаюсь вписывать пароли. Можно как-нибудь научить ее пониманию?

Ну и некошерно как-то.

Можно ли научить sudo запускать иксовые проги? Как?

заранее спасибо :)

★★★★☆

xauth add somehost.somedomain:10 MIT-MAGIC-COOKIE-1 4d22408a71a55b41ccd1657d377923ae [/quote]

Вот это нужно запускать от имени пользователя http, причём, возможно, в той же сессии, что и последующее требуемое X-приложение.
undertaker ★★ ()

Переменную DISPLAY не забываешь устанавливать?
Еще можешь попробовать отключить контроль прав - «xhost +»

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

> Вот это нужно запускать от имени пользователя http, причём, возможно, в той же сессии, что и последующее требуемое X-приложение.

КАЖДЫЙ РАЗ ЗАНОВО?!

stevejobs ★★★★☆ ()

Кажется, проблема решилась, но некошерным способом: в AUR есть некий пакет kdesudo, который производит нужный эффект.

Тему пока не закрываю, вдруг кто чего полезного скажет... По-нормальному проблема так и не решилась ведь.

stevejobs ★★★★☆ ()

вы хотя бы представляете насколько то что вы хотите сделать противоречит архитектуре и концепции X и принципу создания системных пользователей ?

если надо чтобы у залогонившегося пользователя в GUI запускалость нечто по команде от httpd сервера, то надо делать GUI приложение, которое по наличию внешнего флага (появление файла, записи в БД, и проч.) запустит GUI программулину. Только так и не каких - «запустить Kcalc от имени apache»

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