Tu as eu la malchance d'être tombé sur un script très mal développé.
Le type qui l'a écrit aurait du au minimum vérifier que "$path" n'était pas
vide
avant de faire son "rm -rf $path/*"
Tu es en droit d'écrire au rigolo en question (si tu trouves son
adresse), pour lui expliquer ta manière de penser !!
Quand au fait que tu l'ais lancé sans vraiment regarder son contenu,
ce n'est effectivement pas très bon, mais honnetement, ce n'était pas super
évident de voir que cela aller tourner à la catastrophe. Pas de bol donc
...
Une petite remarque cependant sur la manière dont tu travailles avec
Linux. Evites LE PLUS POSSIBLE de travailler avec le compte root. Le nombre
de commandes que tu dois lancer avec lui doit se reduire au strict minimum,
d'autant que tu n'es pas encore tout à fait un expert sous Linux.
Comment travaille alors ? C'est simple:
- Crée toi un compte utilisateur ("Ismael" par exemple), avec des droits
standards.
Lorsque tu te logges en mode graphique sur ta machine, utilise le compte
"Ismael", et lances toi 2 xterm (ou equivalent): L'un dans lequel tu vas
lancer tes
commandes de shell "normales" (ls, man, cp, rm, etc ...), et l'autre dans
lequel
tu fais un "su root", pour lancer de RARES commandes en temps que root
- Depuis ce compte, tu peux lancer des outils d'adminstration graphique
(linuxconf, etc ..), le soft te demandera simplement de taper le mot de
passe root,
afin qu'il s'execute avec les bons droits. Donc tu ne verras pas la
différence avec
ce que tu faisais avant, c'est à dire à te logger sous X avec le compte
root.
- Et pour les nouveaux softs ? Si ils sont en RPM, il est evidement
nécéssaire que
tu sois root pour les installer. Si tu les installe depuis la ligne de
commande
(rpm -ih le_package.rpm), commence d'abord par lancer la comande avec le
parametre "--test" (rpm -ih --test le_package.rpm). Cela te permettra de
voir si
le package ne pose pas de problème, si il a toutes ses dépendances, etc ...
("man rpm" pour plus d'infos)
- Par contre, pour les nouveaux soft qui sont fournis sous forme de tgz,
c'est un
peu plus complique. Si tu veux que ces nouveaux softs puissent être lancés
par
n'importe qui (root, "Ismael", etc ...), il FAUT qu'ils soit installés dans
le "/usr/local".
Or, par défaut, seul le root peut y écrire .. Et si on laisse le root faire
toutes les
opérations de compilation, installation, c'est Mal ... (cf mails précédent
sur la taille
de ton répertoire root). Voila donc ce que tu vas faire:
+ Commence par te créer un utilisateur tout simple ("newsoft" par
exemple). Verifie
que le GROUPE "newsoft" a été créé en même temps ("grep newsoft
/etc/group"),
et que c'est le compte par défaut de "newsoft" ("grep newsoft
/etc/password").
"man password" et "man group" pour plus d'infos
+ Avec le compte root, donne la propriété de /usr/local à ton utilisateur
"newsoft":
chmod u+rwX -R /usr/local
(le "X" en majuscule est normal)
chown newsoft -R /usr/local
+ Toujours avec le compte root, authorise les utilisateurs du group
"newsoft" à
lire/executer les programmes de usr/local:
chmod g+rX g-w -R /usr/local
(le "X" en majuscule est normal)
chgrp newsoft -R /usr/local
+ Enfin, rajoute ton utilisateur "Ismal" au group "newsoft" en modifiant
le /etc/group.
Remarque: Il faut te relogger ou ouvrir un autre terminal pour que les
mofications de
group prenne effet. En temps que "Ismael", tape la commande "group" pour
voir
à quels groupes tu appartiens.
+ Maintenant, l'utilisateur "newsoft" peut lire/ecrire/executer tout ce
qu'il veut dans le
/usr/local. Et les autres utilisateurs du group "newsoft" peuvent
lire/lancer tout ce
qu'il y a dans /usr/local
+ Pour compiler de nouveaux softs, ouvre un terminal, fait un "su
newsoft",
décompresse le fichier de sources quelque part (dans /home/newsoft/src par
exemple), et LIT le fichier README (ou la doc du soft !!!). En général, le
"./configure"
considère qu'il doit installer le nouveau soft dans "/usr/local", mais si
ce n'est pas
le cas, utilise la commande "./configure --prefix=/usr/local" pour
l'obliger à installer
le soft dans ce répertoire. Utilise "./configure --help" pour avoir plus
d'aide.
Enfin lance les commandes de compilation (./configure (si ca n'a pas été
fait), make,
make install ...
+ En générale, "./configure", et "make" N'ont PAS besoin des droits root
pour
s'executer, donc même si une de ces commandes fait une "bétise" (comme ton
"rm /*" de ton mail précédent) , les dégats seront limités à ton compte
"newsoft" et au
/usr/local. OK, c'est rageant, mais ce n'est pas ce qu'il y a de plus grave
...
+ Seul la commande "make install" ou "make uninstall" peuvent avoir besoin
des droits
root. Personnellement, sur les 300Mo de softs qui sont dans mon /usr/local
que j'ai
compilé, UN SEUL a eu besoin des droits root pour être installé: C'est
"cdrecord",
un soft de gravure de CD. Et encore, c'était pour lancer une UNIQUE
commande
("chmod +S", quand même ...). Pour ce cas la, j'ai bien regardé le
Makefile, et j'ai
uniquement utilisé le compte pour lancer l'unique commande qui avait
réélement
besoin de ces droits spéciaux ...
Bon, j'espère que ces informations te serons utiles, et que tu
appliqueras cette
technique d'utilisation minimum des droits root. Personnellement, je suis
tellement
parano avec ca, que je ne lis jamais les "man" en étant root, et je fais
pratiquemet
pas de "ls" avec !! :=)
A plus
Olivier
> Tout d'abord remerciement nicolas.
> Ensuite, je viens de me rendre compte qu'en fait, je l'avais lu ce
script.
> Et j'avais totalement en connaissance que le "bestiau" était développé
pour
> une redhat 5.2. Là encore, quand ton boss te prends un onduleur, te
demande
> de l'installer, tu vas pas lui dire "ah c'est pas le bon soft", bref je
l'ai
> fait il est vrai à la manière d'une patate (pas de jeu de mots
> messieurs-dames).
>
> Bon quand j'ai lu la bête, je n'ai pas du tout pensé que cela allait tout
> m'effacer.
> D'ailleurs elle demande à être root pour pouvoir fonctionner.
>
> Bon je suis certainement piètre informaticien aux yeux de certains mais
là,
> il y a du piètre développement. Enfin, c'était développé pour la 5.2,
donc
> les choses,
> les concepts ont certainement evolués depuis.
>
> Et bien soit, je reprends depuis zero, et je vais tenter de monter un
> système juste.