bash: changer d'utilisateur

Le
debianpmd
bonjour, je cherche dans un bash à passer dans un shell fils en root et d=
'y
exécuter des commandes en root.
par exemple :
#!/bin/bash

echo "rentrez votre mot de passe"
su -

cat /etc/esound/esd.conf



quoique je fasse, je reste bloqué sur
debian #
et la commande cat ne s'exécute pas

Je ne m'en sort pas.
Que dois je faire svp ?
Merci

pmd
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
mouss
Le #9727811
debianpmd wrote:
bonjour, je cherche dans un bash à passer dans un shell fils en root et d'y
exécuter des commandes en root.
par exemple :
#!/bin/bash

echo "rentrez votre mot de passe"
su -

cat /etc/esound/esd.conf



quoique je fasse, je reste bloqué sur
debian #
et la commande cat ne s'exécute pas




bien su "forke" un shell et tu est dedans. les commandes d'après seront
lancées après exit (mais pas en tant que root!).

essaye avec

su - root /bin/cat /etc/esound/esd.conf


mais c'est quoi le but de la manoeuvre?


Je ne m'en sort pas.
Que dois je faire svp ?
Merci

pmd






--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
debianpmd
Le #9727801
Le Saturday 02 February 2008 11:54:56 mouss, vous avez écrit :
debianpmd wrote:
> bonjour, je cherche dans un bash à passer dans un shell fils en root et
> d'y exécuter des commandes en root.
> par exemple :
> #!/bin/bash
>
> echo "rentrez votre mot de passe"
> su -
>
> cat /etc/esound/esd.conf
>
>
>
> quoique je fasse, je reste bloqué sur
> debian #
> et la commande cat ne s'exécute pas

bien su "forke" un shell et tu est dedans. les commandes d'après seront
lancées après exit (mais pas en tant que root!).

essaye avec

su - root /bin/cat /etc/esound/esd.conf


mais c'est quoi le but de la manoeuvre?

> Je ne m'en sort pas.
> Que dois je faire svp ?
> Merci
>
> pmd


merci de ta réponse.

bon en fait c'est pour passer en root dans ce script
il décompresse le paquet
il arrête mysql
il permet de mettre un mot de passe mysql
puis de passer en utilisation sans mot de passe
puis de lancer le programme d'installation,
puis de revenir en mysql normal.

#!/bin/bash
cd /home/$USER
/usr/bin/p7zip -d MedinTuxDist-V1.26-Utf8.7z
chown -R $USER MedinTuxDist-V1.26-Utf8
chmod -R 775 MedinTuxDist-V1.26-Utf8

echo "entrez votre mot de passe root"

#on npasse en root
su /etc/init.d/mysql stop
#puis redémarrer en mode safe pour changer les tables d'autorisation
su mysqld_safe --skip-grant-tables --skip-networking &
mysql mysql
#définir le mot de passe mysql
fichtemp='tempfile 2>/dev/null' || fichtemp=/tmp/test$$
echo "choisissez un mot de passe mysql"
2> $fichtemp
update user set password=password($fichtemp) where user="root" and
host="localhost";
exit
su /etc/init.d/mysql restart
mysql -u root -p
$fichtemp
GRANT ALL ON *.* TO IDENTIFIED BY "";
./home/$USER/MedinTuxDist-V1.26-Utf8/set_bases/bin/set_bases
GRANT ALL ON *.* TO IDENTIFIED BY "$fichtemp";
exit


je n'y suis pas encore , hein ?
;-)

pmd
davide
Le #9727781
Il Sat, 02 Feb 2008 12:07:53 +0100, debianpmd ha scritto:

bon en fait c'est pour passer en root dans ce script il décompresse le
paquet
il arrête mysql
il permet de mettre un mot de passe mysql puis de passer en utilisation
sans mot de passe puis de lancer le programme d'installation, puis de
revenir en mysql normal.




dans ce cas ci, je prefere ecrire le script comme si j'etais root, et au
bon moment le lancer avec sudo ou su - -c /parcour/pour/mon /script.sh

et ça serait mieux mettre au tout debut un test sur le uid, ou avec
whoami et donner l'abort si il n'a pas obtenu le bonne mot de passe.


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
davide
Le #9727771
Il Sat, 02 Feb 2008 10:44:14 +0100, debianpmd ha scritto:

bonjour, je cherche dans un bash à passer dans un shell fils en root et
d'y exécuter des commandes en root.
par exemple :
#!/bin/bash

echo "rentrez votre mot de passe"
su -

cat /etc/esound/esd.conf



quoique je fasse, je reste bloqué sur debian #
et la commande cat ne s'exécute pas

