\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{sam. déc. 24 13:02:20 CET 2016}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={pkexec},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Exécuter une commande sous un autre utilisateur},
CreationDate={D:20161224130220},
ModDate={D:20161224130220},
Keywords={authentification;sécurité;polkit;policyKit}
}}
\begin{document}
 
\begin{center}
{\Huge pkexec }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Exécuter une commande sous un autre utilisateur}
 
\vspace{10mm}
 
\hspace{1mm}  pkexec permet à un utilisateur autorisé d'exécuter le programmes spécifié sous un autre utilisateur. Si l'utilisateur n'est pas spécifié, utilise root.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Valeur de retour }
 
\
 
\hspace{1mm}  une fois terminé, la valeur de retour est la valeur de retour du programme. Si le processus appelant n'est pas autorisé ou qu'une autorisation ne peut pas être obtenue ou qu'une erreur s'est produite, pkexec quitte avec une valeur de retour de 127. Si l'autorisation ne peut être obtenue, pkexec quitte avec la valeur 126.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge l'agent d'authentification }
 
\
 
\hspace{1mm}  pkexec, comme tout autre application PolicyKit, utilise l'agent d'authentification enregistré pour le procéssus appelant. Cependant, si aucun agent d'authentification n'est disponible, pkexec enregistre son propre agent d'authentification. Ce comportement peut être désactivé avec --disable-internal-agent.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Notes de sécurité }
 
\
 
