Como configurar pkexec
para evitar erros ao executar aplicativos GUI?
Eu encontrei duas maneiras possíveis:
Como você pode ver, usando o seguinte:
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY gedit
não receberá nenhum erro. E isso é normal, porque man pkexec
é muito claro neste assunto:
[...] 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 ) (esta é 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 /usr/share/polkit-1/actions
nomeado com.ubuntu.pkexec.gedit.policy
com o seguinte código xml dentro do qual o mais importante é definir org.freedesktop.policykit.exec.allow_gui
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 dizer a ele para não solicitar uma senha após a primeira vez que a aplicar a um comando?
Para estes três tags Ambiente: allow_any
, allow_inactive
e allow_active
a partir do arquivo de política, as seguintes opções estão disponíveis:
- não : o usuário não está autorizado a executar a ação. Portanto, não há necessidade de autenticação.
- sim : o usuário está autorizado a executar a ação sem nenhuma autenticação.
- auth_self : a autenticação é necessária, mas o usuário não precisa ser um usuário administrativo.
- auth_admin : é necessária autenticação como usuário administrativo.
- auth_self_keep : O mesmo que auth_self , mas
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, esse tempo é definido para 5 minutos, conforme eu verifiquei). A desvantagem aqui é que isso só é aplicável a um comando / aplicativo igual - 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 nos arquivos .policy XML localizados em /usr/share/polkit-1/actions
. Cada ação possui um conjunto de permissões padrão anexadas (por exemplo, você precisa se identificar como administrador para usar a ação GParted). Os padrões podem ser anulados, mas editar os arquivos de ações NÃO é a maneira correta. O nome desse arquivo de políticas deve ter este formato:
com.ubuntu.pkexec.app_name.policy
As regras de autorização são definidas nos arquivos .rules do JavaScript. Eles são encontrados em dois locais: pacotes de terceiros podem ser usados /usr/share/polkit-1/rules.d
(embora poucos, se houver) e /etc/polkit-1/rules.d
são 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 executadas por esse / esses usuários. Como exemplo, um arquivo de regras pode anular o requisito padrão para todos os usuários se autenticarem como administrador ao usar o GParted, determinando que um usuário específico não precisa. Ou não tem permissão para usar o GParted.
Fonte: Polkit - Estrutura
Existe um aplicativo GUI para configurar o pkexec
uso?
Pelo que sei, até agora (18.01.2014) não existe algo parecido com isto. Se no futuro eu encontrar algo, não esquecerei de atualizar também esta resposta.