Терминология
В этом ответе:
-
normaluser
является обычным пользователем, который не является администратором и не может выполнять команды от имениroot
сsudo
. -
admin
является администратором, который может выполнять команды какroot
сsudo
. (Конечно, любые графические команды следует использовать графический интерфейс, такой какgksu
/gksudo
, и неsudo
напрямую.) -
anyapplication
это имя графического приложенияnormaluser
хочет баллотироваться какroot
.normaluser
знаетadmin
пароль пользователя и (предположительно) ему сказали, что он / она может использовать его для этой цели.
Проблема
Причина вашей проблемы и причина, по которой большинство других ответов до сих пор не работают (за исключением Марти Фрид'с отличный ответ), является:
-
gksu
может быть сконфигурирован для использования любогоsudo
илиsu
в качестве его бэкэнда. Поведение по умолчаниюgksu
в Ubuntu заключается в том, чтобы выступать в качестве интерфейса дляsudo
, нет дляsu
. То есть, по умолчанию,gksu
иgksudo
вести себя точно такой же. Смотри страница человека. -
normaluser
не является администратором и, следовательно, не может выполнять команды от имениroot
сsudo
.sudo
запрашивает пароль для пользователь, запускающий его, а не пароль от пользователем, которым они хотят стать. Невозможность использовать ваш пароль для выполнения действий от имени людей, которые не являетесь вами, - это что значит не быть администратором. -
normaluser
, при условии , что это не гостевая учетная запись, мочь выполняйте команды от имени другого пользователя сsu
, вводя в пароль другого пользователя. Ноgksu
выступает в качестве интерфейса дляsudo
, неsu
. -
normaluser
не могу непосредственно запустите любую команду какroot
, потому чтоnormaluser
не может использоватьsudo
, и никто может статьroot
сsu
потому что здесь нетroot
пароль.
Решение
Решение требует написания команды, которая выполняет два этапа аутентификации:
-
normaluser
должен статьadmin
для выполнения графической команды. Чтобы сделать это,normaluser
должен бежатьgksu
с-w
флаг, чтобы заставить его работать в су-режим вместо значения по умолчанию sudo-режим, и в-u
установите флажок для выполнения команды какadmin
вместоroot
. - Команда выполняется как
admin
должен вызыватьgksu
без то-w
флаг для использованияsudo
статьroot
.
Вот команда (да, я проверил это ;-)):
gksu -w -u администратор гксу любое приложение
Вам будет предложено ввести пароль дважды:
- Во-первых, вы должны ввести
admin
пароль пользователя, чтобы позволитьnormaluser
запустите команду какadmin
сsu
бэкэнд. - Во-вторых, вы должны ввести
admin
пароль пользователя, чтобы позволитьadmin
запустите команду какroot
сsudo
бэкэнд.
Верно. Вы входите admin
пароль дважды.
Прочие примечания:
- При желании вы можете заменить второй
gksu
сgksudo
чтобы сделать это менее запутанным. В Ubuntu они эквивалентны. (Вы также можете заменить первыйgksu
сgksudo
, но это было бы крайне нелогично и сбивало с толку.) -
-w
является краткой формой--su-mode
. -
-S
является краткой формой--sudo-mode
но ни то, ни другое не должно использоваться, потому что sudo-режим это значение по умолчанию. - Возможно, вы захотите сначала протестировать это с помощью какой-нибудь довольно безобидной команды, чтобы убедиться, что она делает то, что вы хотите. (Так и будет, но вам нет необходимости доверять мне в этом.) Например:
gksu -w -u администратор gksu xclock
xclock
это приятное простое приложение с окном часов.