Je ne m'en sort pas.
Que dois je faire svp ?



de man su:
-c, --command COMMAND
Specify a command that will be invoked by the shell using its -
c.




Merci

pmd





--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
debianpmd
Le #9727761
Le Saturday 02 February 2008 12:47:20 davide, vous avez écrit :
Il Sat, 02 Feb 2008 10:44:14 +0100, debianpmd ha scritto:
> bonjour, je cherche dans un bash à passer dans un shell fils en ro ot et
> d'y exécuter des commandes en root.
> par exemple :
> #!/bin/bash
>
> echo "rentrez votre mot de passe"
> su -
>
> cat /etc/esound/esd.conf
>
>
>
> quoique je fasse, je reste bloqué sur debian #
> et la commande cat ne s'exécute pas
>
> Je ne m'en sort pas.
> Que dois je faire svp ?

de man su:
-c, --command COMMAND
Specify a command that will be invoked by the shell using its -
c.

> Merci
>
> pmd



merci
j'avance petit à petit
pmd
mouss
Le #9725441
debianpmd wrote:
Le Saturday 02 February 2008 11:54:56 mouss, vous avez écrit :

debianpmd wrote:

bonjour, je cherche dans un bash à passer dans un shell fils en root et
d'y exécuter des commandes en root.
par exemple :
#!/bin/bash

echo "rentrez votre mot de passe"
su -

cat /etc/esound/esd.conf



quoique je fasse, je reste bloqué sur
debian #
et la commande cat ne s'exécute pas



bien su "forke" un shell et tu est dedans. les commandes d'après seront
lancées après exit (mais pas en tant que root!).

essaye avec

su - root /bin/cat /etc/esound/esd.conf


mais c'est quoi le but de la manoeuvre?


Je ne m'en sort pas.
Que dois je faire svp ?
Merci

pmd





merci de ta réponse.

bon en fait c'est pour passer en root dans ce script




il faut faire un script à lancer en tant que root et tu lances ce script
dans la ligne "su".
su - root /chemin/vers/ton/script

il décompresse le paquet
il arrête mysql
il permet de mettre un mot de passe mysql
puis de passer en utilisation sans mot de passe
puis de lancer le programme d'installation,
puis de revenir en mysql normal.

#!/bin/bash
cd /home/$USER
/usr/bin/p7zip -d MedinTuxDist-V1.26-Utf8.7z
chown -R $USER MedinTuxDist-V1.26-Utf8
chmod -R 775 MedinTuxDist-V1.26-Utf8

echo "entrez votre mot de passe root"

#on npasse en root
su /etc/init.d/mysql stop
#puis redémarrer en mode safe pour changer les tables d'autorisation
su mysqld_safe --skip-grant-tables --skip-networking &
mysql mysql
#définir le mot de passe mysql
fichtemp='tempfile 2>/dev/null' || fichtemp=/tmp/test$$
echo "choisissez un mot de passe mysql"
2> $fichtemp
update user set password=password($fichtemp) where user="root" and




euh... mettre le password riit de mysql dans /tmp/, c'est pas vraiment
conseillée.

