Я определил 2 учетные записи пользователей:
sudo
) => давайте назовем ее adminuser
. normaluser
normaluser
. Поэтому, когда я открываю сеанс normaluser
и хочу запустить приложение с правами администратора,
я открываю терминал Ctrl kbd> + Alt kbd> + T kbd> и:
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
Это работает на меня на Ubuntu 16.04 (редактирование: это работает также над 18.04 LTS):
поместите строку:
session optional pam_xauth.so
где-нибудь в:
/etc/pam.d/su
и/или
/etc/pam.d/sudo
и затем делая "su -" или "sudo su -" Я могу использовать графические приложения в качестве корня.
Существует повсеместная альтернатива kdesudo и gksu - pkexec
из пакета policykit-1
, которая требуется для многих пакетов.
Вот команда, чтобы выполнить это.
gksu app-name
Запустите без , запустив su
первым. Вам нужно только запустить вышеуказанную команду из обычного пользовательского сеанса, и приложение будет запущено с правами root.
Один из способов, который, вероятно, сработает, - это использовать «sux» вместо «su» при первом переключении на пользователя с правами администратора. sux решает проблему запуска приложений x от поддельного пользователя. Он находится в стандартном репо и может быть установлен путем ввода sudo apt-get install sux
в командной строке.
Затем просто используйте «sux» вместо «su», и все должно работать так, как вы ожидаете.
Позволяет повторно использовать пример приложения xclock
:
sux admin
gksu xclock
Вместо
su admin gksu anyapplication ...
я предлагаю вам попробовать gksu -u admin anyapplication
, где вы делаете все, используя саму команду gksu
. Также обратите внимание, что вам необходимо ввести пароль пользователя, указанного в команде, т. Е. В этом случае вы должны ввести пароль admin .
В этом ответе:
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
Вам предложат пароль дважды:
admin
пароль, для разрешения normaluser
выполните команду как admin
с su
бэкенд.admin
пароль, для разрешения admin
выполните команду как root
с sudo
бэкенд.Верно. Вы входите admin
пароль дважды.
Разные примечания:
gksu
с gksudo
сделать это менее сбивающим с толку. В Ubuntu они эквивалентны. (Можно также заменить первое gksu
с gksudo
, но это было бы чрезвычайно парадоксально и сбивало бы с толку.)-w
краткая форма --su-mode
.-S
краткая форма --sudo-mode
но ни один не должен использоваться, потому что sudo-режим является значением по умолчанию.gksu -w -u admin gksu xclock
xclock
хорошее простое приложение окна часов.Вы должны использовать:
gksudo AppName
Это вызывает сначала графический запрос пароля (пароль вашего пользователя), а затем запускает GUI-приложение от имени пользователя root (я только что попробовал, это действительно так. Забавная вещь : Я попытался gksu AppName
сразу после этого, и это сработало также - как это, вероятно, и предполагается, как предполагает префикс "gk". Поэтому я не совсем уверен, где может быть ваша проблема).
Существует только один суперпользователь, и это - корень.
Пользователь 1 является администратором и имеет sudo права.
Пользователь 2 не является администратором и не имеет sudo прав.
Попытайтесь войти в систему как пользователь 1 затем использование команды
gksudo app-name
(замена имени приложения с названием приложения)
Надежда, которая помогает - сообщенный мне.: o)
РЕДАКТИРОВАНИЕ: Больше информации согласно просьбе
Если это - просто Вы на компьютере,
затем с помощью пользователя 1 (у кого есть разрешение использовать sudo),
не отличается от использования пользователя 2 (у кого нет разрешения использовать sudo).
Пользователь 1 имеет те же права как пользователь 2.
Если пользователь 1 не дает команду, снабженную префиксом sudo и/, или обеспечивает их пароль, чтобы позволить приложениям работать с корнем privelages.
Единственная разница - то, что пользователь 2 не может запустить приложения как корень.
Надежда, которая помогает объяснить это немного для Вас.: o)
У меня сработало следующее:
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY yourcommand commandoption1 commandoption2
Здесь вам нужно заменить часть yourcommand commandoption1 commandoption2
реальной командой и ее аргументами
В Lubuntu есть инструмент под названием lxqt-sudo
. Есть в официальных репозиториях.
Оно работает!
lxqt-sudo/groovy
, теперь 0.15.0-0ubuntu1 amd64
, представляет собой графический интерфейс Qt для простого sudo
.