Когда использовать pkexec против gksu / gksudo?

Существует два общих способа запуска приложений графически как root (или, в более общем плане, как другой пользователь). Такие программы, как gksu, gksudo и kdesudo, являются графическими интерфейсами для sudo. Напротив, pkexec является графическим интерфейсом для PolicyKit.

Когда вручную запускаются программы как root (или как другой пользователь без полномочий root), каковы преимущества / недостатки (если таковые имеются) использования [ f6], по сравнению с более традиционным методом использования интерфейса sudo?

1
задан 18 January 2013 в 07:23

2 ответа

С помощью sudo вы можете установить для каждого пользователя и для каждой политики программ, чтобы сохранить или сбросить среду звонящих в контексте sudo. Политика env_reset установлена ​​по умолчанию.

Вы не можете запускать графические приложения через pkexec без явной настройки для этого. Поскольку это просто результат сброса среды, это, очевидно, верно и для sudo. Однако обратите внимание, что ни pkexec, ни sudo не могут предотвратить вредоносное приложение, выполняемое как root, чтобы получить всю необходимую информацию от диспетчеров дисплея или файла X11-файла cookie пользователей. Последний, оба или похожий, может быть даже выполнен не root-приложениями в зависимости от обстоятельств.

Sudo не требует явных списков пользователей. Листинг любой группы пользователей или даже установка разрешений для всех пользователей в целом может быть выполнена. Директива target_pw позволяет этим пользователям проходить аутентификацию с учетными данными пользователя в контексте whoose, которым они хотят запускать приложение, то есть root. Кроме того, можно использовать ту же традиционную программу su (su / gtksu / kdesu), что и без специальной настройки.

sudo также позволяет пользователю оставаться аутентифицированным в течение определенного времени. Опция называется timeout, настраивается глобально, для каждого пользователя или для каждого приложения.

Хотя pkexec не может выполнять проверку ARGUMENTS, переданных в PROGRAM, sudo действительно имеет эту функцию. Принято, однако, вы можете легко испортить это, и это обычно не делается.

Вы можете немного настроить, как вы хотите, чтобы программы запускались через значок pkexec: значок, текст для отображения, вы даже можете локализации и всего этого. В зависимости от обстоятельств это может быть действительно здорово. Ужасно, однако, что кто-то почувствовал необходимость изобретать колесо для этой функции. Это, вероятно, было бы что-то помещать в графические оболочки gtksudo / kdesu.

Policykit - это только централизованная структура конфигурации. К сожалению, не очень. XML-файлы PKs намного сложнее, чем что-либо, что приложение может предоставить изначально двоичные файлы. И никто не будет так раскован, чтобы использовать двоичный файл ... oh gconf ... неважно.

14
ответ дан 25 May 2018 в 16:57
  • 1
    Я проигнорировал, потому что этот пост на самом деле не является ответом, это критика другого ответа. Если вы считаете, что обычно лучше использовать sudo над pkexec, скажите так, объясняя свою точку с этими опровержениями. – Flimm 30 January 2013 в 02:29
  • 2
    Спасибо, Пол, за полезный анализ! Но я также согласен с Флиммом. Можете ли вы начать с простого ответа на вопрос, как его спрашивали? – nealmcb 24 April 2013 в 20:08
  • 3
    Нет, pkexec может запускать графический интерфейс без настройки: askubuntu.com/a/332847/89385 – akostadinov 14 January 2016 в 12:50
Несколько вещей, как pkexec отличен от sudo и его интерфейсам:

Вы не можете запускать графические приложения через pkexec без явного его настройки, чтобы сделать это. Вы можете настроить немного, как вы хотите, чтобы программы, которые будут работать через pkexec: значок, отображаемый текст, независимо от того, чтобы вспомнить пароль или нет, независимо от того, чтобы позволить ему работать в графическом виде и некоторые другие. Любой может запустить «Запуск от имени» суперпользователя (при условии, что он может аутентифицироваться как таковой), при этом sudo вы должны быть указаны в файле sudoers в качестве администратора. gksudo блокирует клавиатуру, мышь и фокус при запросе пароля, pkexec нет. В обоих случаях нажатия клавиш носят снисходительный характер. С pkexec вы работаете в немного более дезинфицированной среде.

Попробуйте, например:

cd /etc/init.d
sudo cat README
# and now the same with pkexec
pkexec cat README
# nice, huh?
8
ответ дан 25 May 2018 в 16:57
  • 1
    Хорошая точка (№ 3) о том, как вы можете аутентифицироваться как другие пользователи для запуска программ как root с pkexec. Может ли он конфигурироваться, какие пользователи могут использовать pkexec вообще (даже если они знают пароль другого пользователя, которому разрешено это делать)? su настраивается таким образом. Когда я пытаюсь su использовать другого пользователя root как guest в системе Oneiric, он говорит мне, что мне не разрешено это делать. (В отличие от этого, когда я пытаюсь использовать pkexec в качестве guest в Oneiric или Precise, я получаю то, что похоже на ошибку утверждения, которую я могу вскоре сообщить как ошибку, так как я не должен получать это, даже если это isn Допустим.) – Eliah Kagan 16 November 2011 в 05:56
  • 2
    Но sudo и его интерфейсы также могут быть изменены, как описано в пункте 2. Вы можете запустить программу с gksu или gksudo отображением настроенного текста , прекратить использование некоторых паролей пользователей, отредактировав [ f4] (с visudo), и измените, как долго они запоминаются в смысле изменения времени, необходимого на время ожидания sudo (хотя я не уверен, как это сделать на Ubuntu, который настроен так, что вопросы от того, нужен ли или нет sudo пароль, и как долго он понадобится снова, зависят от терминала). – Eliah Kagan 16 November 2011 в 05:57
  • 3
    # 4 неверно, если вы используете GNOME Shell. – muru 25 September 2014 в 19:16
  • 4
    Нет, pkexec может запускать графический интерфейс без настройки: askubuntu.com/a/332847/89385 – akostadinov 14 January 2016 в 12:49

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

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