Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[shell script] sudo dans un shell script

26 réponses
Avatar
unbewust
j'ai besoin de lancer dans un shell script donn=E9 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=E9 je voudrais r=E9pondre =E0 l'int=E9rieur du scr=
ipt
=E0 la demande de password.

comment faire =E7a ?

bien s=FBr le password serait alors ***en clair*** dans le script, =E7a ne
me g=E8ne pas vu que c'est sur une b=E9canne que j'utilise seul...

Yvon

10 réponses

1 2 3
Avatar
Patrick Stadelmann
In article ,
unbewust wrote:

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

Avatar
unbewust
On 8 août, 11:42, Patrick Stadelmann
wrote:
In article ,

unbewust wrote:
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 !


Avatar
unbewust
On 8 août, 11:42, Patrick Stadelmann
wrote:
In article ,

unbewust wrote:
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


Avatar
Eric Levenez
Le 8/08/07 20:15, dans
, « unbewust »
a écrit :

$> 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 -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.

Avatar
Patrick Stadelmann
In article <C2DFF9D2.AF999%,
Eric Levenez wrote:

Le 8/08/07 20:15, dans
, « unbewust »
a écrit :

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


Avatar
Eric Levenez
Le 9/08/07 0:08, dans
, « Patrick
Stadelmann » a écrit :

In article <C2DFF9D2.AF999%,
Eric Levenez wrote:

Le 8/08/07 20:15, dans
, « unbewust »
a écrit :

$> 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 -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.



Avatar
Patrick Stadelmann
In article <C2E07091.AF9EA%,
Eric Levenez wrote:

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

Avatar
unbewust
On 8 août, 22:53, Eric Levenez wrote:

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

Avatar
Eric Levenez
Le 9/08/07 11:08, dans
, « Patrick
Stadelmann » a écrit :

In article <C2E07091.AF9EA%,
Eric Levenez wrote:

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 -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.


Avatar
unbewust
On 9 août, 14:40, "Eric S." wrote:

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.


1 2 3