La bonne commande au mauvais endroit

Personne n’est parfait et tout le monde peut faire des erreurs. Aujourd’hui, je vais vous parler d’une grosse erreur que j’ai faite récemment.

Tout commence un vendredi, sur un serveur en prod, suite à un mail d’utilisateur, je dois modifier les droits sur un dossier.

Donc , je fait un :

ls -l dossier

Et je vois clairement qu’en effet, les droits ne sont pas bons, et donc je tape ma commande puis je valide :

chmod 755 * -R

Et c’est le drame ….

Sans le réaliser, j’avais tapé ma commande au mauvais endroit.

Je me suis donc retrouver avec des droits en 755 sur ……. le /var

Évidemment, suite à cette action, le SSH ou le site web hébergé sur le serveur n’était plus accessible.

Heureusement, ma session SSH n’était pas coupée, ce qui laissait une chance de rattraper ce fail.

Et évidemment, il n’est pas question de juste donner tous les droits à tous les dossiers. Sous Linux, avoir trop de droits crée les mêmes problèmes que de ne pas en avoir assez, rien ne fonctionne.

Après la remise manuelle des bons droits sur les fichiers liés au SSH, en comparant à un autre serveur, la connexion est de nouveau accessible, mais le problème est loin d’être réglé.

Une fois la panique passée, une solution est apparue:

La solution

Après quelques recherches, j’ai trouvé que l’automatisation de la remise en place des droits était possible.

Etape 1 :

Sur un serveur fonctionnel, je saisis la commande suivante :

find /var -printf '%m/%h/%f\n' >fichier.txt

Elle permet de lister tous les fichiers et dossiers du /var ainsi que leurs droits dans un fichier txt.

Etape 2 :

Une fois le fichier texte mis sur le serveur à problème, on écrit un petit script afin d’utiliser cette liste :

while read line;
do
DROITS=${line%%/*}
FICHIER=${line#*/}
chmod ${DROITS} "${FICHIER}"
done <fichier.txt

Puis, au bout de quelques minutes, les droits étaient en majorité rétablis et tout fonctionnait à nouveau.

Moralité

En plus du classique : « Le vendredi, jamais d’action en prod », j’ajouterais qu’il faut toujours prendre le temps de se relire, ne jamais travailler en étant en root directement et surtout, SURTOUT, paniquer n’apporte rien. En cas de problème, il faut toujours prendre du recul afin de réfléchir posément, sinon on patine inutilement.