Как запустить приложение от имени другого пользователя?

Я использую krusader для управления файлами. проблема в том, что apache DocumentRoot должен быть под chown www-data:www-data /path/to/www. поэтому, используя krusader (который запускается под моей учетной записью), я не имею права на запись в /path/to/www, пока мне действительно нужно. Я не знаю, как другие разработчики могут продолжать делать вещи с таким ограничением!

Мне было интересно, смогу ли я запустить krusader как www-data, тогда я смогу легко играть с файлами. но использование su - www-data попросило у меня пароль www-data !!

Итак, как я могу запустить приложение (например, krusader) в качестве другого пользователя (например, www-data) в Gnome? [ 1119]

или есть другое решение для моего случая? (хотя мне действительно любопытно узнать ответ!)

имейте в виду, что я знаю, что могу запустить как root ! но это вызовет некоторые проблемы с разрешениями при использовании cp и mkdir, вы знаете.

PS: sudo и gksudo не помогли:

$ gksudo -u -www-data krusader
No protocol specified
krusader: cannot connect to X server :0.0

Заключительное примечание: в соответствии с лучшим ответом, я сделал chmod u+w /path/to/www и моя проблема решена. но мне все еще не удалось открыть krusader от имени другого пользователя!

17
задан 13 October 2010 в 20:14

9 ответов

Переосмыслив этот вопрос (надеюсь, что вы правильно поняли вашу проблему, но поправьте меня, если я ошибаюсь), я нашел другое решение и думаю, что вам не нужно запускать приложение как www-data или играть с разрешениями. Вы сказали, что:

Apache DocumentRoot должен находиться под chown www-data: www-data / path / to / www

, но на самом деле это не полностью true: Apache DocumentRoot должен быть читаемым www-data, но не обязательно принадлежать ему. По умолчанию в Ubuntu Desktop все файлы и каталоги, которые вы создаете, доступны для чтения всем, поэтому вы можете установить для DocumentRoot каталог внутри вашей домашней папки, например:

DocumentRoot /home/user/my-project/my-document-root
0
ответ дан 13 October 2010 в 20:14

Если вы запускаете это из системы меню, вам нужно использовать alacarte (Система> Настройки> Главное меню), изменить запись для krusader и добавить перед ней: gksudo -u www-data, которая должна что-то выдавать например:

gksudo -u www-data krusader

Это откроет окно запроса административной задачи, которое, согласно GKSudo Manpage , является

GTK + внешний интерфейс для su и sudo

Использование только gksudo без переключателя -u запускает команду от имени пользователя root.

0
ответ дан 13 October 2010 в 20:14
xhost +SI:localuser:uname
gksudo -u uname -l "firefox"
xhost -SI:localuser:uname

Где uname = имя олицетворенного пользователя. Видно там: http://ubuntuforums.org/showthread.php?p=10399617

Работает на моем индивидуальном ящике, в раздвоенном скайпе нет звука и ~ / .profile.d не выполняется, как мог бы.

0
ответ дан 13 October 2010 в 20:14

Как упоминал Марко, вы можете использовать gksudo -u www-data <command> для запуска команд от имени другого пользователя. Я обычно использую это для запуска команд как gdm, и до сих пор он никогда не просил у меня ничего, кроме моего собственного пароля.

Если вы используете kde, то это эквивалентно kdesu -u www-data krusader. Я думаю, поскольку krusader - это приложение kde, оно может работать лучше с kdesu. Более подробно о kdesu здесь .

Я использовал gksudo для запуска команд от имени других «людей» в системе, и когда мне предлагают пароль, я набираю свой.

0
ответ дан 13 October 2010 в 20:14

Чтобы стать www-данными со своим паролем, используйте это:

$ sudo su www-data
[sudo] password for <your username>: [enter your password]
$ whoami
(you should see www-data here)

Но я не думаю, что вы сможете запускать приложения с графическим интерфейсом оттуда ..

Я обычно владею всем в /var/www, но разрешаю доступ на чтение всем:

/var/www$ sudo chown -R [your-username]\:[your-group] *
/var/www$ find . -type d -exec chmod a+rx {} \;
/var/www$ find . -type f -exec chmod a+r {} \;

Я надеюсь, что это облегчит вашу боль :))

0
ответ дан 13 October 2010 в 20:14

Я полагаю, что необходимо выполнить следующее на терминале:

xhost +SI:localuser:<user-to-run-as>

Затем можно сделать:

sudo su - <user-to-run-as>

И наконец, запускает Ваше приложение:

krusader

Это должно сделать это, просто, несомненно, должно будет заменить <user-to-run-as> с Вашим именем пользователя, конечно.

3
ответ дан 13 October 2010 в 20:14

И «gksu», и «kdesu» являются графическим интерфейсом для «sudo» - инструмента, который вы должны использовать, когда находитесь в текстовой среде. Инструменты 'gksu' и 'kdesu' требуют, чтобы вы работали в графическом режиме, что объясняет ошибки «не удается подключиться к X серверу».

Если вы хотите выполнить консольную команду от имени другого пользователя, вы используете команду 'sudo -u username command'.

0
ответ дан 13 October 2010 в 20:14

Вдохновленный Антоном С. Крайевым, я использовал похожее решение, которое работает для меня. У пользователя, который с помощью Krusader я добавил нового пользователя в xhhost:

xhost +SI:localuser:username

Чем любезно войти:

su - username

Чем Krusader запускается как новый экземпляр для нового пользователя:

krusader

Обратите внимание, что в ~ / .kde / share / config / krusaderrc будет создана новая конфигурация.

0
ответ дан 13 October 2010 в 20:14

Запуск графического приложения под www-данными создает несколько проблем. Что вы можете сделать, это добавить себя в группу www-data, так что вы сможете изменить все нужные вам файлы:

sudo adduser $USER www-data

Примечание: возможно, вам понадобится выйдите из сеанса, чтобы изменения вступили в силу.

Если после этой команды вы все еще не можете изменить некоторые файлы, просто убедитесь, что у вас есть разрешение на запись в них:

sudo chown www-data:www-data /var/www/file
chmod g+w /var/www/file
0
ответ дан 13 October 2010 в 20:14

Другие вопросы по тегам:

Похожие вопросы: