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

Я определил 2 учетные записи пользователей:

  • учетную запись с правами администратора (с правом sudo) => давайте назовем ее adminuser .
  • 2-й без каких-либо привилегий => давайте назовем его normaluser
    и я настраиваю автологин для этого 2-го пользователя normaluser .

Поэтому, когда я открываю сеанс normaluser и хочу запустить приложение с правами администратора,
я открываю терминал Ctrl + Alt + T и:

su adminuser
sudo anyapplication ...

Работает нормально, без выхода из [ 118] сеанс (нет необходимости открывать adminuser сеанс).


Но что мне делать, если приложение должно работать с графическим интерфейсом пользователя?
Я думаю об этом:

su adminuser
gksu anyapplication ...

, но я получаю [ 1122]

** (gksu:9122): WARNING **: the connexion is closed
No protocol specified
No protocol specified
(gksu:9122): Gtk-WARNING **: cannot open display: :0.0
33
задан 11 June 2014 в 21:20

10 ответов

PAM может заботиться о нем

Это работает на меня на Ubuntu 16.04 (редактирование: это работает также над 18.04 LTS):

поместите строку:

session optional pam_xauth.so

где-нибудь в:

/etc/pam.d/su

и/или

/etc/pam.d/sudo

и затем делая "su -" или "sudo su -" Я могу использовать графические приложения в качестве корня.

5
ответ дан 11 June 2014 в 21:20

pkexec

Существует повсеместная альтернатива kdesudo и gksu - pkexec из пакета policykit-1, которая требуется для многих пакетов.

0
ответ дан 11 June 2014 в 21:20

Вот команда, чтобы выполнить это.

gksu app-name

Запустите без , запустив su первым. Вам нужно только запустить вышеуказанную команду из обычного пользовательского сеанса, и приложение будет запущено с правами root.

0
ответ дан 11 June 2014 в 21:20

Один из способов, который, вероятно, сработает, - это использовать «sux» вместо «su» при первом переключении на пользователя с правами администратора. sux решает проблему запуска приложений x от поддельного пользователя. Он находится в стандартном репо и может быть установлен путем ввода sudo apt-get install sux в командной строке.

Затем просто используйте «sux» вместо «su», и все должно работать так, как вы ожидаете.

Позволяет повторно использовать пример приложения xclock:

sux admin
gksu xclock
0
ответ дан 11 June 2014 в 21:20

Вместо

su admin
gksu anyapplication ...

я предлагаю вам попробовать gksu -u admin anyapplication, где вы делаете все, используя саму команду gksu. Также обратите внимание, что вам необходимо ввести пароль пользователя, указанного в команде, т. Е. В этом случае вы должны ввести пароль admin .

0
ответ дан 11 June 2014 в 21:20

Терминология

В этом ответе:

  • normaluser обычный пользователь, который не является администратором, и не могут команды выполнения как root с sudo.
  • admin администратор, который может выполнить команды как root с sudo. (Конечно, любые графические команды должны использовать графический frontend как gksu/gksudo, и нет sudo непосредственно.)
  • anyapplication название графического приложения normaluser хочет работать как root. normaluser знает adminпароль и был (по-видимому), сказан, что он или она может использовать его с этой целью.

Проблема

Причина Вашей проблемы и причина, большинство других ответов до сих пор не работает (за исключением превосходного ответа Marty Fried):

  • gksu может быть настроен для использования также sudo или su как его бэкенд. Поведение по умолчанию gksu в Ubuntu должен действовать как frontend для sudo, не для su. То есть это, по умолчанию, gksu и gksudo ведите себя точно то же. См. страницу справочника.
  • normaluser не администратор, и таким образом не могут команды выполнения как root с sudo. sudo подсказки для пароля пользователя, выполняющего его, не пароля пользователя, они хотят стать. Не будучи способен использовать Ваш пароль для выполнения действий, поскольку люди, которые не являются Вами, - то, что это означает не быть администратором.
  • normaluser, если это не Гостевая учетная запись, может выполнить команды как другого пользователя с su, включение пароля другого пользователя. Но gksu действия как frontend для sudo, нет su.
  • normaluser не может непосредственно выполнить команду как root, потому что normaluser не может использовать sudo, и никто не может стать root с su потому что существует нет root пароль.

