Estou usando o Trisquel GNU / Linux-Libre, que vem com o Gnome3 Flashback Desktop Environment.
Eu sei que posso executar aplicativos GUI como root por sudo
& gksudo
mas quero saber que Como faço para executar aplicativos GUI como root com a ajuda de pkexec
?
Quando tento executar gedit
(ou qualquer outro aplicativo como nautilus
:) até pkexec gedit
então, ele solicita a senha para autenticação: -
Após digitar a senha, ela sai com erro: -
$ pkexec gedit
error: XDG_RUNTIME_DIR not set in the environment.
(gedit:6135): Gtk-WARNING **: cannot open display:
Então, parece que algo está errado com o ambiente de exibição.
Eu também tentei com, DISPLAY=:0 pkexec gedit
mas não funciona.
As informações a seguir estão disponíveis em man pkexec
: -
O ambiente em que o PROGRAM o executará será definido como um ambiente conhecido e seguro mínimo para evitar a injeção de código por meio de LD_LIBRARY_PATH ou de mecanismos semelhantes. Além disso, a variável de ambiente PKEXEC_UID é configurada para o ID do usuário do processo que chama o pkexec. Como resultado, o pkexec não permitirá que você execute aplicativos X11 como outro usuário, pois as variáveis de ambiente $ DISPLAY e $ XAUTHORITY não estão definidas. Essas duas variáveis serão mantidas se a anotação org.freedesktop.policykit.exec.allow_gui em uma ação for configurada para um valor não vazio; isso é desencorajado, porém, e deve ser usado apenas para programas herdados.
Agora não sei o que fazer para conseguir isso.
Assim, ajude-me a descobrir como executar aplicativos GUI como root por meio de pkexec
. Ou isso é possível ou não?
Entre, inspirado pelo gparted-pkexec
comando que funciona bem. Como gparted
usar pkexec
?
fonte
Respostas:
Isso pode ser feito adicionando ações personalizadas ao kit de políticas. Se você deseja executar o gedit como root
pkexec
, deve criar um novo arquivo,/usr/share/polkit-1/actions/org.freedesktop.policykit.gedit.policy
por exemplo:Finalmente,
pkexec gedit
deve funcionar como esperado.Visite a página de manual ou o Manual de Referência, que explica com EXEMPLO, como: -
fonte
man pkexec
)!