mercredi 24 août 2016

Comment Chrooter un système Linux - Mot de Passe perdu

Comment Chrooter un système Linux




Introduction



Que veut dire chrooter ?
Et bien chrooter est un verbe qui vient du mot chroot.

man chroot:
chroot - exécuter une commande ou un shell interactif avec un répertoire racine spécial


En d'autres termes, la commande chroot permet de changer le répertoire racine vers un nouvel emplacement.
Pour information, chroot est un acronyme de Change Root, changer de racine.

Chroot peut être utilisé dans deux cas :
  • En tant que bascule d'environnement pour prendre le contrôle d'une installation Linux depuis un autre système.
  • En tant que prison pour empêcher un utilisateur de remonter dans l'arborescence pour l'emprisonner dans un répertoire spécifique (ce qui peut être utilisé avec un serveur FTP pour que les utilisateurs ne remontent pas dans l'arborescence du système)


Je vais traiter dans cette page la première partie.


A quoi cela peut bien servir



Et bien, avec grub2, il est souvent impossible de l'installer sur la partition racine depuis le média d'installation.
Si vous avez un autre gestionnaire d'amorçage et que vous ne voulez pas l'écraser, le chroot peut être utile.
Le chroot peut aider à écraser le mot de passe root si vous l'avez perdu.
Récupérer un système endommagé.
Et bien d'autres utilisations ....


Recommandations



Nous allons chrooter ici un système installé sur un disque dur depuis un CD Live de la même distribution.
J'ai fait mes tests sur une Mageia 3 64bits.
Il est recommandé d’utiliser donc un Live DVD de la même distribution avec la même architecture et le même environnement de bureau.


C'est parti, chrootons



Dans un premier temps, booter sur le Live CD ou Live DVD de la distribution adéquate.
Si nous voulons chrooter notre distribution installée sur le disque dur et qu'il s'agit d'une Mageia 3 KDE 64bits, prendre le Live DVD Mageia 3 64bits KDE.
S'il s'agit d'une Ubuntu 32bits, prenez une Ubuntu 32bits Live CD.

Une fois sur le bureau, se connecter en root dans une console.

Maintenant, les choses sérieuses commencent.

Dans un premier temps, on prépare notre future arborescence :

Code BASH :
mkdir /aa


Ensuite, on va monter notre racine dans la future arborescence :

Dans cet exemple, je suppose que /dev/sda1 est la partition racine de mon système installé sur disque dur.
Remplacer évidemment en fonction de votre cas.


Code BASH :
mount /dev/sda1 /aa


Ensuite, montez si vous en avez l'utilité d'autres partitions (/home ou /var si vous avez un /var séparé, /usr si vous avez un /usr séparé etc ... )
Exemple avec /home en /dev/sda2

Code BASH :
mount /dev/sda2 /aa/home


Ensuite, il ne faut pas oublier de monter les dossiers spéciaux nécessaires au fonctionnement du système :

Code BASH :
mount --bind /dev /aa/dev
mount -t proc /proc /aa/proc
mount -t sysfs /sys /aa/sys


Enfin, basculer vers le nouveau système avec la commande chroot :

Code BASH :
chroot /aa /bin/bash 


Le prompt change alors et vous êtes prêts à utiliser votre distribution qui est installée sur le disque dur 


Et quand j'ai fini, je déchroot ?



Et bien Oui, il est préférable, une fois les opérations terminées de démonter notre chroot.

Quitter le système chrooté avec la commande

Code BASH :
exit


Puis une fois revenu sur le système live, démonter tous les systèmes de fichiers précédemment montés :

Commencer par les dossiers spéciaux :

Code BASH :
umount /aa/dev
umount /aa/proc
umount /aa/sys


Puis par les partitions additionnelles :

Code BASH :
umount /aa/home


Et enfin la racine :

Code BASH :
umount /aa



Exemple de tâches faites sous système chrooté




Installation de GRUB2 sur la partition racine



J'ai sur ma machine plusieurs systèmes (deux Linux).
Une Mageia dont la partition racine est /dev/sda1, et une Calculate Linux dont la partition racine s'appelle /dev/sda6

Je souhaite conserver GRUB de Mageia sur mon MBR, et d'installer le GRUB2 de Calculate sur sa partition racine.
Je ferai un chainage sur le GRUB de Mageia vers la partition /dev/sda6

J'ai donc installé ma Calculate Linux avec / sur /dev/sda6, sans installer GRUB2.

J'ai chrooté avec le live DVD le système Calculate Linux comme indiqué précédemment.

Il m'a juste fallu installer GRUB2 sur le / de Calculate.

Dans mon système chrooté :

Code BASH :
grub-install -f /dev/sda6


Et l'affaire est réglée. 

Réinstaller GRUB2 sur le MBR



Si une mise à jour de Windows 8 vers 8.1 vous a cassé le GRUB qui était sur le MBR, voici comment procéder.

Il faut chrooter comme indiqué précédemment.

Puis pour réinstaller GRUB2 sur le MBR :

Code BASH :
grub-install -f /dev/sda


Et l'affaire est réglée. 


Mot de passe root perdu



Si vous avez perdu le mot de passe root, et que vous avez accès à votre machine physiquement, cette astuce est pour vous !

Chrootez le système comme vu précédemment.

Une fois dans le système chrooté, saisissez :

Code BASH :
passwd


Et saisissez deux fois le nouveau mot de passe root !

Et voila, c'était facile hein

---

Personnellement j'ai fait un chroot sur Kubuntu 15.04 avec Mandriva 2010 Live.
Ma manipulation était de réinitialiser le mot de passe du système que j'avais oublié.

source de la page :

lundi 27 février 2012

Comment Renommer le nom des fichiers en minuscule sous une structure Linux


Comment Renommer le nom des fichiers en minuscule sous une structure Linux




rename 'y/A-Z/a-z/' *.txt


(En Récursif) avec la commande find pour les fichiers
find ./ -type f -exec rename 'y/A-Z/a-z/' {} \;



(En Récursif) avec la commande find pour les répertoires

find ./ -type d -exec rename 'y/A-Z/a-z/' {} \;



Pour ceux qui aime les boucle FOR

Pour les fichiers des sous répertoire
for i in `find -type f`; do mv "$i" "$(echo $i | tr A-Z a-z)"; done


pour les répertoires:
for i in `find -type d`; do mv "$i" "$(echo $i | tr A-Z a-z)"; done



mardi 8 novembre 2011

Comment effacer tous les répertoires vides dans une structure Linux

Comment effacer tous les répertoires vides dans une structure Linux

find . -type d -empty -print -delete





Comment effacer tous les liens dans une structure de répertoire sous Linux


Comment effacer tous les liens dans une structure de répertoire sous Linux



find .  -type l -print -exec rm {} \;


Comment Afficher tous les liens dans une structure de répertoire sous Linux

find .  -type l -print

dimanche 6 novembre 2011

Comment faire une Sauvegarde de plusieurs Base de données MySQL

Comment faire une Sauvegarde de plusieurs Base de données MySQL

 ou

Comment faire un Dump de toutes les bases d'un serveur MySQL dans des fichiers multiples

 

Si vous avez sous la main un serveur abritant plusieurs (dizaines, voir centaines de) bases de données, le jour où une des bases de données plante et qu'on vous demande de la restaurer, je vous souhaite bien du courage si vous n'avez qu'un résultat de mysqldump --all-databases sous la main.

Afin de pallier ce problème, j'ai écris ce script bash qui vous facilitera bien la vie !
Au programme :
  • sauvegarde des dump de chaque base dans des fichiers séparés compressés en gzip, eux même situés dans un dossier nommé en fonction de la date
  • suppression automatique du dump effectué il y a 7 jours.
Le script est destiné à être exécuté par un cron, par exemple toutes les nuits.

 CODE :

#!/bin/bash

#paramètres de configuration du script
#completer ici par le nom d'un utilisateur autorisé à dumper toutes vos bases :
strMysqlUser=""
#completer ici par le mot de passe de cet utilisateur :
strPassword=""
# completer ici par le chemin vers le repertoire de travail où va se trouver le dump
# il est possible de préfixer le répertoire  :
# "/rep/de/travail/prefix_" donnera alors /rep/de/travail/prefix_20070505
repTravail=""


#mémorisation de la date du jour et de la date d'il y a 7 jours
dateActuelle=$(date +%Y%m%d)
datePassee=$(date --date '7 days ago' +%Y%m%d)

#Suppression de la sauvegarde d'il y a 7 jours
echo "["$(date +%F\ %X)"] Suppression des dump du "$datePassee
repTravailPasse=$repTravail$datePassee
rm -R $repTravailPasse

# début du dump
echo "["$(date +%F\ %X)"] Dump du : "$dateActuelle
repTravailActuel=$repTravail$dateActuelle
mkdir $repTravailActuel
# récupération de la liste des bdd, "tail -n +2" est présent pour ne pas récupérer le titre "Databases" renvoyé par mysql
listDatabase=$(mysql --user=$strMysqlUser --password=$strPassword --exec="SHOW DATABASES;" |  tail -n +2)

#dump de chaque base dans un fichier
for lineDatabase in $listDatabase
do
    echo "["$(date +%F\ %X)"] Debut du dump de la base "$lineDatabase" vers "$repTravailActuel
    mysqldump --user="$strMysqlUser" --password="$strPassword" "$lineDatabase" | gzip > "$repTravailActuel"/"$lineDatabase".sql.gz
    echo "["$(date +%F\ %X)"] Dump compressé dans "$repTravailActuel"/"$lineDatabase".sql.gz"
done
echo "["$(date +%F\ %X)"] Fin de la sauvegarde"
exit 0




Source : http://snippets.prendreuncafe.com/snippet/67