Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 smile

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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde 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 wink

Hors ligne

#9 Le 23/06/2010, à 20:05

Link31

Re : [bash] passer en superutilisateur sudo

shayologo a écrit :

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