mais pourquoi le script devrait-il changer le pass root mysql? A moins
de vouloir mettre le pass sur N machines, ça n'a pas trop de sens. et
dans le cas de N machines, il faut avoir un script qui ne fait que ça.
diviser pour règner (rien n'empêche de le lancer à partir
host="localhost";
exit
su /etc/init.d/mysql restart
mysql -u root -p
$fichtemp
GRANT ALL ON *.* TO IDENTIFIED BY "";
./home/$USER/MedinTuxDist-V1.26-Utf8/set_bases/bin/set_bases




root a deja tous les droits. il ne faut pas utiliser ce user pour les
taches "communes". il faut créer un autre utilisateur dédié à la tache.
GRANT ALL ON *.* TO IDENTIFIED BY "$fichtemp";
exit


je n'y suis pas encore , hein ?





--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
debianpmd
Le #9725421
Le Saturday 02 February 2008 19:09:24 mouss, vous avez écrit :
debianpmd wrote:
> Le Saturday 02 February 2008 11:54:56 mouss, vous avez écrit :
>> debianpmd wrote:
>>> bonjour, je cherche dans un bash à passer dans un shell fils en roo t et
>>> d'y exécuter des commandes en root.
>>> par exemple :
>>> #!/bin/bash
>>>
>>> echo "rentrez votre mot de passe"
>>> su -
>>>
>>> cat /etc/esound/esd.conf
>>>
>>>
>>>
>>> quoique je fasse, je reste bloqué sur
>>> debian #
>>> et la commande cat ne s'exécute pas
>>
>> bien su "forke" un shell et tu est dedans. les commandes d'après ser ont
>> lancées après exit (mais pas en tant que root!).
>>
>> essaye avec
>>
>> su - root /bin/cat /etc/esound/esd.conf
>>
>>
>> mais c'est quoi le but de la manoeuvre?
>>
>>> Je ne m'en sort pas.
>>> Que dois je faire svp ?
>>> Merci
>>>
>>> pmd
>
> merci de ta réponse.
>
> bon en fait c'est pour passer en root dans ce script

il faut faire un script à lancer en tant que root et tu lances ce script
dans la ligne "su".
su - root /chemin/vers/ton/script

> il décompresse le paquet
> il arrête mysql
> il permet de mettre un mot de passe mysql
> puis de passer en utilisation sans mot de passe
> puis de lancer le programme d'installation,
> puis de revenir en mysql normal.
>
> #!/bin/bash
> cd /home/$USER
> /usr/bin/p7zip -d MedinTuxDist-V1.26-Utf8.7z
> chown -R $USER MedinTuxDist-V1.26-Utf8
> chmod -R 775 MedinTuxDist-V1.26-Utf8
>
> echo "entrez votre mot de passe root"
>
> #on npasse en root
> su /etc/init.d/mysql stop
> #puis redémarrer en mode safe pour changer les tables d'autorisation
> su mysqld_safe --skip-grant-tables --skip-networking &
> mysql mysql
> #définir le mot de passe mysql
> fichtemp='tempfile 2>/dev/null' || fichtemp=/tmp/test$$
> echo "choisissez un mot de passe mysql"
> 2> $fichtemp
> update user set password=password($fichtemp) where user="root" and

euh... mettre le password riit de mysql dans /tmp/, c'est pas vraiment
conseillée.

mais pourquoi le script devrait-il changer le pass root mysql? A moins
de vouloir mettre le pass sur N machines, ça n'a pas trop de sens. et
dans le cas de N machines, il faut avoir un script qui ne fait que ça.
diviser pour règner (rien n'empêche de le lancer à partir

> host="localhost";
> exit
> su /etc/init.d/mysql restart
> mysql -u root -p
> $fichtemp
> GRANT ALL ON *.* TO IDENTIFIED BY "";
> ./home/$USER/MedinTuxDist-V1.26-Utf8/set_bases/bin/set_bases

root a deja tous les droits. il ne faut pas utiliser ce user pour les
taches "communes". il faut créer un autre utilisateur dédié à la tache.

> GRANT ALL ON *.* TO IDENTIFIED BY "$fichtemp";
> exit
>
>
> je n'y suis pas encore , hein ?



c'est parce que c'est pour une première installation de mysql et du logic iel.
pmd
debianpmd
Le #9725091
Le Saturday 02 February 2008 19:57:08 debianpmd, vous avez écrit :
Le Saturday 02 February 2008 19:09:24 mouss, vous avez écrit :
> debianpmd wrote:
> > Le Saturday 02 February 2008 11:54:56 mouss, vous avez écrit :
> >> debianpmd wrote:
> >>> bonjour, je cherche dans un bash à passer dans un shell fils en r oot
> >>> et d'y exécuter des commandes en root.
> >>> par exemple :
> >>> #!/bin/bash
> >>>
> >>> echo "rentrez votre mot de passe"
> >>> su -
> >>>
> >>> cat /etc/esound/esd.conf
> >>>
> >>>
> >>>
> >>> quoique je fasse, je reste bloqué sur
> >>> debian #
> >>> et la commande cat ne s'exécute pas
> >>
> >> bien su "forke" un shell et tu est dedans. les commandes d'après
> >> seront lancées après exit (mais pas en tant que root!).
> >>
> >> essaye avec
> >>
> >> su - root /bin/cat /etc/esound/esd.conf
> >>
> >>
> >> mais c'est quoi le but de la manoeuvre?
> >>
> >>> Je ne m'en sort pas.
> >>> Que dois je faire svp ?
> >>> Merci
> >>>
> >>> pmd
> >
> > merci de ta réponse.
> >
> > bon en fait c'est pour passer en root dans ce script
>
> il faut faire un script à lancer en tant que root et tu lances ce scr ipt
> dans la ligne "su".
> su - root /chemin/vers/ton/script
>
> > il décompresse le paquet
> > il arrête mysql
> > il permet de mettre un mot de passe mysql
> > puis de passer en utilisation sans mot de passe
> > puis de lancer le programme d'installation,
> > puis de revenir en mysql normal.
> >
> > #!/bin/bash
> > cd /home/$USER
> > /usr/bin/p7zip -d MedinTuxDist-V1.26-Utf8.7z
> > chown -R $USER MedinTuxDist-V1.26-Utf8
> > chmod -R 775 MedinTuxDist-V1.26-Utf8
> >
> > echo "entrez votre mot de passe root"
> >
> > #on npasse en root
> > su /etc/init.d/mysql stop
> > #puis redémarrer en mode safe pour changer les tables d'autorisation
> > su mysqld_safe --skip-grant-tables --skip-networking &
> > mysql mysql
> > #définir le mot de passe mysql
> > fichtemp='tempfile 2>/dev/null' || fichtemp=/tmp/test$$
> > echo "choisissez un mot de passe mysql"
> > 2> $fichtemp
> > update user set password=password($fichtemp) where user="root" and
>
> euh... mettre le password riit de mysql dans /tmp/, c'est pas vraiment
> conseillée.
>
> mais pourquoi le script devrait-il changer le pass root mysql? A moins
> de vouloir mettre le pass sur N machines, ça n'a pas trop de sens. et
> dans le cas de N machines, il faut avoir un script qui ne fait que ça.
> diviser pour règner (rien n'empêche de le lancer à partir
>
> > host="localhost";
> > exit
> > su /etc/init.d/mysql restart
> > mysql -u root -p
> > $fichtemp
> > GRANT ALL ON *.* TO IDENTIFIED BY "";
> > ./home/$USER/MedinTuxDist-V1.26-Utf8/set_bases/bin/set_bases
>
> root a deja tous les droits. il ne faut pas utiliser ce user pour les
> taches "communes". il faut créer un autre utilisateur dédié à l a tache.
>
> > GRANT ALL ON *.* TO IDENTIFIED BY "$fichtemp";
> > exit
> >
> >
> > je n'y suis pas encore , hein ?

c'est parce que c'est pour une première installation de mysql et du
logiciel. pmd

------------------------------------------------------------------------- --
------------ Orange vous informe que cet e-mail a ete controle par
l'anti-virus mail. Aucun virus connu a ce jour par nos services n'a ete
detecte.



ça y est je m'en suis sorti, merci à vous.
le bash d'installation de medintux V1.26

#!/bin/bash -v
echo "assurez vous d'abord d'avoir installé /n
les paquets mysql: /n
mysql-client-5.0 /n
mysql-server-5.0 /n
mysql-admin /n
et leurs dépendances /n
et les paquets qt3 : /n
qt3-designer /n
qt3-qtconfig /n
etc...
et placez le .7zip dans votre dossier personnel"
sleep 5

touch /home/$USER/table && echo "#!/bin/bash
update user set password=password('') where user="root" and host="loc alhost";"
/home/$USER/table


chmod +x /home/$USER/table

cd /home/$USER
/usr/bin/p7zip -d MedinTuxDist-V1.26-Utf8.7z
chown -R $USER MedinTuxDist-V1.26-Utf8
chmod -R 775 MedinTuxDist-V1.26-Utf8

echo "entrez votre mot de passe root"

#on passe en root
sudo /etc/init.d/mysql stop
#puis redémarrer en mode safe pour changer les tables d'autorisation
sudo mysqld_safe --skip-grant-tables --skip-networking &
if [ "$?" == "0" ]
then

#définir le mot de passe nul mysql
mysql mysql < /home/$USER/table
fi

sudo /etc/init.d/mysql restart
echo "une fois démarré le programme medintux, /n
vous cliquerez sur installer les bases /
puis un fois installées, sur démarrer medintux.
Vous pourrez donner ultérieurement un mot de passe à votre base de donn ée avec
un autre progamme "
sleep 5
/home/pmddeb/MedinTuxDist-V1.26-Utf8/set_bases/bin/set_bases
exit



pmd
Sylvain Sauvage
Le #9725081
debianpmd, dimanche 3 février 2008, 17:45:37 CET
[…]
ça y est je m'en suis sorti, merci à vous.
le bash d'installation de medintux V1.26

#!/bin/bash -v
[…]
touch /home/$USER/table && echo "#!/bin/bash […]



Puisque $USER est la variable d’environnement (et non pas une
variable qui aurait le même nom mais qui l’écraserait), u tilise
plutôt $HOME que /home/$USER.

--
Sylvain Sauvage
debianpmd
Le #9721881
Le Sunday 03 February 2008 17:45:37 debianpmd, vous avez écrit :
/home/pmddeb/MedinTuxDist-V1.26-Utf8/set_bases/bin/set_bases



oups
remplacer par
/home/$USER/MedinTuxDist-V1.26-Utf8/set_bases/bin/set_bases
et encore MedinTuxDist-V1.26-Utf8 par MedinTuxDist-V2.00

ahem
pmd
Publicité
Poster une réponse
Anonyme