Как настроить pkexec?

Чтение этих вопросов и ответов:

принесенный меня другой, который создаст проблемы для новых пользователей той команды:

  • Как настроить pkexec для легкого использования?

Например, при выполнении следующего:

(Открытие файла в терминале)

pkexec nano /etc/mysql/my.cnf  

(Открытие файла в GUI)

pkexec gedit /etc/mysql/my.cnf  

Последний получает следующую ошибку:

 pkexec must be setuid root

Теперь это принесло мне следующие вопросы:

  1. Как настроить pkexec постараться не получать это? Подобный, к как sudo/gksu ведите себя при выполнении того же самого (они только просят пароль).

  2. Если применимо, как сказать этому не просить пароль после первого раза, применив его к команде (или включая первую команду если настраивающийся)?

  3. Где еще сохранить конфигурационный файл если существующий?

  4. Есть ли приложение для GUI для конфигурирования pkexec использование (Набор политики)?

34
задан 13 April 2017 в 15:23

3 ответа

Как настроить pkexec , чтобы избежать ошибок при запуске приложений с графическим интерфейсом пользователя?

Я нашел два возможных способа:

  1. Как видите, используя следующее:

     pkexec env DISPLAY = $ DISPLAY XAUTHORITY = $ XAUTHORITY gedit
     

    не приведет к ошибке. И это нормально, потому что man pkexec очень ясен в этом вопросе:

      [...] pkexec не позволит вам запускать приложения X11
      как другой пользователь, так как среда $ DISPLAY и $ XAUTHORITY
      переменные не заданы. [...]
     

    В результате вы можете создать псевдоним ( постоянный ) (это самый простой способ):

     alias pkexec = 'pkexec env DISPLAY = $ DISPLAY XAUTHORITY = $ XAUTHORITY'
     
  2. Или (снова) как 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 в непустое значение:

     
     
     
    
      <действие id = "com.ubuntu.pkexec.gedit">
       Для запуска gedit требуется аутентификация 
       gedit 
      <по умолчанию>
       auth_admin 
       auth_admin 
       auth_admin 
      
       / usr / bin / gedit 
       true 
      
    
     
     

Как запретить ему запрашивать пароль после первого применения его к команде?

Для этих трех тегов настроек: allow_any , allow_inactive и ] allow_active из файла политики доступны следующие параметры:

  • нет : пользователь не авторизован для выполнения действия. Следовательно, нет необходимости в аутентификации.
  • yes : Пользователь авторизован для выполнения действия без какой-либо аутентификации.
  • auth_self : Требуется аутентификация, но пользователь не должен быть администратором.
  • auth_admin : требуется аутентификация в качестве пользователя с правами администратора.
  • auth_self_keep : То же, что и auth_self , но, как sudo , авторизация длится несколько минут.
  • auth_admin_keep : То же, что auth_admin , но, как и 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) ничего не существует как это. Если в будущем я что-то найду, не забуду обновить и этот ответ.

45
ответ дан 13 April 2017 в 15:23

В дополнение к ответу Раду: я бы использовал не псевдоним pkexec, а gksudo.

Почему? Тебе не нужно переписывать сценарий.

Я использую следующую конфигурацию:

  • откройте терминал
  • cd /usr/local/bin
  • sudo gedit gksudo (создайте новый файл под названием "gksudo"
  • напишите следующее содержимое:

    • pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY $@

    • (не забудьте про $@ в конце. Это для перенаправления всех параметров)

  • save и quit

  • make the file executable: chmod 755 gksudo
  • Теперь на вашей системе должна быть доступна полнофункциональная команда gksudo - постоянно.

В целях документации я напишу, что я пытался и не получилось:

  • alias pkexec='pkexec env [...]'
  • alias gksudo='pkexec [....].]'
    • не была постоянной и оставалась только в одном терминале
  • , добавляя псевдоним к ~/.bash_aliases
    • Работает, если вы впервые открываете терминал. Не работает, если вы дважды щелкните по скриптам
  • Создать ссылку на pkexec с параметрами ( ln -s pkexec [...]).
    • После быстрого гугления, кажется, что Линукс не поддерживает параметры в ссылках
0
ответ дан 13 April 2017 в 15:23

В отличие от @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

Список литературы:

1
ответ дан 2 April 2021 в 01:13

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

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