Запуск приложения GUI как другой (некорневой) пользователь

Можно получить эту информацию только от vSphere Клиента..:\(но fixme, если существует путь.. Я просто спросил многих людей, и заключение было этим..)

p.s.: возможно:

vmware-toolbox-cmd

может сделать это, но я не вижу его на серверах:

http://www.virtuallyghetto.com/2011/01/how-to-extract-host-information-from.html

где делает его информацию vmware-toolbox-cmd get? нет ли никакие альтернативы для него?

35
10.07.2018, 10:59
7 ответов

su по сравнению с su -

При становлении другим пользователем Вы обычно хотите использовать su - user2. Тире вызовет user2 .bash_profile быть полученным.

xhost

Дополнительно необходимо будет предоставить пользовательский доступ к дисплею. Этим управляют X. Можно использовать команду xhost + позволить другому пользовательскому разрешению отобразить GUI на рабочий стол user1.

Примечание: При выполнении xhost + Вы захотите выполнить это, в то время как все еще в оболочке, которая принадлежит user1.

$DISPLAY

Когда Вы становитесь user2, Вы, возможно, должны установить переменную среды $DISPLAY.

$ export DISPLAY=:0.0
43
27.01.2020, 19:36
  • 1
    xhost +user2 все еще дает мне эту ошибку - xhost: bad hostname "user2". Я погуглил некоторых, и кажется, что я должен сделать xhost +user2@laptop или xhost +user2@localhost, не уверенный, который. Затем это говорит xhost +user2@localhost being added to access control list. –  sashoalm 11.01.2014, 12:10
  • 2
    Но даже после добавления пользователя с xhost, и определение export DISPLAY=:0.0, выполнение leafpad все еще дает мне No protocol specified leafpad: Cannot open display:, и сбои для выполнения. Я нашел эту ссылку в linuxquestions.org/questions/linux-newbie-8 / …, который говорит, что существуют некоторые волшебные cookie и xauth. Вы протестировали это те вещи работа над Вашим компьютером btw? Возможно, что-то отличается с моей конфигурацией? Я нахожусь на Debian+LXDE. –  sashoalm 11.01.2014, 12:15
  • 3
    Спасибо, xhost + работы, и ничто иное, кажется, не необходимо (никакая потребность установить $DISPLAY). Можно ли обновить ответ, и я приму его? –  sashoalm 12.01.2014, 00:27
  • 4
    О, найденный чем-то. На выполнении Fedora 21 xhost дает список в формате SI:localuser:USERNAME, так xhost SI:localuser:user2 должен работать. О, и дисплей пользователя может быть найден с помощью w. –  Wilf 21.04.2015, 14:01
  • 5
    xhost + позволит любому пользователю на любом хосте, который может соединиться с Вашим X-сервером для доступа к экрану. xhost +SI:localuser:user2 работы для меня на Debian. –  robartsd 17.03.2017, 06:46
[

]Вы можете попробовать команду sux:[

] [
sux user2
] [

]sux обработает $DISPLAY для вас. Вам может понадобиться установить его с:[

] [
sudo apt-get install sux
] [

]в Debian/Ubuntu.[

].
4
27.01.2020, 19:36

Вам необходимо поделиться токеном аутентификации от user1 (предполагается, что ~ является домом для user1 ):

cat ~/.Xauthority | sudo -u user2 -i tee .Xauthority > /dev/null
10
27.01.2020, 19:36

В качестве альтернативы suxдля безопасного запуска графической команды(firefox-esrв примере ниже )как$AUTHUSER(guestв примере ниже):

AUTHUSER=guest
AUTHSTRING=SI:localuser:${AUTHUSER}
xhost +${AUTHSTRING} > /dev/null
SUDO_ASKPASS=/usr/bin/ssh-askpass
export SUDO_ASKPASS
sudo -k --askpass -u ${AUTHUSER} /usr/bin/firefox-esr
xhost -${AUTHSTRING} > /dev/null
sudo -K

