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

17

Я использую 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?

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

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

Ответы:

4

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

DocumentRoot в Apache должен находиться под префиксом www-data: www-data / path / to / www

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

DocumentRoot /home/user/my-project/my-document-root
Андреа Корбеллини
источник
Благодарность! это просто сработало. и ваше объяснение того, почему это будет работать, было очень полезно. так как это решило мою проблему, но мне все еще интересно узнать, как я могу открыть krusader от имени другого пользователя. другие решения просто не работали.
Алексар
8
xhost +SI:localuser:uname
gksudo -u uname -l "firefox"
xhost -SI:localuser:uname

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

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

Антон С. Крайевой
источник
5

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

gksudo -u www-data krusader

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

GTK + Frontend для su и sudo

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

Марко Чеппи
источник
спасибо, но возвращается: протокол не указан
krusader
2
перед запуском команды gksudo в терминале под своей учетной записью запустите:xhost +
jet
4

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

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

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

Koushik
источник
спасибо, но результат как gksudo: протокол не указан krusader: не удается подключиться к X-серверу: 0.0
2010 г., Алексар,
Вероятно, для Krusader (приложение KDE), kdesuэто лучший выбор. Я обновил свой ответ. Вы можете попробовать это?
Кошик
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 {} \;

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

доктор Ганнибал Лектер
источник
как вы уже догадались, я не смог запустить приложения с графическим интерфейсом оттуда. он сказалNo protocol specified krusader: cannot connect to X server :0.0
Алексар
Второе решение не вариант для вас? Ваши данные не обязательно должны принадлежать www-данным, хотя я думаю, что это предпочтительнее.
р Ганнибал Лектер
3

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

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

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

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

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

krusader

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

nicholas.alipaz
источник
0

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

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

Смысл Хофстеде
источник
спасибо, я запускаю это, и он говорит что-то вроде [1] 12100этого, кажется, идентификатор процесса; но ничего не вижу в действии.
Алексар
0

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

sudo adduser $USER www-data

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

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

sudo chown www-data:www-data /var/www/file
chmod g+w /var/www/file
Андреа Корбеллини
источник
однако это не решение общей проблемы, но, похоже, работает для моего случая; я попробую и
доложу
0

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

xhost +SI:localuser:username

Чем любезно логин:

su - username

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

krusader

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

Харипрасад
источник