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

17

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

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

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

или есть ли другое решение для моего дела? (Жаль, мне очень интересно узнать ответ!)

Имейте в виду, что я знаю, что могу запустить его как 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 в качестве другого пользователя!

    
задан Alexar 09.10.2010 в 15:11
источник

9 ответов

4

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

Apache's DocumentRoot should be under chown www-data:www-data /path/to/www

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

DocumentRoot /home/user/my-project/my-document-root
    
ответ дан Andrea Corbellini 12.10.2010 в 12:59
источник
7
xhost +SI:localuser:uname
gksudo -u uname -l "firefox"
xhost -SI:localuser:uname

Где uname = имя персонализированного пользователя. Видел там: Ссылка

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

    
ответ дан Anton S. Kraievoy 28.01.2011 в 14:14
5

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

gksudo -u www-data krusader

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

GTK+ Frontend for su and sudo

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

    
ответ дан Marco Ceppi 09.10.2010 в 16:43
4

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

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

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

    
ответ дан koushik 09.10.2010 в 15:17
4

Чтобы стать 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 {} \;

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

    
ответ дан dr Hannibal Lecter 10.10.2010 в 16:30
3

Я считаю, что вам нужно запустить на терминале следующее:

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

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

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

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

krusader

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

    
ответ дан nicholas.alipaz 27.02.2013 в 04:40
0

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

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

    
ответ дан Sense Hofstede 10.10.2010 в 16:02
0

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

sudo adduser $USER www-data

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

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

sudo chown www-data:www-data /var/www/file
chmod g+w /var/www/file
    
ответ дан Andrea Corbellini 10.10.2010 в 16:41
0

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

xhost +SI:localuser:username

Чем любезно зарегистрирован:

su - username

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

krusader

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

    
ответ дан hariprasad 17.09.2014 в 09:32