Não é permitido executar pkexec no plano de fundo por fork e exec e, em seguida, finalizar o pai. O processo se torna órfão e pertence a init (ppid == 1). Consulte o link .
Você está dando o controle de um aplicativo para outro usuário (geralmente root). A maneira padrão é executar o aplicativo com pkexec como root em um script de shell. Desta forma, o pai é um shell e não init .
g. GParted ( /usr/bin/gparted-pkexec ) e GameConqueror ( /usr/bin/gameconqueror ) fazem isso como mostrado abaixo:
-
Crie um script de shell como
/usr/local/bin/foo.sh:#!/bin/sh pkexec "/usr/sbin/foo" "$@" -
Conceder permissão executável ao script acima:
chmod +x /usr/local/bin/foo.sh -
Se você estiver usando o arquivo
.desktop, altere o valorExeccomo:Exec=/usr/local/bin/foo.sh -
Certifique-se de que seu arquivo de políticas em
/usr/share/polkit-1/actions/tenha a seguinte entrada para permitir a GUI:<annotate key="org.freedesktop.policykit.exec.allow_gui">TRUE</annotate>
É isso!