Решение

Решение требует записи команды, которая выполняет два шага аутентификации:

  • normaluser должен стать admin выполнять графическую команду. Сделать это, normaluser должен работать gksu с -w флаг, чтобы заставить его работать в su-режиме вместо sudo-режима по умолчанию, и -u отметьте для выполнения команды как admin вместо root.
  • Команда выполняется как admin должен вызвать gksu без -w отметьте для использования sudo стать root.

Вот команда (да, я протестировал ее ;-)):

gksu -w -u admin gksu anyapplication

Вам предложат пароль дважды:

  1. Во-первых, необходимо войти adminпароль, для разрешения normaluser выполните команду как admin с su бэкенд.
  2. Во-вторых, необходимо войти adminпароль, для разрешения admin выполните команду как root с sudo бэкенд.

Верно. Вы входите adminпароль дважды.

Разные примечания:

  • При необходимости можно заменить второе gksu с gksudo сделать это менее сбивающим с толку. В Ubuntu они эквивалентны. (Можно также заменить первое gksu с gksudo, но это было бы чрезвычайно парадоксально и сбивало бы с толку.)
  • -w краткая форма --su-mode.
  • -S краткая форма --sudo-mode но ни один не должен использоваться, потому что sudo-режим является значением по умолчанию.
  • Можно хотеть протестировать это с некоторой довольно безопасной командой сначала, удостовериться, что она делает то, что Вы хотите. (Это будет, но нет никакой потребности в Вас доверять мне на этом.), Например:
    gksu -w -u admin gksu xclock
    xclock хорошее простое приложение окна часов.
29
ответ дан 11 June 2014 в 21:20

Вы должны использовать:

gksudo AppName

Это вызывает сначала графический запрос пароля (пароль вашего пользователя), а затем запускает GUI-приложение от имени пользователя root (я только что попробовал, это действительно так. Забавная вещь : Я попытался gksu AppName сразу после этого, и это сработало также - как это, вероятно, и предполагается, как предполагает префикс "gk". Поэтому я не совсем уверен, где может быть ваша проблема).

0
ответ дан 11 June 2014 в 21:20

Существует только один суперпользователь, и это - корень.

Пользователь 1 является администратором и имеет sudo права.
Пользователь 2 не является администратором и не имеет sudo прав.

Попытайтесь войти в систему как пользователь 1 затем использование команды

gksudo app-name  

(замена имени приложения с названием приложения)
Надежда, которая помогает - сообщенный мне.: o)

РЕДАКТИРОВАНИЕ: Больше информации согласно просьбе

Если это - просто Вы на компьютере,
затем с помощью пользователя 1 (у кого есть разрешение использовать sudo),
не отличается от использования пользователя 2 (у кого нет разрешения использовать sudo).
Пользователь 1 имеет те же права как пользователь 2.
Если пользователь 1 не дает команду, снабженную префиксом sudo и/, или обеспечивает их пароль, чтобы позволить приложениям работать с корнем privelages.
Единственная разница - то, что пользователь 2 не может запустить приложения как корень.

Надежда, которая помогает объяснить это немного для Вас.: o)

-1
ответ дан 11 June 2014 в 21:20

У меня сработало следующее:

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY yourcommand commandoption1 commandoption2

Здесь вам нужно заменить часть yourcommand commandoption1 commandoption2 реальной командой и ее аргументами

1
ответ дан 24 December 2019 в 23:07

В Lubuntu есть инструмент под названием lxqt-sudo. Есть в официальных репозиториях. Оно работает!

lxqt-sudo/groovy, теперь 0.15.0-0ubuntu1 amd64, представляет собой графический интерфейс Qt для простого sudo.

https://packages.ubuntu.com/focal/lxqt-sudo

1
ответ дан 19 November 2020 в 17:48

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

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