\hspace{1mm}  Exécuter un programme sous un autre utilisateur est une opération privilégiée. Par défaut l'autorisation requise nécéssite une authentification administrative. De plus, le dialogue d'authentification présenté à l'utilisateur affiche le chemin complet du programme à exécuter dont l'utilisateur est au courant de se qu'il va se passer.
\vspace{5mm} \\
 
 
{\ttfamily
+----------------------------------------------------------+\\ |\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_Authenticate\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\texttt{[}X\texttt{]}\_|\\ +----------------------------------------------------------+\\ |\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_|\\ |\_\_\texttt{[}Icon\texttt{]}\_\_Authentication\_is\_needed\_to\_run\_`/bin/bash'\_\_\_\_\_|\\ |\_\_\_\_\_\_\_\_\_\_as\_the\_super\_user\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_|\\ |\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_|\\ |\_\_\_\_\_\_\_\_\_\_An\_application\_is\_attempting\_to\_perform\_an\_\_\_\_\_\_|\\ |\_\_\_\_\_\_\_\_\_\_action\_that\_requires\_privileges.\_Authentication\_|\\ |\_\_\_\_\_\_\_\_\_\_as\_the\_super\_user\_is\_required\_to\_perform\_this\_\_\_|\\ |\_\_\_\_\_\_\_\_\_\_action.\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_|\\ |\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_|\\ |\_\_\_\_\_\_\_\_\_\_Password\_for\_root:\_\texttt{[}\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\texttt{]}\_\_|\\ |\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_|\\ |\_\texttt{[}V\texttt{]}\_Details:\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_|\\ |\_\_Command:\_/bin/bash\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_|\\ |\_\_Run\_As:\_\_Super\_User\_(root)\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_|\\ |\_\_Action:\_\_org.freedesktop.policykit.exec\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_|\\ |\_\_Vendor:\_\_The\_PolicyKit\_Project\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_|\\ |\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_|\\ |\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\texttt{[}Cancel\texttt{]}\_\texttt{[}Authenticate\texttt{]}\_|\\ +----------------------------------------------------------+\\
}
\vspace{8mm}
 
\hspace{1mm}  L'environnement dans lequel le programme tourne, est définis à un environnement minimal et sûr pour éviter d'injecter du code via LD\_LIBRARY\_PATH ou des mécanismes similaires. De plus, la variable d'environnement PKEXEC\_UID est définie avec l'UID invoquant pkexec. En résultat, pkexec n'autorise pas de lancer des application X11 sous un autre utilisateur vu que \$DISPLAY et \$XAUTHORITY ne sont pas définis. Il y a 2 variables retenus si org.freedesktop.policykit.exec.allow\_gui dans une action est définis à une valeur non-nul. C'est découragé, et utilisé uniquement pour compatibilité.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Autorisations requises }
 
\
 
\hspace{1mm}  Par défaut, org.freedesktop.policykit.exec est requis sauf si un fichier de définition d'action est présent pour le programme en question. pour exiger une autre autorisation, cela peut être spécifié en utilisant l'annotation org.freedesktop.policykit.exec.path dans une action.
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Exemple }
 
\
 
\hspace{1mm} Pour spécifier un type d'autorisation nécessaire pour exécuter le programme /usr/bin/pk-example-frobnicate sous un autre utilisateur, écrire simplement une définition d'action:
 
{\ttfamily
<?xml version="1.0" encoding="UTF-8"?>\\ <!DOCTYPE policyconfig PUBLIC\\ \hspace{2mm}"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"\\ \hspace{2mm}"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">\\ <policyconfig>\\ \hspace{2mm}\\ \hspace{2mm}<vendor>Examples for the PolicyKit Project</vendor>\\ \hspace{2mm}<vendor\_url>http://hal.freedesktop.org/docs/PolicyKit/</vendor\_url>\\ \hspace{2mm}<action id="org.freedesktop.policykit.example.pkexec.run-frobnicate">\\ \hspace{2mm}\hspace{2mm}<description>Run the PolicyKit example program Frobnicate</description>\\ \hspace{2mm}\hspace{2mm}<description xml:lang="da">Kør PolicyKit eksemplet Frobnicate</description>\\ \hspace{2mm}\hspace{2mm}<message>Authentication is required to run the PolicyKit example program Frobnicate (user=\$(user), program=\$(program), command\_line=\$(command\_line))</message>\\ \hspace{2mm}\hspace{2mm}<message xml:lang="da">Autorisering er påkrævet for at afvikle PolicyKit eksemplet Frobnicate (user=\$(user), program=\$(program), command\_line=\$(command\_line))</message>\\ \hspace{2mm}\hspace{2mm}<icon\_name>audio-x-generic</icon\_name>\\ \hspace{2mm}\hspace{2mm}<defaults>\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}<allow\_any>no</allow\_any>\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}<allow\_inactive>no</allow\_inactive>\\ \hspace{2mm}\hspace{2mm}\hspace{2mm}<allow\_active>auth\_self\_keep</allow\_active>\\ \hspace{2mm}\hspace{2mm}</defaults>\\ \hspace{2mm}\hspace{2mm}<annotate key="org.freedesktop.policykit.exec.path">/usr/bin/pk-example-frobnicate</annotate>\\ \hspace{2mm}</action>\\ \hspace{2mm}\\ </policyconfig>\\
}
\vspace{8mm}
 
\hspace{1mm}  placer ce fichier dans /usr/share/polkit-1/actions avec un nom qui ait du sens, par exemple l'espace de nom de l'action. Noter que pkexec ne valide pas les arguments passés au programme. Dans un cas normal (où l'authentification administration est requise à chaque fois que pkexec est utilisé), ce n'est pas un problème vu que si l'administrateur est un administrateur il peut simplement lancer pkexec bash pour devenir root.
\vspace{5mm} \\
 
 
\hspace{1mm}  Cependant, si une action est utilisée pour laquelle l'utilisateur peut retenir l'authorisation ( ou si l'utilisateur est implicitement autorisé), tel qu'avec pk-example-frobnicate ci-dessus, cela peut être un problème de sécurité. Donc, les programmes pour lesquels l'autorisation requise par défaut est changé, ne devraient jamais implicitement faire confiance à l'entrée utilisateur.
\vspace{5mm} \\
 
\end{flushleft}
\end{document}
