Я вхожу в систему как пользователь 'foo', и если я могу запустить gedit и редактировать файлы на моей машине с Ubuntu 12.04 с настройкой DISPLAY: 0
Если я "su - bar", а затем пытаюсь редактировать файлы, я получаю ошибку, не указанную протоколом, и он не открывает необходимые файлы. В чем тут проблема?
gedit
- это графическая программа, поэтому, так как вы не запускаете ее как root
с прямой sudo
, вы не должны запускать ее как другой пользователь с прямой sudo
или прямой su
.
Вместо этого, если вы (т.е. foo
) имеете право запускать программы от имени другого пользователя с sudo
, это, вероятно, самый простой способ для foo
запустить gedit
как bar
:
xhost +local:bar
gksu -u bar gedit
Если у вас нет полномочий запускать программы от имени другого пользователя с sudo
, но вы можете su
- bar
, то это самый простой способ: [ 1133]
gksu -w -u bar gedit
Флаг -w
(эквивалентный --su-mode
) заставляет gksu
(который является интерфейсом для sudo
и su
) использовать su
вместо sudo
. [ 1134]
xhost
, чтобы заставить gksu -w ...
работать. Если вы хотите экземпляр графического терминала (gnome-terminal
), из которого вы можете запустить что-нибудь как bar
, включая графические приложения, вам следует рассмотреть возможность запуска нового экземпляра gnome-terminal
как bar
(который Вы можете сделать то же самое, что и запустить gedit
, подробно описано выше).
вы можете сделать это с помощью
ssh -l Other-User -X localhost gedit
на вашем рабочем столе запущено новое окно, но со средой «Other-User»!
Я проверил это с Ubuntu 10.04 LTS на моей коробке!
Синтаксис, который вы предоставляете, выглядит неправильно. Если вы хотите переключиться на пользователя 'bar', то я считаю, что вы должны использовать "su bar". Но если это не так, я думаю, вы получите ошибку при попытке переключения пользователей. Может быть, это опечатка в вашем вопросе или su все равно ее принимает.
Я думаю, что более вероятно, что проблема в том, что gedit - редактор на основе графического интерфейса и пытается запустить его в сеансе x этого пользователя, который не будет существовать, если вы измените измененных пользователей через терминал. Что произойдет, если вы используете "vi file_to_edit"? Vi - это редактор на основе терминала, и на него не должны влиять трудности с графическим интерфейсом.
edit: мне нужно взять очки для компьютера, я думал, что введенная вами команда была "su-bar". Но «su - bar» является допустимым синтаксисом.