#1 Le 09/08/2006, à 12:18
- mike59
[Résolu] Besoin d'aide pour un script tout bête
Salut à tous !
Je voudrais faire un petit script bash qui permette de relancer le réseau en cas de souci.
Le problème est que je dois donc utiliser la commande suivante :
sudo /etc/init.d/networking restart
Malheureusement, si je crée un lanceur sur le bureau d'ubuntu le terminal me demande mon pass.
Je pense qu'il y a possibilité dans le script d'indiquer quelque chose qui permettre d'injecter le mot de passe à la demande d'ubuntu.
Pour le moment mon script ressemble à :
#! /bin/sh
sudo /etc/init.d/networking restart
Merci d'avance pour votre aide !
Dernière modification par mike59 (Le 10/08/2006, à 20:30)
Hors ligne
#2 Le 09/08/2006, à 13:06
- Math
Re : [Résolu] Besoin d'aide pour un script tout bête
je connais un début de solution, ca enlevera pas la demande de mot de passe.. mais ca marche surement :
#! /bin/sh
gksudo /etc/init.d/networking restart
Hors ligne
#3 Le 09/08/2006, à 13:31
- kaworu
Re : [Résolu] Besoin d'aide pour un script tout bête
Salut !
pour te permettre de relancer ça sans mot de passe, le plus malin est de dire a sudo que pour ce fichier, ton user peut le faire sans password. je te déconseille VIVEMENT de mettre ton mot de passe en clair dans un script !
donc :
man visudo
puis ajouter :
%users ALL=(ALL) NOPASSWD:/etc/init.d/networking restart
Enjoy !
EDIT :
A NE PAS FAIRE
echo "MON_PASSWORD" | sudo -S /etc/init.d/networking restart
Dernière modification par kaworu (Le 10/08/2006, à 12:33)
"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."
Hors ligne
#4 Le 09/08/2006, à 18:30
- mike59
Re : [Résolu] Besoin d'aide pour un script tout bête
Salut !
pour te permettre de relancer ça sans mot de passe, le plus malin est de dire a sudo que pour ce fichier, ton user peut le faire sans password. je te déconseille VIVEMENT de ne pas mettre ton mot de passe dans un script !
donc :man visudo
puis ajouter :
%users ALL=(ALL) NOPASSWD:/etc/init.d/networking restart
Enjoy !
EDIT :
A NE PAS FAIREecho "MON_PASSWORD" | sudo -S /etc/init.d/networking restart
Merci pour ta réponse et tes conseils.
Néanmoins, j'ai essayé d'ajouter la ligne
%users ALL=(ALL) NOPASSWD:/etc/init.d/networking restart
en faisant : sudo visudo et ça ne fonctionne pas...
Ile me demande toujours mon pass..
Merci !
Hors ligne
#5 Le 10/08/2006, à 07:54
- kaworu
Re : [Résolu] Besoin d'aide pour un script tout bête
ah ?
que donne la commande
groups
Si tu n'est pas dans le groupe users (ce qui est fort improbable!), c'est sûr que ça ne marchera pas. essaye en remplaçant %users par %wheel.
Dernière modification par kaworu (Le 10/08/2006, à 07:58)
"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."
Hors ligne
#6 Le 10/08/2006, à 10:22
- mike59
Re : [Résolu] Besoin d'aide pour un script tout bête
Salut !
La commande groups me donne cela :
michael@laptop:~$ groups
michael adm dialout cdrom floppy audio dip video plugdev lpadmin scanner admin
J'ai essayé de remplacer %users par %wheel et c'est toujours pareil, ça ne fonctionne pas...
Merci encore !
Hors ligne
#7 Le 10/08/2006, à 11:03
- cep
Re : [Résolu] Besoin d'aide pour un script tout bête
Tu peux aussi tout simplement mettre dans ton script :
# sudo obligatoire
if [[ $UID != 0 ]]; then
echo 'ce script exige sudo'
exit 1
fi
Et lancer le script avec :
sudo bash ton_script (ou sans bash si x)
Autre solution, si la sécurité n'est pas ta préoccupation première, voir :
http://forum.ubuntu-fr.org/viewtopic.php?id=41985
Hors ligne
#8 Le 10/08/2006, à 11:07
- mike59
Re : [Résolu] Besoin d'aide pour un script tout bête
Tu peux aussi tout simplement mettre dans ton script :
# sudo obligatoire
if [[ $UID != 0 ]]; then
echo 'ce script exige sudo'
exit 1
fiEt lancer le script avec :
sudo bash ton_script (ou sans bash si x)Autre solution, si la sécurité n'est pas ta préoccupation première, voir :
http://forum.ubuntu-fr.org/viewtopic.php?id=41985
Merci pour ton script, mais bon... là justement je voudrais ne pas à avoir à entrer le pass...
Pour la sécurité c'est sûr que je préfère ne pas utiliser le post que tu m'as donné en lien ni mettre le pass en clair dans le script... on ne sait jamais !
Donc si vous avez une autre solution, je suis preneur !
Merci !
Hors ligne
#9 Le 10/08/2006, à 11:15
- kaworu
Re : [Résolu] Besoin d'aide pour un script tout bête
désolé c'est de ma faute. Comme je suis pas sous Ubuntu j'ai une config légerement différente. si tu remplace %users par %admin ça devrait aller.
%admin ALL=(ALL) NOPASSWD:/etc/init.d/networking restart
et c'est bon.
"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."
Hors ligne
#10 Le 10/08/2006, à 11:42
- mike59
Re : [Résolu] Besoin d'aide pour un script tout bête
ok !! c'est parfait !! merci !
donc si je comprends bien la ligne, ça veut dire que les membres du groupe "ADMIN" n'ont pas besoin de saisir de pass pour exécuter la commande /etc/init.d/networking restart ??
merci encore pour tout !
Hors ligne
#11 Le 10/08/2006, à 12:29
- kaworu
Re : [Résolu] Besoin d'aide pour un script tout bête
Oui c'est exactement ça.
J'ai pas fait gaffe, je travail sous Gentoo (t'as le groupe users pour les utilisateurs locaux et groupes wheel pour le groupe admin), C'est juste légérement différent.
la commande groups que je t'ai demandé te donnes les groupes auxquelles apartient ton user. Du coup il suffit de spécifier un groupe auxquel tu appartient pour que ça marche.
Tu pourrais aussi spécifier ton nom d'utilisateur mais il vaut mieux mettre le groupe admin au cas où d'autres utilisateurs auraient besoin de ça.
EDIT : peux-tu mettre un (Résolu) dans ton titre stp ? merci !
Dernière modification par kaworu (Le 10/08/2006, à 12:31)
"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."
Hors ligne
#12 Le 10/08/2006, à 13:55
- Smashou
Re : [Résolu] Besoin d'aide pour un script tout bête
sinon il y avait un autre moyen par les droits mais comme c'est résolu
( enfin quand m ) il suffit que tu donnes les droits root a ton script et que tu crée ( avec le stickybit ON ) et ensuite tu crées un script qui lance le script root et tu pourras donc avoir un script avec les droits root
Mais je suis pas sur de ne pas m'etre emmeler dans mes explications
-- > http://www.smashou.info < --
Hors ligne
#13 Le 10/08/2006, à 18:16
- kaworu
Re : [Résolu] Besoin d'aide pour un script tout bête
sinon il y avait un autre moyen par les droits mais comme c'est résolu
( enfin quand m ) il suffit que tu donnes les droits root a ton script et que tu crée ( avec le stickybit ON ) et ensuite tu crées un script qui lance le script root et tu pourras donc avoir un script avec les droits root
Mais je suis pas sur de ne pas m'etre emmeler dans mes explications
mh... ?
donne l'exemple avec sa commande stp j'ai pas kapige.
"There are in order of increasing severity: lies, damn lies, statistics, and computer benchmarks."
Hors ligne
#14 Le 18/08/2006, à 01:18
- Lie Algebra
Re : [Résolu] Besoin d'aide pour un script tout bête
Smashou a écrit :sinon il y avait un autre moyen par les droits mais comme c'est résolu
( enfin quand m ) il suffit que tu donnes les droits root a ton script et que tu crée ( avec le stickybit ON ) et ensuite tu crées un script qui lance le script root et tu pourras donc avoir un script avec les droits root
Mais je suis pas sur de ne pas m'etre emmeler dans mes explications
mh... ?
donne l'exemple avec sa commande stp j'ai pas kapige.
Bonjour,
Smashou pensait vraissemblablement à faire quelque chose du style :
cat > script.sh
#!/bin/sh
sudo /etc/init.d/networking restart
^D
En positionnant les droits avec :
sudo chown root script.sh
sudo chmod 4755 script.sh (positionnement du setuid root et non pas du sticky bit pour être exact)
Puis en appelant script.sh à partir d'un autre script situé dans ~/$USER par exemple...
Cela dit, setuid et setgid c'est le mal
Par rapport à ce que disais Smashou en parlant de script avec les droits root, une petite précision s'impose. Mettons qu'on ajoute par exemple à la suite de script.sh une ligne du genre :
mkdir /home/XXXX
, à l'exécution, on obtiendra une erreur sur la création de ce répertoire. Un script au sens d'un ensemble de commandes interprétées successivement n'hérite donc pas des permissions étendues.
Enfait, je me suis aperçu qu'on pouvait encapsuler un script dans un code C appellant le dit script avec la directive C:
system("mon script")
puis positionner les droits qui vont bien sur le binaire compilé. Mais on en revient à la situation de départ, ce qui n'est pas souhaitable.
Evidemment, reste toujours cron et visudo, nettement plus adaptés.
Tout ca pour ca, désolé pour la trop longue digression
++
Hors ligne