Как получить графический дисплей при выполнении команд в качестве другого пользователя через терминал? [Дубликат]

Ну, просто для завершения ответа, перезагрузка сделала трюк для меня после выполнения следующих действий:

Я перешел на системные настройки -> клавиатура -> ярлыки, и почти все они были отключены , Я назначил «Alt + Tab» для «Переключение приложений». Тогда даже если проблема, указанная в одном из приведенных выше комментариев, сохраняется, перезагрузка решила проблему, и я могу без проблем переключаться между окнами.

Изменить: Иногда вам приходится перезагружаться несколько раз.

1
задан 21 December 2012 в 01:28

2 ответа

Выполнение графических команд из оболочки другого пользователя

Команда sux (см. man sux) позаботится об этом для вас и принимает тот же синтаксис, что и su.

sux - nextuser
gedit test.c

Это автоматически гарантирует правильность .Xauthority, поэтому вам не нужно запускать какие-либо команды для авторизации вручную.

Графические приложения имеют тенденцию записывать файлы конфигурации в ваш домашний каталог, и если вы запускаете их как другого пользователя, сохраняя $HOME, они попытаются записать файлы конфигурации в качестве этого пользователя в вашем домашнем каталоге. Это приведет к неспособности записать конфигурацию или настройку, которая будет испорчена для исходного пользователя (или некоторая комбинация из двух). Вот почему рекомендуется использовать флаг - с sux (или su) при запуске графических приложений. (Для sudo вместо этого вы можете использовать sux , например gksu / gksudo и kdesudo.)

Выполнение графических команд непосредственно как другой пользователь

Вы можете использовать gksu в ваш (с флагом -w), чтобы запустить команду как другой пользователь (с флагом -u):

gksu -w -u nextuser gedit test.c

Однако вам все равно придется сначала запустить xhost local:nextuser (как описано в gksu ), чтобы это работало. Это вряд ли понадобится, если вы используете sudo-mode, но тогда вы можете сделать это только в том случае, если вы являетесь администратором (и вы будете аутентифицироваться с помощью пароля, а не пароля nextuser, поскольку sudo скорее чем su является бэкэнд):

gksu -u nextuer gedit test.c

Запуск терминала (а не только оболочки) в качестве другого пользователя

Вы можете просто захотеть запустить графическую программу терминала (это оболочка запускается «внутри») как другой пользователь.

Вы можете использовать те же методы, которые были описаны выше, для запуска gedit в качестве другого пользователя.

gksu -w -u nextuser gnome-terminal
gksu -u nextuser gnome-terminal
4
ответ дан 25 May 2018 в 08:11

Используйте параметр -p с su для сохранения переменных среды, включая DISPLAY; поочередно задайте его явно с помощью export или префикс его для каждой команды.

2
ответ дан 25 May 2018 в 08:11
  • 1
    Я попробовал это. Но тогда домашняя папка нового пользователя сама старая. Как и в случае, когда вы вводите только cd, терминал возвращает меня в домашнюю папку старого пользователя. Я говорю в случае использования -p. Я не понимал, что означают ваши другие предложения. – harisibrahimkv 27 July 2012 в 18:05

Другие вопросы по тегам:

Похожие вопросы: