#1 Le 22/06/2010, à 20:33
- shayologo
[bash] passer en superutilisateur sudo
Bonjour
Je souhaite faire un petit script script bash pour m'entrainer mais je bloque
Je voudrais faire un "sudo apt-get install $logiciel"
J'ai précédement récupérer le mot de passe du visiteur dans une variable $mdp
je voudrais pouvoir utiliser la commande sudo et lui donner le mot de passe par le script bash, non pas que le mot de passe soit demander en console par l'apelle de la comande sudo
Par la suite je voudrait faire un script graphique donc que l'utilisateur n'ai rien a écrire dans la console
Merci de vos réponses
Hors ligne
#2 Le 22/06/2010, à 20:42
- Link31
Re : [bash] passer en superutilisateur sudo
Ça ne fonctionne pas comme ça, et c'est une décision délibérée : un mot de passe doit être entré par l'utilisateur directement dans sudo lui-même, et pas stocké dans une quelconque variable non sécurisée. Ou pire, dans un fichier, soi-disant pour que l'utilisateur n'ait "pas à le taper"...
Si tu veux autoriser un utilisateur à utiliser une commande en particulier sans avoir à taper de mot de passe, tu peux éditer le fichier /etc/sudoers. Voir cette page pour un exemple avec la commande /sbin/shutdown.
Attention en modifiant le fichier /etc/sudoers ! Si tu n'es pas sûr de toi ou si tu n'as pas de moyen de réparer le système depuis un liveCD, alors évite de toucher à ce fichier.
Hors ligne
#3 Le 22/06/2010, à 20:44
- vincentp010
Re : [bash] passer en superutilisateur sudo
tu n'a qu'a utiliser gksudo pour l'avoir en graphique
Desktop: Archlinux OpenBox
Laptop: Dualboot Ubuntu-Studio 9.10 / Archlinux OpenBox
Server: EeeBox Ubuntu-Server 8.10 500Go
Hors ligne
#4 Le 23/06/2010, à 10:28
- shayologo
Re : [bash] passer en superutilisateur sudo
Pour la solution graphique, elle va afficher une fenêtre pour demander le mot de passe?
mais va t'il falloir que je fasse une version pour gnome et une pour KDE? (pour ubuntu et kubuntu)
ou existe t'il une méthode qui marche pour les deux?
Hors ligne
#5 Le 23/06/2010, à 10:30
- Phendrax
Re : [bash] passer en superutilisateur sudo
sudo -S apt-get install $logiciel <<EOF
$mdp
EOF
Dernière modification par Phendrax (Le 23/06/2010, à 10:55)
HP Pavillon dv6800 - Ubuntu 10.10 - GNOME 2.32.0
Hors ligne
#6 Le 23/06/2010, à 17:34
- shayologo
Re : [bash] passer en superutilisateur sudo
Merci Phendrax ça marche impecable
Hors ligne
#7 Le 23/06/2010, à 19:14
- nesthib
Re : [bash] passer en superutilisateur sudo
mais c'est une très mauvaise solution shayologo (le fait de stocker ton mot de passe ainsi pas l'astuce de Phendrax d'utiliser les here-documents).
si tu veux vraiment apprendre à faire des scripts, fais plutôt comme t'a conseillé Link31, cela fait partie de la base à connaître.
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#8 Le 23/06/2010, à 19:48
- shayologo
Re : [bash] passer en superutilisateur sudo
Quel sont les risque de stoquer un mot de passe dans une variable pour un script local?
Sinon je pense que je vais utiliser la méthode de vincentp010 car c'est exactement le type de fenetre que je veux
Hors ligne
#9 Le 23/06/2010, à 20:05
- Link31
Re : [bash] passer en superutilisateur sudo
Quel sont les risque de stoquer un mot de passe dans une variable pour un script local?
Concrètement, le mot de passe est bien moins protégé pour plusieurs raisons :
- ton script shell est plus facile à modifier que la commande sudo (pour laquelle il faut les droits root), et n'importe qui peut facilement y injecter du code malveillant
- un programme non SUID tel que ton script peut être tracé (débogué) sans que tu t'en rendes compte, alors que c'est impossible avec un programme SUID tel que sudo
- un script a tendance à utiliser de nombreux programmes et fichiers externes, et il se peut très bien qu'un de ces programmes ou fichiers présente une faille de sécurité et que le mot de passe se retrouve en clair là où tu ne t'y attendais pas
Et enfin, le plus important : avec ce genre de mauvaise pratique, tu vas presque à coup sûr finir par stocker toi-même le mot de passe en clair dans un fichier, avec pour objectif que le script s'exécute sans jamais demander de mot de passe.
Dans un tel cas, outre le fait évident que stocker le mot de passe en clair sur le disque dur est une très mauvaise idée, tu devrais aussi te demander pourquoi un utilisateur non-privilégié aurait forcément besoin d'exécuter ton script avec les droits root sans connaître le mot de passe. Autant que je sache, aucun programme ne fait ça sous GNU/Linux (mis à part sudo lui-même et son temps d'expiration de 15 minutes), et pourtant ça fonctionne très bien.
Hors ligne