Il existe divers outils pour différents ordinateurs de bureau qui ont pour objectif d’exécuter une application graphique en tant qu’utilisateur root. gksudo
, kdesudo
, empower
, etc ...
Mais que se passe-t-il si j'écris un script qui pourrait être utilisé sur n'importe quel poste de travail Linux? Y at-il un xdg-Sudo
de quelque sorte ..? Un standard pour obtenir un accès Sudo dans un environnement de bureau?
Suivant la suggestion de @Tachyons, j’ai fait beaucoup de recherches sur pkexec
et c’est génial !
Donc oui, il répond à toutes les exigences, et je suppose que c'est la chose la plus proche qu'un "universal gksudo" peut être.
Cela dit, pkexec
est l'interface de ligne de commande de PolicyKit. Il existe 2 modes de fonctionnement de base:
Exécutez-le simplement comme vous le feriez avec Sudo
et vous obtiendrez une invite graphique agréable:
$ pkexec rm -rf /
/usr/share/polkit-1/rules.d
et vous autoriserez de nombreuses options de personnalisation et de sécurité, par exemple un accès root pour certaines actions uniquement, aucun mot de passe nécessaire pour les autres, accès limité à certains chemins, etc. Vous pouvez affiner vos paramètres avec une granularité incroyable.Une manière plus générale serait d'écrire un "programme d'aide". Un tel programme demanderait à l'utilisateur un mot de passe; si vous êtes sûr que, par exemple, Zenity est installé, vous pouvez l'utiliser, sinon vous devrez écrire le programme d'assistance dans Python ou autre chose pouvant interagir avec l'interface graphique.
Lisez le manuel Sudo
pour les options -A
("askpass") et -S
(stdin).
Et rappelez-vous que lorsque vous exécutez Sudo
à partir de votre script, vous avez besoin de l'option -H
(home) pour simuler gksudo
.
Cette méthode fonctionne bien, mais vous devez tester le programme d'aide à fond pour vous assurer qu'il est exempt de bogues.
Non, il n'y a pas de moyen standard d'obtenir les privilèges root (ou ceux d'un autre utilisateur).
Si vous voulez être compatible avec autant de systèmes que possible, ne supposez rien, mais dites à l'utilisateur qu'il doit exécuter votre script en tant qu'utilisateur spécifique. Ensuite, il appartient à l'utilisateur/admin de configurer le système pour que votre script soit exécuté correctement.
Nice serait bien de suggérer comment utiliser les systèmes d’authentification les plus courants, tels que su, Sudo et ConsoleKit.