Як запустити програму як інший користувач?


17

Я використовую krusader для управління файлами. проблема полягає в тому, що апачі 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 як іншого користувача!

Відповіді:


4

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

Apache's DocumentRoot має знаходитись під загальнодоступними www-data: www-data / path / to / www

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

DocumentRoot /home/user/my-project/my-document-root

Спасибі! це просто спрацювало. і ваше пояснення, чому це спрацювало, було дуже корисним. як це вирішило мою проблему, але мені все ще цікаво знати, як я можу відкрити krusader як інший користувач. інші рішення просто не спрацювали.
Алексар


5

Якщо ви запускаєте це з системи меню, ви хочете скористатися alacarte(Система> Налаштування> Головне меню) та змінити запис для krusader та додати перед ним: gksudo -u www-dataщо повинно створити щось на кшталт:

gksudo -u www-data krusader

Це запустить вікно підказки адміністративної задачі, яке, згідно зі словами GKSudo Manpage , є

GTK + Frontend для су і судо

Використання просто gksudo без -uкомутатора запустить команду як root.


дякую, але він повертається: протокол не вказанийkrusader: не можна підключитися до X-сервера: 0.0
Alexar

2
перед запуском команди gksudo, в терміналі під вашим обліковим записом запустіть:xhost +
Jet

4

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

Якщо ви використовуєте kde, еквівалент дорівнює. kdesu -u www-data krusaderЯ думаю, оскільки krusader є додатком kde, це може працювати краще kdesu. Детальніше про kdesu тут .

Я використовував gksudoкоманди для запуску команд, як інші "людські" користувачі в системі, і коли мені запропоновано ввести пароль, я ввожу свій.


спасибі, але результат такий, як gksudo: не вказано протоколkrusader: не можна підключитися до X-сервера: 0.0
Alexar

Можливо, для krusader (додаток kde) kdesu- кращий вибір. Я оновив свою відповідь. Ви можете спробувати це?
кушик

4

Щоб стати www-data з власним паролем, використовуйте це:

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

Але я не думаю, що ви не зможете запускати програми GUI звідти.

Зазвичай я просто є власником всього /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 {} \;

Сподіваюся, це полегшить ваш біль :)


як ви здогадалися, я не можу запустити програми GUI звідти. це СайедNo protocol specified krusader: cannot connect to X server :0.0
Alexar

Невже друге рішення для вас не є варіантом? Ваші дані не повинні належати www-data, хоча я думаю, що це є кращим.
д-р Ганнібал Лектер

3

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

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

Тоді ви можете зробити:

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

І нарешті, запустіть свою програму:

krusader

Це повинно зробити це, просто обов'язково замініть <user-to-run-as>ваше ім'я користувача звичайно.


0

І "gksu", і "kdesu" - це графічні межі для "sudo", що є інструментом, який ви повинні використовувати, коли ви перебуваєте в текстовому середовищі. Інструменти 'gksu' та 'kdesu' вимагають, щоб ви знаходитесь у графічному режимі, що пояснює помилки "не вдається підключитися до сервера X".

якщо ви хочете виконати команду консолі як інший користувач, ви використовуєте команду "sudo -u команда імені користувача"


дякую, я запускаю це, і він говорить про щось подібне [1] 12100, схоже, ідентифікатор процесу; але нічого не бачу в дії.
Алексар

0

Запуск графічної програми під www-data створює кілька проблем. Що ви можете зробити - це додати себе до групи даних www, тому ви зможете змінити всі необхідні файли:

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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.