Пытаюсь заставить системного пользователя 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 запускать иксовые проги? Как?
заранее спасибо :)