код делает:

  1. предоставляет пользователю guestдоступ к вашему текущему пользователю $DISPLAYчерезxhost +SI:localuser:guest
  2. использует ssh-askpassдля графического запроса пароля (, конечно, вы можете использовать sudoers(5)NOPASSWD:, чтобы избежать этого, если ваша политика безопасности считает, что это нормально. Или вы можете использовать другие askpassпрограммы или указать их в конфигурационных файлах (см. sudo(8)для получения подробной информации о--askpass)
  3. если пароль в порядке (и у вас есть разрешения вsudoers(5))он запускает команду /usr/bin/firefox-esrкак другой пользователь(guest)
  4. после завершения программы права другого пользователя(guest)на доступ к вашему $DISPLAYотменяются черезxhost -SI:localuser:guest
  5. наконец, sudo -Kудаляет кешированный пароль, поэтому при следующем вызове ssh-askpassвам снова будет предложено ввести пароль (вместо использования кешированного пароля)

    хотя это немного больше работы, чем то, что сделали gksu(8)или sux(8), это можно написать в сценарии, и это гораздо более безопасно, чем:

    • xhost +(Любой пользователь будет иметь доступ к вашему графическому дисплею, пока он действует)
    • чтение ~/.xauth другими пользователями (неограниченный доступ этого пользователя к вашему дисплею)
    • что gksu/ suxсделали (временная копия ~/.Xauthority,что позволило указанному пользователю скопировать ваш MIT-MAGIC-COOKIE-1и продолжать использовать ваш дисплей даже после завершения работы gksu/sux (до тех пор, пока вы не выключили машину или не вышли из дисплея -заставки, режим гибернации и т. д. не изменили волшебный файл cookie ).

поскольку это позволит только одному локальному пользователю получить доступ к вашему дисплею, а затем только до тех пор, пока выполняется команда (после завершения команды, $AUTHUSERбольше не сможет получить доступ к вашему дисплею каким-либо образом ).

Другая безопасная альтернатива —ssh -X(без -Y, что на самом деле делает вас менее безопасным! см. ForwardX11Trustedв ssh_config(5)для подробностей ), так как его проще использовать, если вы не пишете его в сценарии, но это вызывает дополнительные накладные расходы (, например. он медленнее )и некоторые программы могут работать некорректно без unsafe-Y.

2
27.01.2020, 19:36

Вам необходимо загрузить интерфейс установки как user2 .

Попробуйте следовать этому:

Войти как root:

sudo su

Проверка x-сервера:

xclock

Если вы видите, что часы работают, это хорошо, теперь попробуйте запустить это:

xhost

Результат должен быть таким:

xhost SI:localuser:tri
# tri is my user name

Теперь дайте user2 доступ к xhost

xhost +SI:localuser:user2

теперь попробуйте снова войти в систему user2 и попробуйте открыть любую программу с графическим интерфейсом.

-2
27.01.2020, 19:36

Вы можете использовать pkexec, изman pkexec:

DESCRIPTION
pkexec allows an authorized user to execute PROGRAM as another user. If username is not specified, then the program will be executed as the administrative super user, root.

Сначала вам нужно дать этому пользователю разрешение xhostна использование графического интерфейса.

Чтобы добавить пользователя на постоянной основе, вы можете добавить следующую команду xhostв/etc/bash.bashrc(для всей системы )или локально в ~/.bashrc. На дебиане.

Вы можете использовать этот скрипт для запуска leafpad от имени пользователя2:

#!/bin/sh

xhost SI:localuser:user2
pkexec --user user2 env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY leafpad
2
31.12.2020, 16:19

Большинство представленных здесь решений не интегрируются с Wayland и PulseAudio.

Я написалego(Alter Ego ), который автоматически обрабатывает xhostи совместное использование сокетов Wayland и PulseAudio :https://github.com/intgr/ego

.

Итак, вы просто запускаете ego leafpadилиego -u user2 leafpad

Если у вас возникнут проблемы, создайте проблему на GitHub. Я, возможно, единственный его пользователь, поэтому он еще не прошел много испытаний.

2
07.03.2021, 03:00

Теги

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