[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: bash: changer d'utilisateur



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 root@localhost 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 root@localhost IDENTIFIED BY "$fichtemp";
exit


je n'y suis pas encore , hein ?


Reply to: