[shell script] sudo dans un shell script

Le
unbewust
j'ai besoin de lancer dans un shell script donné une commande par
sudo.

je ne vois pas comment faire, je m'explique, au terminal on fait :
&> sudo mon_script
password:

et on entre le password.

mais dans un script donné je voudrais répondre à l'intérieur du scr=
ipt
à la demande de password.

comment faire ça ?

bien sûr le password serait alors ***en clair*** dans le script, ça ne
me gène pas vu que c'est sur une bécanne que j'utilise seul

Yvon
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Patrick Stadelmann
Le #496567
In article unbewust
bien sûr le password serait alors ***en clair*** dans le script, ça ne
me gène pas vu que c'est sur une bécanne que j'utilise seul...


On peut le passer via stdin, voir le man de sudo.

Patrick
--
Patrick Stadelmann
unbewust
Le #496566
On 8 août, 11:42, Patrick Stadelmann wrote:
In article
unbewust
bien sûr le password serait alors ***en clair*** dans le script, ça ne
me gène pas vu que c'est sur une bécanne que j'utilise seul...


On peut le passer via stdin, voir le man de sudo.

Patrick
--
Patrick Stadelmann

OK merci !


unbewust
Le #496565
On 8 août, 11:42, Patrick Stadelmann wrote:
In article
unbewust
bien sûr le password serait alors ***en clair*** dans le script, ça ne
me gène pas vu que c'est sur une bécanne que j'utilise seul...


On peut le passer via stdin, voir le man de sudo.

Patrick
--
Patrick Stadelmann



oui, j'ai essayé :

$> echo -n $pwd <pipe*> sudo -S emtec

* je ne sais pas où se trouve pipe sur pécé...

MAIS mon script "emtec" attend une réponse :
par read ...

et tout se passe comme si le script prenait le password comme
réponse ???

ça veut dire que je dois découper mon script en deux parties ? une
pour les questions/réponses (sans sudo) et une autre avec sudo ???

Yvon


Eric Levenez
Le #496564
Le 8/08/07 20:15, dans

$> echo -n $pwd <pipe*> sudo -S emtec


Il n'est bien sûr pas possible de rediriger le stdin d'une commande qui
demande un mot de passe (su, sudo...). Ces commandes vont directement lire
sur /dev/tyy. Sinon ce serait trop facile pour cracker des mots de passe.

--
Éric Lévénez -- Unix is not only an OS, it's a way of life.

Patrick Stadelmann
Le #496563
In article Eric Levenez
Le 8/08/07 20:15, dans

$> echo -n $pwd <pipe*> sudo -S emtec


Il n'est bien sûr pas possible de rediriger le stdin d'une commande qui
demande un mot de passe (su, sudo...). Ces commandes vont directement lire
sur /dev/tyy. Sinon ce serait trop facile pour cracker des mots de passe.


Pourtant :

$ shutdown
shutdown: NOT super-user

$ echo -n MotDePasse | sudo -S shutdown
usage: shutdown [-] [-h | -p | -r | -k] [-o [-n]] time [...]

Patrick
--
Patrick Stadelmann

Eric Levenez
Le #496562
Le 9/08/07 0:08, dans
Stadelmann »
In article Eric Levenez
Le 8/08/07 20:15, dans

$> echo -n $pwd <pipe*> sudo -S emtec


Il n'est bien sûr pas possible de rediriger le stdin d'une commande qui
demande un mot de passe (su, sudo...). Ces commandes vont directement lire
sur /dev/tyy. Sinon ce serait trop facile pour cracker des mots de passe.


Pourtant :

$ shutdown
shutdown: NOT super-user

$ echo -n MotDePasse | sudo -S shutdown
usage: shutdown [-] [-h | -p | -r | -k] [-o [-n]] time [...]


Si cette technique marche avec sudo, il faut absolument faire un bug report
à Apple, c'est un gros trou de sécurité.

En fait ce que tu crois marcher ne marche pas car en fait sudo ne demande
pas à chaque fois le mot de passe. Si tu attends longtemps et si tu relances
ta commande, tu verra qu'elle ne marche pas comme tu le penses.

--
Éric Lévénez -- Unix is not only an OS, it's a way of life.



Patrick Stadelmann
Le #496333
In article Eric Levenez
Si cette technique marche avec sudo, il faut absolument faire un bug report
à Apple, c'est un gros trou de sécurité.


C'est documenté dans le man :

-S The -S (stdin) option causes sudo to read the password from the
standard input instead of the terminal device.

Le man dit la même chose sous Linux (mais là j'ai pas accès à sudo pour
pouvoir tester).

En fait ce que tu crois marcher ne marche pas car en fait sudo ne demande
pas à chaque fois le mot de passe. Si tu attends longtemps et si tu relances
ta commande, tu verra qu'elle ne marche pas comme tu le penses.


Si, si j'avais pris soin de faire un "sudo -k" avant. Et si le mot de
passe est erroné, ça ne fonctionne pas.

Patrick
--
Patrick Stadelmann
unbewust
Le #496332
On 8 août, 22:53, Eric Levenez
Il n'est bien sûr pas possible de rediriger le stdin d'une commande qui
demande un mot de passe (su, sudo...). Ces commandes vont directement lire
sur /dev/tyy. Sinon ce serait trop facile pour cracker des mots de passe.



OK d'accord, pigé le binz tant pis pour moi !
merci beaucoup pour cette réponse très claire ;-)

Yvon

Eric Levenez
Le #496330
Le 9/08/07 11:08, dans
Stadelmann »
In article Eric Levenez
Si cette technique marche avec sudo, il faut absolument faire un bug report
à Apple, c'est un gros trou de sécurité.


C'est documenté dans le man :

-S The -S (stdin) option causes sudo to read the password from the
standard input instead of the terminal device.

Le man dit la même chose sous Linux (mais là j'ai pas accès à sudo pour
pouvoir tester).


Ah, j'avais pas vu l'option -S. Comme c'est quand même un trou de sécurité,
sudo doit se protéger en invalidant les essais de mots de passe si l'on a
trop d'erreurs pendant une durée. Enfin je suppose.

J'avais fait un bug report sur ce problème de sécurité qui survenait avec
plusieurs softs, comme Virex par exemple :

sh -c echo toto | sudo -S installer -verbose -pkg V7040609.pkg -target /

Sur un serveur, un utilisateur lambda pouvait ainsi récupérer le mot de
passe administrateur sans rien cracker. D'autres softs faisaient et doivent
faire certainement la même connerie.

--
Éric Lévénez -- Unix is not only an OS, it's a way of life.


unbewust
Le #496328
On 9 août, 14:40, "Eric S."
Une autre possibilité est de modifier le fichier de configuration de
sudo de telle sorte que celui-ci autorise l'exécution de ta commande par
ton utilisateur et sans demande de mot de passe.

Voir pour cela sudoers(5) et visudo(8).



OK merci, le pb est simple je voudrais pouvoir executer un script en
admin sans qu'il me demande à chaque fois le pwd...

par ex dans un prog, ranger le pwd dans des prefs...

Mes 2 cents.


une boite de chocolats à Noël ???

--
Eric S.


Publicité
Poster une réponse
Anonyme