Como configurar o pkexec
para evitar erros ao executar aplicações GUI?
Eu encontrei duas maneiras possíveis:
-
Como você pode ver, use o seguinte:
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY gedit
não receberá nenhum erro. E isso é normal porque
man pkexec
é muito claro nessa questão:[...] pkexec will not allow you to run X11 applications as another user since the $DISPLAY and $XAUTHORITY environment variables are not set.[...]
Como resultado, você pode criar um alias ( permanente ) a maneira mais simples):
alias pkexec='pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY'
-
Ou, (novamente) como
man pkexec
diz:[...] These two variables will be retained if the org.freedesktop.policykit.exec.allow_gui annotation on an action is set to a nonempty value; this is discouraged, though, and should only be used for legacy programs.[...]
você pode criar um novo arquivo de política em
/usr/share/polkit-1/actions
chamadocom.ubuntu.pkexec.gedit.policy
com o seguinte código xml, onde o mais importante é definirorg.freedesktop.policykit.exec.allow_gui
como um valor não vazio:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE policyconfig PUBLIC "-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN" "http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd"> <policyconfig> <action id="com.ubuntu.pkexec.gedit"> <message gettext-domain="gparted">Authentication is required to run gedit</message> <icon_name>gedit</icon_name> <defaults> <allow_any>auth_admin</allow_any> <allow_inactive>auth_admin</allow_inactive> <allow_active>auth_admin</allow_active> </defaults> <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/gedit</annotate> <annotate key="org.freedesktop.policykit.exec.allow_gui">true</annotate> </action> </policyconfig>
Como dizê-lo para não pedir uma senha após a primeira vez que aplicá-lo a um comando?
Para essas três tags de configuração: allow_any
, allow_inactive
e allow_active
do arquivo de políticas, as seguintes opções estão disponíveis:
- no : o usuário não está autorizado a executar a ação. Portanto, não há necessidade de autenticação.
- yes : o usuário está autorizado a executar a ação sem qualquer autenticação.
- auth_self : A autenticação é necessária, mas o usuário não precisa ser um usuário administrativo.
- auth_admin : a autenticação como um usuário administrativo é necessária.
-
auth_self_keep : o mesmo que auth_self , mas, como
sudo
, a autorização dura alguns minutos. -
auth_admin_keep : o mesmo que auth_admin , mas, como
sudo
, a autorização dura alguns minutos.
Fonte: Polkit - Estrutura - Ações
Portanto, se você usar a opção auth_admin_keep (ou, conforme aplicável, auth_self_keep ), pkexec
não solicitará uma senha novamente por algum tempo (por padrão, o tempo está definido para 5 minutos, como eu verifiquei). A desvantagem aqui é que isso é aplicável apenas para um - o mesmo - comando / aplicativo e válido para todos os usuários (a menos que seja anulado na configuração posterior).
Onde salvar o arquivo de configuração, se ainda não existir?
Arquivos de configuração ou definições de polkit podem ser divididos em dois tipos:
-
As ações são definidas em arquivos XML .policy localizados em
/usr/share/polkit-1/actions
. Cada ação tem um conjunto de permissões padrão associadas a ela (por exemplo, você precisa se identificar como administrador para usar a ação do GParted). Os padrões podem ser anulados, mas a edição dos arquivos de ações NÃO é o caminho correto. O nome desse arquivo de políticas deve ter este formato:com.ubuntu.pkexec.app_name.policy
-
Regras de autorização são definidas em arquivos .rules de JavaScript. Eles são encontrados em dois locais: pacotes de terceiros podem usar
/usr/share/polkit-1/rules.d
(embora poucos façam algum) e/etc/polkit-1/rules.d
é para configuração local. Os arquivos .rules designam um subconjunto de usuários, referem-se a uma (ou mais) das ações especificadas nos arquivos de ações e determinam com quais restrições essas ações podem ser tomadas por esse (s) usuário (s). Por exemplo, um arquivo de regras pode anular o requisito padrão para que todos os usuários se autentiquem como administradores ao usar o GParted, determinando que alguns usuários específicos não precisem. Ou não é permitido usar o GParted.
Fonte: Polkit - Estrutura
Existe um aplicativo GUI para configurar pkexec
de uso?
Pelo que sei, até agora (18.01.2014) não existe algo assim. Se no futuro eu encontrar algo, não vou esquecer de atualizar essa resposta também.