Lire ces questions et réponses:
m'a apporté un autre qui va créer des problèmes pour les nouveaux utilisateurs de cette commande:
pkexec
pour une utilisation facile? Par exemple, lorsque vous procédez comme suit:
(Ouvrir un fichier dans le terminal)
pkexec nano /etc/mysql/my.cnf
(Ouverture d'un fichier dans l'interface graphique)
pkexec gedit /etc/mysql/my.cnf
Le dernier obtient l'erreur suivante:
pkexec must be setuid root
Maintenant, cela m'a amené les questions suivantes:
Comment configurer pkexec
pour éviter cela? Semblable à la façon dont Sudo
name __/gksu
se comporte quand on fait la même chose (ils ne demandent que le mot de passe).
Le cas échéant, comment lui dire de ne pas demander de mot de passe après la première application de celui-ci à une commande (ou en incluant la première commande si configurable)?
Où enregistrer le fichier de configuration s'il n'existe pas encore?
Existe-t-il une application graphique pour configurer l'utilisation de pkexec
(Policy Kit)?
pkexec
pour éviter les erreurs lors de l'exécution d'applications à interface graphique?J'ai trouvé deux manières possibles:
Comme vous pouvez le voir, utilisez les éléments suivants:
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY gedit
ne vous obtiendrez aucune erreur. Et ceci est normal car man pkexec
est très clair à ce sujet:
[...] pkexec will not allow you to run X11 applications as another user since the $DISPLAY and $XAUTHORITY environment variables are not set.[...]
En conséquence, vous pouvez créer un alias ( permanent ) (c'est la manière la plus simple):
alias pkexec='pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY'
Ou (encore) comme man pkexec
dit:
[...] 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.[...]
vous pouvez créer un nouveau fichier de règles dans /usr/share/polkit-1/actions
nommé com.ubuntu.pkexec.gedit.policy
avec le code xml suivant à l'intérieur duquel la chose la plus importante est de définir org.freedesktop.policykit.exec.allow_gui
avec une valeur non vide:
<?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>
Pour ces trois balises de paramètres: allow_any
, allow_inactive
et allow_active
à partir du fichier de stratégie, les options suivantes sont disponibles:
Sudo
, l'autorisation est valide. quelques minutes.Sudo
, l'autorisation est valide. quelques minutes.Source: Polkit - Structure - Actions
Donc, si vous utilisez l'option auth_admin_keep (ou, selon le cas, auth_self_keep ), pkexec
ne vous demandera plus de mot de passe pendant un certain temps (par défaut, cette heure est définie sur 5 minutes, comme je l’ai coché). L'inconvénient ici est que cette chose n'est applicable que pour un seul - le même - commande/application et valable pour tous les utilisateurs (sauf si elle est annulée lors d'une configuration ultérieure).
Les fichiers de configuration ou les définitions de polkit peuvent être divisés en deux types:
Les actions sont définies dans des fichiers XML .policy situés dans /usr/share/polkit-1/actions
. Chaque action est associée à un ensemble d'autorisations par défaut (par exemple, vous devez vous identifier en tant qu'administrateur pour pouvoir utiliser l'action GParted). Les valeurs par défaut peuvent être remplacées, mais la modification des fichiers d’actions n’EST PAS la bonne manière. Le nom de ce fichier de stratégie doit avoir le format suivant:
com.ubuntu.pkexec.app_name.policy
Les règles d'autorisation sont définies dans des fichiers JavaScript .rules. Ils se trouvent à deux endroits: les packages tiers peuvent utiliser /usr/share/polkit-1/rules.d
(bien que peu d’entre eux le fassent) et /etc/polkit-1/rules.d
sert à la configuration locale. Les fichiers .rules désignent un sous-ensemble d'utilisateurs, font référence à une (ou plusieurs) des actions spécifiées dans les fichiers d'actions et déterminent avec quelles restrictions ces actions peuvent être entreprises par cet utilisateur ou ces utilisateurs. Par exemple, un fichier de règles peut remplacer l'exigence par défaut d'authentification de tous les utilisateurs en tant qu'administrateur lors de l'utilisation de GParted, en déterminant qu'un utilisateur spécifique n'en a pas besoin. Ou n'est pas autorisé à utiliser GParted du tout.
Source: Polkit - Structure
pkexec
?De ce que je sais, jusqu'à présent (18.01.2014) n'existait pas, quelque chose comme ça. Si, à l'avenir, je trouve quelque chose, je n'oublierai pas de mettre à jour cette réponse également.
En plus de la réponse de Radu: je n'utiliserais pas l'alias pkexec, mais gksudo.
Pourquoi? Vous n'avez pas besoin de réécrire votre script.
J'utilise la configuration suivante:
cd /usr/local/bin
Sudo gedit gksudo
(créer un nouveau fichier appelé "gksudo"écrire le contenu suivant:
pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY $@
(n'oubliez pas le $@
à la fin. C'est pour rediriger tous les paramètres)
sauvegarder et quitter
chmod 755 gksudo
Pour des raisons de documentation, j'écrirai ce que j'ai essayé et qui n'a pas fonctionné:
~/.bash_aliases
ln -s pkexec [...]
)