J'ai créé un script bash qui utilise kdialog exclusivement pour interagir avec l'utilisateur. Il est lancé à partir d'un fichier ".desktop" afin que l'utilisateur ne voie jamais le terminal. Il ressemble à 100% à une application graphique (même s'il ne s'agit que d'un script bash). Il fonctionne uniquement dans KDE (Kubuntu 12.04).
Mon seul problème est de gérer la saisie de mot de passe de manière sécurisée et pratique. Je ne trouve pas de solution satisfaisante.
Le script a été conçu pour être exécuté en tant qu'utilisateur normal et pour demander le mot de passe lorsqu'une commande sudo est nécessaire pour la première fois. De cette façon, la plupart des commandes, celles qui ne nécessitent pas de droits sudo, sont exécutées en tant qu'utilisateur normal. Ce qui se passe (lorsque le script est exécuté à partir du terminal) est que l'utilisateur est invité à entrer son mot de passe une fois et le délai d'expiration sudo par défaut permet au script de se terminer, y compris toutes les commandes sudo supplémentaires, sans inviter à nouveau l'utilisateur. C'est ainsi que je veux que cela fonctionne également lorsqu'il est exécuté derrière l'interface graphique.
Le problème principal est que l'utilisation de kdesudo
pour lancer mon script, qui est la manière standard de l'interface graphique, signifie que le script entier est exécuté par l'utilisateur root. Ainsi, la propriété des fichiers est attribuée à l'utilisateur racine, je ne peux pas compter sur les ~/
chemins d'accès et bien d'autres choses ne sont pas idéales. L'exécution de l'intégralité du script en tant qu'utilisateur root n'est qu'une solution très insatisfaisante et je pense que c'est une mauvaise pratique.
J'apprécie toutes les idées pour permettre à un utilisateur d'entrer le mot de passe sudo une seule fois via l'interface graphique sans exécuter le script entier en tant que root. Merci.
sudo -s
(minuscules
) et nonsudo -S
(majuscules
).Ceci est basé sur l'excellente réponse d'Eric Carvalho. Je le poste pour expliquer le problème que j'ai rencontré. Plus précisément, lorsque vous utilisez ceci, le délai d'attente sudo habituel (par exemple, 15 minutes) est perdu. Mon script, qui contient plus de 50 commandes sudo, demande maintenant le mot de passe de l'utilisateur plus de 50 fois!
Voici un exemple de travail complet de toutes les parties de la solution. Il se compose d'un script bash, d'un script "myaskpass" comme Eric l'a suggéré, et d'un fichier ".desktop". Le tout devrait être 100% GUI (pas d'interaction du terminal du tout), donc le fichier .desktop est essentiel (afaik).
Et un script de test lui-même. Celui-ci vous demandera votre mot de passe deux fois lors de l'utilisation de cette solution. (Normalement, il ne demanderait qu'une seule fois en raison du délai d'attente sudo par défaut.)
la source
sudo -A
nouveau mot de passe. Je vais essayer de comprendre cela.Le script suivant fonctionne via la ligne de commande, le fichier de bureau ou double-cliquez, ne demande le mot de passe qu'une seule fois, et le modèle de commande
sudo -Sp '' <your command here> <<<${sudo_password}
peut être utilisé plusieurs fois n'importe où dans le fichier:la source