Я использую 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 от имени другого пользователя!
Переосмыслив этот вопрос (надеюсь, что вы правильно поняли вашу проблему, но поправьте меня, если я ошибаюсь), я нашел другое решение и думаю, что вам не нужно запускать приложение как www-data или играть с разрешениями. Вы сказали, что:
Apache DocumentRoot должен находиться под chown www-data: www-data / path / to / www
blockquote>, но на самом деле это не полностью true: Apache
DocumentRoot
должен быть читаемымwww-data
, но не обязательно принадлежать ему. По умолчанию в Ubuntu Desktop все файлы и каталоги, которые вы создаете, доступны для чтения всем, поэтому вы можете установить для DocumentRoot каталог внутри вашей домашней папки, например:DocumentRoot /home/user/my-project/my-document-root
Если вы запускаете это из системы меню, вам нужно использовать alacarte
(Система> Настройки> Главное меню), изменить запись для krusader и добавить перед ней: gksudo -u www-data
, которая должна что-то выдавать например:
gksudo -u www-data krusader
Это откроет окно запроса административной задачи, которое, согласно GKSudo Manpage , является
GTK + внешний интерфейс для su и sudo
blockquote>Использование только gksudo без переключателя
-u
запускает команду от имени пользователя root.
xhost +SI:localuser:uname
gksudo -u uname -l "firefox"
xhost -SI:localuser:uname
Где uname = имя олицетворенного пользователя. Видно там: http://ubuntuforums.org/showthread.php?p=10399617
Работает на моем индивидуальном ящике, в раздвоенном скайпе нет звука и ~ / .profile.d не выполняется, как мог бы.
Как упоминал Марко, вы можете использовать gksudo -u www-data <command>
для запуска команд от имени другого пользователя. Я обычно использую это для запуска команд как gdm
, и до сих пор он никогда не просил у меня ничего, кроме моего собственного пароля.
Если вы используете kde, то это эквивалентно kdesu -u www-data krusader
. Я думаю, поскольку krusader - это приложение kde, оно может работать лучше с kdesu
. Более подробно о kdesu здесь .
Я использовал gksudo
для запуска команд от имени других «людей» в системе, и когда мне предлагают пароль, я набираю свой.
Чтобы стать 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 {} \;
Я надеюсь, что это облегчит вашу боль :))
Я полагаю, что необходимо выполнить следующее на терминале:
xhost +SI:localuser:<user-to-run-as>
Затем можно сделать:
sudo su - <user-to-run-as>
И наконец, запускает Ваше приложение:
krusader
Это должно сделать это, просто, несомненно, должно будет заменить <user-to-run-as>
с Вашим именем пользователя, конечно.
И «gksu», и «kdesu» являются графическим интерфейсом для «sudo» - инструмента, который вы должны использовать, когда находитесь в текстовой среде. Инструменты 'gksu' и 'kdesu' требуют, чтобы вы работали в графическом режиме, что объясняет ошибки «не удается подключиться к X серверу».
Если вы хотите выполнить консольную команду от имени другого пользователя, вы используете команду 'sudo -u username command'.
Вдохновленный Антоном С. Крайевым, я использовал похожее решение, которое работает для меня. У пользователя, который с помощью Krusader я добавил нового пользователя в xhhost:
xhost +SI:localuser:username
Чем любезно войти:
su - username
Чем Krusader запускается как новый экземпляр для нового пользователя:
krusader
Обратите внимание, что в ~ / .kde / share / config / krusaderrc будет создана новая конфигурация.
Запуск графического приложения под www-данными создает несколько проблем. Что вы можете сделать, это добавить себя в группу www-data, так что вы сможете изменить все нужные вам файлы:
sudo adduser $USER www-data
Примечание: возможно, вам понадобится выйдите из сеанса, чтобы изменения вступили в силу.
Если после этой команды вы все еще не можете изменить некоторые файлы, просто убедитесь, что у вас есть разрешение на запись в них:
sudo chown www-data:www-data /var/www/file
chmod g+w /var/www/file