Чтение этих вопросов и ответов:
принесенный меня другой, который создаст проблемы для новых пользователей той команды:
pkexec
для легкого использования?Например, при выполнении следующего:
(Открытие файла в терминале)
pkexec nano /etc/mysql/my.cnf
(Открытие файла в GUI)
pkexec gedit /etc/mysql/my.cnf
Последний получает следующую ошибку:
pkexec must be setuid root
Теперь это принесло мне следующие вопросы:
Как настроить pkexec
постараться не получать это? Подобный, к как sudo
/gksu
ведите себя при выполнении того же самого (они только просят пароль).
Если применимо, как сказать этому не просить пароль после первого раза, применив его к команде (или включая первую команду если настраивающийся)?
Где еще сохранить конфигурационный файл если существующий?
Есть ли приложение для GUI для конфигурирования pkexec
использование (Набор политики)?
pkexec
, чтобы избежать ошибок при запуске приложений с графическим интерфейсом пользователя? Я нашел два возможных способа:
Как видите, используя следующее:
pkexec env DISPLAY = $ DISPLAY XAUTHORITY = $ XAUTHORITY gedit
не приведет к ошибке. И это нормально, потому что man pkexec
очень ясен в этом вопросе:
[...] pkexec не позволит вам запускать приложения X11 как другой пользователь, так как среда $ DISPLAY и $ XAUTHORITY переменные не заданы. [...]
В результате вы можете создать псевдоним ( постоянный ) (это самый простой способ):
alias pkexec = 'pkexec env DISPLAY = $ DISPLAY XAUTHORITY = $ XAUTHORITY'
Или (снова) как man pkexec
говорит:
[...] Эти две переменные будут сохранены, если org.freedesktop.policykit.exec.allow_gui аннотация для действия установлена до непустого значения; это не рекомендуется, и следует только используется для устаревших программ. [...]
вы можете создать новый файл политики в / usr / share / polkit-1 / actions
с именем com.ubuntu.pkexec.gedit.policy
со следующим xml-кодом внутри, где самое важное - установить org.freedesktop.policykit.exec.allow_gui
в непустое значение:
xml version = "1.0" encoding = "UTF-8"?>
<действие id = "com.ubuntu.pkexec.gedit">
Для запуска gedit требуется аутентификация
gedit
<по умолчанию>
auth_admin
auth_admin
auth_admin
/ usr / bin / gedit
true
Для этих трех тегов настроек: allow_any
, allow_inactive
и ] allow_active
из файла политики доступны следующие параметры:
sudo
, авторизация длится несколько минут. sudo
, авторизация длится несколько минут. Источник: Polkit - Структура - Действия
Итак, если вы используете опцию auth_admin_keep (или, если применимо, auth_self_keep ), 11114xec [ ] не будет запрашивать пароль снова в течение некоторого времени (по умолчанию это время установлено на 5 минут, как я проверял). Недостатком здесь является то, что эта вещь применима только для одной и той же команды / приложения и действительна для всех пользователей (если только это не будет отменено в более поздней конфигурации).
Файлы конфигурации или определения polkit можно разделить на два типа:
Действия определены в файлах XML .policy, расположенных в / usr / share / polkit-1 / actions
. К каждому действию прикреплен набор разрешений по умолчанию (например, вам нужно идентифицировать себя как администратора, чтобы использовать действие GParted). Значения по умолчанию могут быть отменены, но редактирование файлов действий НЕ является правильным способом. Имя этого файла политики должно иметь следующий формат:
com.ubuntu.pkexec. имя_приложения .policy
Правила авторизации определены в файлах .rules JavaScript. Они находятся в двух местах: пакеты сторонних разработчиков могут использовать /usr/share/polkit-1/rules.d
(хотя некоторые из них, если таковые имеются) и / etc / polkit-1 / rules. d
- для локальной конфигурации. Файлы .rules обозначают подмножество пользователей, относятся к одному (или нескольким) действиям, указанным в файлах действий, и определяют, с какими ограничениями эти действия могут выполняться этим / этими пользователями. Например, файл правил может отменять требование по умолчанию для всех пользователей аутентифицироваться как администратор при использовании GParted,определение того, что какому-то конкретному пользователю это не нужно. Или вообще не разрешено использовать GParted.
Источник: Polkit - Structure
pkexec
? Насколько я знаю, до сих пор (18.01.2014) ничего не существует как это. Если в будущем я что-то найду, не забуду обновить и этот ответ.
В дополнение к ответу Раду: я бы использовал не псевдоним pkexec, а gksudo.
Почему? Тебе не нужно переписывать сценарий.
Я использую следующую конфигурацию:
cd /usr/local/bin
sudo gedit gksudo
(создайте новый файл под названием "gksudo"напишите следующее содержимое:
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY $@
(не забудьте про $@
в конце. Это для перенаправления всех параметров)
save и quit
chmod 755 gksudo
В целях документации я напишу, что я пытался и не получилось:
~/.bash_aliases
ln -s pkexec [...]
).
В отличие от @radu RădeAnu ответа, мое объясняет, как создать команду PKEExec
и настроить его, чтобы работать GKSU
!
Итак, главная альтернатива для версии GUI Sudo
состоит в том, чтобы использовать команду PKExec
, но для того, чтобы вам необходимо экспортировать определенные переменные среды в момент выполнения, которые Можно выполнить, добавив следующую алиас в свой файл ~ / .bashrc
~ / .bashrc ~ / .bashrc ~ / .bashrc ~ / .bashrc ~ / .bashrc :
alias gksu='pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS'
Теперь, чтобы использовать его, вы можете запустить что-то вроде следующую команду:
# structure: gksu <cmd>
$ gksu /usr/bin/my_app
Список литературы: