Существует два основных способа графического запуска приложений от имени пользователя root (или, в более общем случае, от имени другого пользователя). Такие программы, как gksu
, gksudo
и kdesudo
являются графическим интерфейсом для sudo
. Напротив, pkexec
это графический интерфейс для PolicyKit .
При ручном запуске программ от имени пользователя root (или другого пользователя, не являющегося пользователем root), каковы преимущества / недостатки (если они есть) использования pkexec
по сравнению с более традиционным способом использования sudo
внешнего интерфейса?
Ответы:
PolicyKit более настраиваемый, но
pkexec
не использует эту настраиваемость. Кроме того,pkexec
покажите пользователю полный путь к программе, которая будет запущена, чтобы пользователь был немного уверен в том, что произойдет. Так называемые «политики» PolicyKit могут быть использованы для установки дополнительных параметров. Например, должен ли пароль быть запомненным.Что-то, что я получил из
pkexec
руководства:Больше информации о политиках или определениях действий из
pkexec
руководства:источник
pkexec
для запуска графических приложений (я только не делал так ...). Ваш ответ объясняет, почему это не так (или, по крайней мере, почему для этого нужно указать пользовательскую среду).pkexec
, в каком смысле ее возможности («разрешения») могут быть ограничены? Я даю программе возможность делать что-либо, когда я запускаю ее сsudo
помощьюsudo
внешнего интерфейса ... В каком смысле запуск программы от имени пользователя rootpkexec
также не делает этого?pkexec
облегчает ли это, илиpkexec
просто работает как root с неограниченными способностями?pkexec
Руководство Отрывок вы включили в свой ответ документы , как писать правила для определения , которые могут запускать программу с правами администратора (или как другой, не суперпользователя), а не то , что программа может сделать.pkexec
это более настраиваемо, чемsudo
, и, учитывая обсуждение, которое мы провели здесь в комментариях, это, похоже, не так. Не могли бы вы отредактировать свой ответ либо для объясненияsudo
настраиваемости и сравнить / сопоставить егоpkexec
с, либо отредактировать свой ответ, чтобы сказать, что разница отличается от настраиваемости?С помощью sudo вы можете установить политики для каждого пользователя и программы для сохранения или сброса среды вызывающих в контексте sudo. Политика env_reset установлена по умолчанию.
Вы не можете запускать графические приложения через pkexec без явной настройки для этого. Поскольку это всего лишь результат перезагрузки среды, это, очевидно, верно и для sudo. Однако обратите внимание, что ни pkexec, ни sudo не могут помешать злонамеренному приложению, работающему от имени пользователя root, получить всю необходимую информацию из диспетчера отображения или из файла X11-cookie пользователя. Последнее, оба или похожее, может даже быть сделано некорневыми приложениями в зависимости от обстоятельств.
Sudo не требует явных списков пользователей. Перечисление любой группы пользователей или даже установка разрешения для всех пользователей в целом может быть сделано. Директива target_pw позволяет этим пользователям проходить аутентификацию с учетными данными пользователя в том контексте, в котором они хотят запустить приложение, то есть root. Кроме того, одинаково традиционная программа su (su / gtksu / kdesu) может использоваться для того же самого без специальной настройки.
sudo также позволяет пользователю оставаться аутентифицированным в течение указанного времени. Опция называется тайм-аут, настраивается глобально, для пользователя или для приложения. Аутентификация может быть сохранена для tty или глобально для пользователя.
Хотя pkexec может не проверять аргументы, переданные в PROGRAM, sudo действительно имеет эту функцию. Признаюсь, однако, вы можете легко запутаться с этим, и это обычно не делается.
Вы можете немного настроить то, как вы хотите, чтобы программы запускались через pkexec: значок, текст для отображения, вы даже можете иметь материал для локализации и все такое. В зависимости от обстоятельств это может быть действительно изящно. Грустно, однако, что кто-то почувствовал необходимость изобретать велосипед для этой функции. Вероятно, это было бы чем-то, что можно поместить в графические оболочки gtksudo / kdesu.
Policykit - это только централизованная структура конфигурации. К сожалению, не очень. XML-файлы PK намного сложнее, чем то, что приложение может предоставить изначально без двоичных файлов. И никто не будет настолько безумным, чтобы использовать двоичные файлы ... о, gconf ... не бери в голову.
источник
pkexec
можно запустить графический интерфейс без настройки: askubuntu.com/a/332847/89385Несколько вещей, как
pkexec
отличаетсяsudo
и его интерфейсы:pkexec
без явной настройки для этого.pkexec
: значок, текст для отображения, запоминать пароль или нет, разрешать ли ему графический запуск и многое другое.sudo
вы должны быть указаны вsudoers
файле как администратор .gksudo
блокирует клавиатуру, мышь и фокус при запросе пароля,pkexec
нет. В обоих случаях нажатия клавиш можно прослушивать, хотя .pkexec
вами работа в чуть более санированной среде.Попробуйте например:
источник
root
сpkexec
. Настраивается ли конфигурация, которую пользователи могут использоватьpkexec
вообще (даже если они знают пароль другого пользователя, которому разрешено это делать)?su
настраивается таким образом. Когда я пытаюсь обратитьсяsu
к другому неroot
пользователю, какguest
в системе Oneiric, он говорит мне, что мне не разрешено это делать. (Напротив, когда я пытаюсь использоватьpkexec
какguest
на Oneiric или Precise, я получаю то, что похоже на ошибку утверждения, о которой я могу вскоре сообщить как об ошибке, поскольку я не должен этого получать, даже если это не разрешено.)sudo
и его внешние интерфейсы также можно настроить, как описано в пункте 2. Вы можете запустить программу с отображенным текстомgksu
илиgksudo
отобразить его , прекратить вводить пароли некоторых пользователей, отредактировав/etc/sudoers
(с помощьюvisudo
), и изменить продолжительность их запоминания в смысле изменения способа Время ожидания sudo истекает (хотя я не уверен, как это сделать в Ubuntu, который настроен таким образом, чтобы вопросы о том,sudo
нужен ли пароль, и сколько времени, пока он не понадобится снова, зависят от терминала. ).pkexec
можно запустить графический интерфейс без настройки: askubuntu.com/a/332847/89385