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

kaworu a écrit :

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 FAIRE

echo "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

cep a écrit :

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

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. wink

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 smile mais comme c'est résolu tongue

( 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 tongue

Mais je suis pas sur de ne pas m'etre emmeler dans mes explications tongue

Hors ligne

#13 Le 10/08/2006, à 18:16

kaworu

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 smile mais comme c'est résolu tongue

( 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 tongue

Mais je suis pas sur de ne pas m'etre emmeler dans mes explications tongue

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

kaworu a écrit :
Smashou a écrit :

sinon il y avait un autre moyen par les droits smile mais comme c'est résolu tongue

( 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 tongue

Mais je suis pas sur de ne pas m'etre emmeler dans mes explications tongue

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 wink

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 wink
++

Hors ligne