Существует два общих способа запуска приложений графически как root (или, в более общем плане, как другой пользователь). Такие программы, как gksu, gksudo и kdesudo, являются графическими интерфейсами для sudo. Напротив, pkexec является графическим интерфейсом для PolicyKit.
Когда вручную запускаются программы как root (или как другой пользователь без полномочий root), каковы преимущества / недостатки (если таковые имеются) использования [ f6], по сравнению с более традиционным методом использования интерфейса sudo?
С помощью 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 ... неважно.
Попробуйте, например:
cd /etc/init.d
sudo cat README
# and now the same with pkexec
pkexec cat README
# nice, huh?