-
A maneira mais simples é iniciar seu aplicativo com
sudo application name
ou -
Citações de
man pkexec
Para especificar que tipo de autorização é necessário para executar o programa / usr / bin / pk-example-frobnicate como outro usuário, simplesmente escreva um arquivo de definição de ação como este
<?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>
<vendor>Examples for the PolicyKit Project</vendor>
<vendor_url>http://hal.freedesktop.org/docs/PolicyKit/</vendor_url>
<action id="org.freedesktop.policykit.example.pkexec.run-frobnicate">
<description>Run the PolicyKit example program Frobnicate</description>
<description xml:lang="da">Kør PolicyKit eksemplet Frobnicate</description>
<message>Authentication is required to run the PolicyKit example program Frobnicate (user=$(user), program=$(program), command_
line=$(command_line))</message>
<message xml:lang="da">Autorisering er påkrævet for at afvikle PolicyKit eksemplet Frobnicate (user=$(user), program=$(program)
, command_line=$(command_line))</message>
<icon_name>audio-x-generic</icon_name>
<defaults>
<allow_any>no</allow_any>
<allow_inactive>no</allow_inactive>
<allow_active>auth_self_keep</allow_active>
</defaults>
<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/pk-example-frobnicate</annotate>
</action>
</policyconfig>
e solte-o no diretório /usr/share/polkit-1/actions
sob um nome adequado (por exemplo, correspondendo ao namespace da ação). Observe que, além de especificar o programa, a mensagem de autenticação, a descrição, o ícone e os padrões podem ser especificados. Observe que as ocorrências das strings $ (usuário), $ (programa) e $ (linha_de_comando) na mensagem serão substituídas, respectivamente, pelo usuário (no formulário "Nome real (nome de usuário)" ou apenas "nome de usuário" se não houver nome real do nome de usuário), o binário a ser executado (um
caminho totalmente qualificado, por ex. "/ usr / bin / pk-example-frobnicate") e a linha de comando, e. "pk-exemplo-frobnicate foo bar". Para
Por exemplo, para a ação definida acima, o seguinte diálogo de autenticação será mostrado:
[IMAGE][2]
+----------------------------------------------------------+
| Authenticate [X] |
+----------------------------------------------------------+
| |
| [Icon] Authentication is required to run the PolicyKit |
| example program Frobnicate |
| |
| An application is attempting to perform an |
| action that requires privileges. Authentication |
| is required to perform this action. |
| |
| Password: [__________________________________] |
| |
| [V] Details: |
| Command: /usr/bin/pk-example-frobnicate |
| Run As: Super User (root) |
| Action: org.fd.pk.example.pkexec.run-frobnicate |
| Vendor: Examples for the PolicyKit Project |
| |
| [Cancel] [Authenticate] |
+----------------------------------------------------------+
Se o usuário estiver usando a localidade da_DK, a caixa de diálogo será parecida com esta:
[IMAGE][3]
+----------------------------------------------------------+
| Autorisering [X] |
+----------------------------------------------------------+
| |
| [Icon] Autorisering er påkrævet for at afvikle |
| PolicyKit eksemplet Frobnicate |
| |
| Et program forsøger at udføre en handling der |
| kræver privilegier. Autorisering er påkrævet. |
| |
| Kodeord: [___________________________________] |
| |
| [V] Detaljer: |
| Bruger: Super User (root) |
| Program: /usr/bin/pk-example-frobnicate |
| Handling: org.fd.pk.example.pkexec.run-frobnicate |
| Vendor: Examples for the PolicyKit Project |
| |
| [Annullér] [Autorisering] |
+----------------------------------------------------------+
Note que o pkexec não faz nenhuma validação dos ARGUMENTOS passados para o PROGRAM. No caso normal (onde a autenticação do administrador é necessário cada vez que o pkexec é usado), isso não é um problema, pois se o usuário for um administrador, ele também pode executar o pkexec bash para obter root.
No entanto, se uma ação for usada para a qual o usuário pode reter a autorização (ou se o usuário estiver implicitamente autorizado), como pk-example-frobnicate acima, isso poderia ser um buraco de segurança. Portanto, como regra geral, programas para os quais o padrão exigido a autorização é alterada, nunca deve implicitamente confiar na entrada do usuário (por exemplo, como qualquer outro programa suid bem escrito).