close

Linux/Unix

Linux/Unix

Transfère des fichiers sous linux : scp, tftp et rsync

Nous allons voir dans cet article les différents outils qui permet de transférer les fichiers d’une machine linux à une autre :

1 – SCP :

SCP (Secure CoPy) est une commande de ssh qui permet un transfère des fichiers sécurisé entre les machines linux.

-Copier un fichier de votre ordinateur vers un autre :

Pour copier un fichier depuis votre ordinateur vers un serveur  avec scp utiliser la commande suivante :

# scp image.png root@linuxSV:/home/user1/document

-Copier un fichier depuis un serveur vers votre ordinateur :

Nous pouvons également faire le contraire, c’est-à-dire récupérer un fichier qui se trouve sur un serveur, pour cela utiliser la commande suivante :

# scp root@linuxSV:/etc/files/image223 /home/us/mes-documents

Pour pouvoir récupérer le contenu d’un répertoire, utilisez l’option -r :

# scp -r root@linuxSV:/var/log /home/us/mes-logs

La commande ci-dessus permet de copier le contenu du répertoire /var/log du serveur “LinuxSV” vers le répertoire /home/us/mes-logs de votre ordinateur.

2 – rsync :

L’outils rsync est un autre moyen de copier les fichiers de façon sécuriser entre deux système. rsync est différent de scp, il permet de synchroniser deux répertoires, c’est à dire qu’il copie uniquement la différence alors que scp copier tout le contenu.

-Copier un fichier de votre ordinateur vers un autre :

#rsync -av /home/us/mes-logs  root@linuxSV:/tmp

-Copier un fichier depuis un serveur vers votre ordinateur :

#rsync -av root@linuxSV:/tmp /home/us/mes-logs

3 – sftp :

sftp ( Secure File Transfer Protocol ) est un outil interactif, faisant partie de ssh, qui permet de transférer et récupérer les fichiers de façon sécurisé.

Un client SFTP se comporte comme un client FTP classique, où vous avez une vue sur les répertoires et les fichiers, et où vous pouvez déposer, extraire… des fichiers avec les mêmes commandes que FTP.

Pour établir une session sftp, taper la commande ci-dessous :

# sftp serverLinux

La session sftp acceptes plusieurs commandes comme ls, cd, mkdir, rmdir, pwd, ainsi que la commande get qui permet de récupérer un fichier et put pour l’uploader.

Nous allons ici uploader  le fichier /var/log/log-2018 vers le serveur à distance et le mettre dans le répertoire /home/user1:

sftp> cd /home/user1 
sftp> put /var/log/log-2018 
Uploading /var/log/log-2018 to /home/user1 /var/log/log-2018             100%     227    0.5KB/s     00:23 
sftp>

Et pour récupérer un fichier, utiliser la commande get :

sftp> get /etc/fstab

 

 

 

 

read more
FeaturedLinux/UnixSystème

syslog : La journalisation sous linux

La journalisation ( historique des événements) est un moyen que les systèmes d’exploitation utilise pour enregistrer toutes les actions d’un événement qui a eu lieu (exécution d’un processus, activité réseau etc ), permettant ainsi de localiser plus rapidement les défaillance d’un système.

Supposant que vous n’arrivez pas à démarrer le service http, ce dernier va envoyer un message vers un fichier log, il faut alors vérifier ce fichier pour connaitre la raison.

Ce processus est géré par un système de journalisation appelé syslog, c’est ce que nous allons découvrir dans cet article.

Syslog est un protocole développé dans les années 1980, qui permet de collecter les messages des services qui tournent sur linux et les enregistrer dans des fichiers appelés “fichiers log” ( logs files en anglais ), c’est fichiers sont placé dans /var/log.

Syslog permet de filtrer les messages et les stocke dans /var/log par type de message.
Voyons voir les les fichiers logs présents dans /var/log :

-/var/log/secure

-/var/log/maillog

-/var/log/cron

-/var/log/boot.log

-/var/log/messages

/var/log/secure :
Syslog stocke dans le fichier de log “secure” tous les messages liée à la sécurité y compris ceux de l’authentification.

/var/log/maillog:
Syslog stocke les message liée au messagerie.

/var/log/cron :
Contient tous les message liée au démarrage du système.

-/var/log/boot.log :
Contient tous les message liée au démarrage du système.

/var/log/messages :
La plupart des messages log sont enregistré dans le fichier /var/log/messages, sauf les type de messages qu’on a vu précédemment.

Je vous suggère de jeter un coup d’œil sur votre /var/log pour avoir une idée 😉 .

Voyons voir maintenant le fonctionnement de syslog.

Facility & priority :

Pour comprendre le fonctionnement de syslog nous allons étudier son fichier de configuration : /etc/syslog.conf, en voici un extrait :

# Log all kernel messages, authentication messages of
# level notice or higher and anything of level err or
# higher to the console.
# Don't log private authentication messages!
*.err;kern.*;auth.notice;authpriv.none /dev/console

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none         /var/log/messages

# The authpriv file has restricted access.
authpriv.*                             /var/log/secure

# Log all the mail messages in one place.
mail.*                                 /var/log/maillog

# Everybody gets emergency messages, plus log them on
# another machine.
*.emerg                    *
*.emerg                    @arpa.berkeley.edu

# Root and Eric get alert and higher messages.
*.alert                    root,eric

# Save mail and news errors of level err and higher in a
# special file.
uucp,news.crit             /var/log/spoolerr

Comme vous pouvez le constater, les lignes du fichier ‘syslog.conf’ est de cette forme : XXXX.YYYY, dont :   XXXX=Facility et YYYY=Priorité

Exemple :
authpriv.*          /var/log/secure
mail.*                 /var/log/maillog

Que signifie Facility et Priorité ?

Les programmes utilisent syslog pour enregistre leurs événements et ces éventement sont caractérisé par Facility et Priorité.

La Priorité indique la criticité du message généré par un programme, Le tableau ci-dessous présentes la liste des priorité syslog :

-La facilty indique le type de message généré par un programme, le tableau ci-dessous présente ces types de message :

NB :
Noter que Facility et Priority d’un message est déterminé par le programme qui génère le message et pas par syslog.

Devant chaque “Facility.Priority” est indiqué le fichier sur lequel syslog enregistre les messages.

NB : un wildcard ( * ) peut être utilisé pour indiquer toute les Facility ou Priority : mail.* 

Voyons voir des exemples pour que les choses soit bien claire :

authpriv.*            /var/log/secure     :   Ici toute les messages liée à l’authentification ( authpriv ) et quelque soient leur sévérité ( * )seront être enregistré sur /var/log/secure.

-cron.crit        /var/cron : Les messages critique ( crit ) de type Cron seront enregistrer sur /var/cron.

La rotation de log :

Comme nous avons vu précedement, le système et les application installés sur le serveur génèrent des logs et avec le temps vous pouvez vous retrouver avec des dizaines voir des centaines de gigaoctets de logs donc des partition satuées.

Pour éviter ce désagréments, une Rotation de log est effectuée.

Qu’est ce que la Rotation de log ?

Lorsqu’une rotation de log est effectuée, le fichier log est renommé avec une extention indiquant la date de la rotation, par exemple le fichier /var/log/messages devient /var/log/messages-20181018, cela veut dire que la rotation du fichier a été effectué le 2018-10-18. une fois la rotation est effectué un nouveau fichier log est créé (/var/log/messages) pour permettre au programme ou bien le système de continuer d’écrire sur le fichier.

Après un certain nombre de rotation, le fichier log le plus ancien est supprimé afin de libérer de l’espace et éviter ainsi la saturation du système du fichier.

La rotation de log est géré par un programe appelé Logrotate et un cron job exécute le programme Logrotate quotidiennement pour vérifier s’il y a besoin de faire la rotation.

Je vous invite à jeter un coup d’œil sur votre répertoire /var/log/, vous allez trouver plusieurs fichiers log auquels  la rotation de log a été effectué :

Analyser les enregistrements de syslog :

Tous les enregistrements sur les fichiers log gérés par syslog sont dans un format standard. Ci-dessous un extrait du fichier log /var/log/cron :

Les entrée sont dans le format suivant :

1Nov 14 12:01:23   2localhost   3run-parts(/etc/cron.daily)[1962] : 4starting logrotate
  1. L’horodatage : date et heure de l’entréé.
  2. Le host depuis lequel le message est envoyé ( ici la machine local ).
  3. Le programme ou le service qui a envoyé le message ( ici c’est Cron ).
  4. Le message envoyé.

Envoyer un message syslog avec “logger” :

Et ouii vous pouvez vous aussi envoyer vos propres message log vers syslog 🙂 .
C’est très utils lorsque vous dévoloppez du soft et tout simplement pour tester si le syslog fonctionne.

Pour envoyer un message syslog, on utlise la commande logger.
Par défaut logger envoie un message en utilisant la facility “user” avec la séverité “notice” mais vous pouvez spécifier ce que vous voulez avec l’option -p .

Je souhaite envoyer un message à syslog pour l’enregister dans le fichier log /var/log/boot.log :

logger -p local7.warning "mon message dans syslog"

Et voilâ c’est terminé, j’espère que c’est claire pour vous et noubliez pas : Votre premier réflexe est de regarder syslog quand quelque chose va mal sur votre serveur 😉 .

 

 

 

 

 

 

 

 

 

 

 

 

read more
Linux/UnixSystème

Virsh : La gestion des Vm en ligne de commande

Virsh est un utilitaire qui permet de gérer les machine virtuelle en ligne de commande et opère comme une alternative à l’outil graphique Virt-manager.

virsh est présent dans l’utilitaire libvirt ( Cliquer ici pour voir comment installer libvirt )

Dans l’article de KVM, nous avons vu comment créer une machine virtuelle avec virsh, dans cet article nous allons voir les commandes de virsh les plus utilisé pour gérer vos vm :

-Pour créer une nouvelle machine virtuelle à partir de la définition XML d’une machine déja installé :

# virsh create <Chemin du fichier XML>

-Pour se connectez à l’hyperviseur :

# virsh -c qemu:///system

-Pour voir la liste de toute les machines actives :

# virsh list 

-Pour voir la liste de toute les machines inactives :

# virsh list --inactive

-Pour voir la liste de toute les machines actives et inactives :

# virsh list --all

-Pour démarrer une machine virtuelle :

# virsh start nom_vm

-Pour redémarre une machine virtuelle :

# virsh shutdown nom_vm

-Pour forcer l’arrêt d’une VM :

# virsh destroy nom_vm

-Pour forcer l’arrêt d’une VM :

# virsh destroy nom_vm

-Pour mettre en pause une VM:

# virsh suspend nom_vm

-Pour reprendre une VM suspendue :

# virsh resume nom_vm

-Pour afficher les informations d’une machine virtuelle :

# virsh dominfo nom-vm

-Pour voir tous les réseau virtuels (actif et inactifs):

# virsh list-net --all

-Pour voir tous les réseau virtuels actif :

# virsh list-net 

-Pour voir les informations d’un réseau virtuel :

# virsh net-info nom_reseau

-Pour voir les informations du fichier xml d’un réseau virtuel :

#virsh net-dumpxml nom_reseau

-Pour désactiver un réseau virtuel :

# virsh net-destroy nom_reseau

-Pour activer un réseau virtuel :

# virsh net-start default 

 

 

 

 

 

 

 

read more
Linux/UnixSystème

Virt-manager : Gérer vos vm facilement

Nous avons vu dans l’article de KVM la création des Vm avec l’outils graphique virt-manager, dans cet article nous allons voir la partie réseau et stockage de virt-manager.

L’onglet réseau virtuel :

L’onglet Réseaux virtuels nous permet de configurer différents types de réseaux virtuels et de surveiller leur statut :

Ci-dessous les types de réseau virtuel que nous pourrons configurer :

  • NATed
  • Routed
  • Isolated

NATed virtual network :

Un réseau virtuel basé sur NAT fournit une connectivité réseau externe à la Machines virtuelles. Cela signifie que les machines virtuelles peuvent communiquer avec le réseau extérieur en fonction de la connectivité réseau disponible sur l’hôte, mais aucune des entités extérieures ne pourra communiquer avec les machines virtuelles. Dans cette configuration, les machines virtuelles et l’hôte doivent pouvoir communiquer entre eux via l’interface du pont Configuré sur l’hôte.

Routed virtual network :

Un réseau virtuel routé permet la connexion de machines virtuelles directement au réseau physique. Ici, les machines virtuelles envoient les paquets vers le réseau extérieur en fonction des règles de routage définies sur l’hyperviseur.

Isolated virtual network :

Comme son nom l’indique, cela fournit un réseau privé entre l’hyperviseur et les machines virtuelles.

Le réseau virtuel par défaut :

Le réseau virtuel par défaut créé est un NAT comme montre l’image ci-dessous :

Il permet aux machines virtuelles de communiquer avec les réseaux extérieurs indépendamment de l’interface réseau active (Ethernet, sans fil, VPN, etc.) disponible sur l’hyperviseur, Il fournit également un réseau privé avec IP et un serveur DHCP afin que les machines virtuelles obtiennent leurs adresses IP automatiquement.

Virt-manager nous fournit quelques information par rapport à ce réseau ;

Default est le nom du réseau virtuel. Ceci est fourni lorsque vous Créer un réseau virtuel.
Périphérique : Représente le nom du pont créé sur l’hôte. L’interface de pont est le composant principal pour créer des réseaux virtuels.
Etat :  Représente l’état du réseau virtuel. Il peut être actif ou inactif.
Démarrage automatique : Indique si le réseau virtuel doit être démarré lorsque vous activez le service libvirtd.
-IPv4 configuration : Fournit les détails du réseau privé, la plage DHCP qui sera fournie aux machines virtuelles et le mode de transfert. Le mode de transfert peut être NAT ou isolé.

Nous pouvons voir aussi tous les réseau virtuels créé avec virsh :

# virsh list-net --all

–all est utilisé pour lister les réseaux virtuels actifs et inactifs. Si –all n’est pas spécifié, seuls les réseaux virtuels actifs seront listés.

Vous pouvez également voir les détails d’un réseau à l’aide de virsh avec les commande ci-dessous :

# virsh net-info nom_réseau
# virsh net-dupxml nom_réseau

Vous pouvez arrêter le réseau par défaut à l’aide du bouton “Arrêter le réseau” rouge et le démarrer a nouveau à l’aide du bouton “Démarrer le réseau”. Le bouton + sert à créer les réseaux virtuels :

En ligne de commande :

-Pour désactiver Le réseau “default” :

# virsh net-destroy default

-Pour Activer Le réseau “default” :

# virsh net-start default 

Note :

Les fichiers de configuration du réseau virtuel sont stockés dans            /etc/libvirt/qemu/networks en tant que fichiers XML.

Onglet Stockage :

Cet onglet vous permet de configurer différents types de pools de stockage et de surveiller leur état. La capture d’écran suivante montre l’onglet Stockage:

Un pool de stockage est juste un stock pour les images de disque de machines virtuelles sauvegardées, et l’onglet Stockage fournit des détails sur les pools de stockage disponibles.

Default est le nom du pool de stockage de fichiers créé par libvirt pour stocker son fichier image de machine virtuelle. L’emplacement de ce pool de stockage se trouve dans /var/lib/libvirt/images.

Virt-manager nous permet de créer facilement de nouvelles machines virtuelles, les surveiller et effectuer des modifications de configuration en cas de besoin cependant il faux aussi maîtriser son alternative virsh qui vous sera très utile si vous travailler sur un environnement sans interface graphique.

Je vous invite alors de lire cet article qui présente les commandes de virsh les plus utilisé.

read more
FeaturedLinux/UnixSystème

KVM : Maîtriser la mis en place de l’hyperviseur KVM

KVM pour “Kernel Virtual Machine” est une Technologie de virtualisation Open Source qui permet de transformer un système linux à un Hyperviseur.
Nous allons voir dans cet article la mise en place d’un Hyperviseur KVM et comment vous pouvez créer et gérer vos machine virtuelle.
Croyez-moi Créer un Hyperviseur KVM n’est pas si compliqué, ils vous suffit de suivre cet article jusqu’à la fin 😉 .

NB : Dans cet article je vais utiliser la distribution Ubuntu, c’est presque la même pour toute les distribution.

Avant de commencer, Pour ceux qui ne savent pas ce que c’est un Hyperviseur, je leurs recommande de lire cet article ou bien pour ceux qui n’aime pas trop lire, je vous ai préparer ce vidéo :

KVM est d’un module de noyau linux, c-à-d qu’il s’installe au niveau du noyau d’un système linux et une fois installé il transforme ce noyau à un Hyperviseur.
KVM est intégré aux noyaux Linux supérieures ou égales au version 2.6.20 et distribuée sous licence GPLv2 ou LGPL.

La société israélienne Qumranet, une société israélienne spécialisée en technologies de virtualisation était à l’origine de la solution KVM. la société a été racheté par la suite par Red Hat Entreprise, Ainsi Red Hat deviens le principal contributeur de KVM.
 

Configuration requis pour l’hyperviseur KVM :

Pour que vous puissiez installer l’hyperviseur KVM, il faut que le processeur support la technologie de la virtualisation VT-x des processeur Intel ou SVM des processeur AMD. Cette technologie permet aux postes de travail équipés de processeurs Intel ou AMD d’exécuter de multiples systèmes d’exploitation et d’applications sur une seul machine unique.

Ainsi Avant de procéder à l’installation et créer notre Hyperviseur KVM,  il faut s’assurer  que le CPU supporte bien cette technologie de virtualisation.

 

C’est très simple, il suffit de rechercher les mots « vmx » ou « svm » dans le fichier /proc/cpuinfo qui contient toute les informations de votre CPU.

Voici la commande que je vous propose :

# grep -E 'vmx|svm' /proc/cpuinfo &>/dev/null && echo "La virtualisation est possible sur cette machine." || echo "Le microprocesseur de cette machine ne permet pas d'utiliser la virtualisation avec KVM."

Si le CPU support la virtualisation, le message “La virtualisation est possible sur cette machine ” s’affiche, sinon c’est le message “Le microprocesseur de cette machine ne permet pas d’utiliser la virtualisation avec KVM ” qui s’affiche.

Quelques Vérification avant de procéder à l’installation  :

J’ai mentionné que KVM est intégré aux noyaux Linux supérieures ou égales au version 2.6.20, donc pas besoin de l’installer ;).

-Vérifier la version de votre en tapant la commande :

# uname -a

-Vérifiez que les modules KVM sont bien disponibles sur votre distribution :

# find /lib/modules/`uname -r` -iname "*kvm*"

-Autre alternative est de faire la vérification depuis la configuration noyau ( l’emplacement du fichier noyau dépend de votre distribution ):

# grep KVM /boot/config-2.6.38-2-amd64

Libvirt :

Maintenant que nous avons vérifié que notre CPU support bien la technologie de la virtualisation, nous aurons besoin d’une bibliothèque excrément importante qui permet de gérer les machines virtuelles, c’est Libvirt.

 

Il s’agit d’un ensemble de logiciels qui permet de faciliter la gestion des machine virtuelle ( Création, modification, suppression, migration, etc ) de plusieurs hyperviseur, et oui plusieurs hyperviseur pas seulement KVM 🙂 .

Libvirt a été développé par Red Hat pour interagir avec plusieurs Hyperviseur comme KVM. En voici quelques un :

-KVM
-Hyperviseur Xen
-OpenVZ
-VMware ESX

Pour qu’on puisse gérer nos VMs ( Création, modification, Migration, etc ) Nous allons utiliser deux outils de gestion : Virsh et Virt-manager. (d’autre outils de gestion existent comme OpenStack et oVirt )

Ces deux outils de gestion utilise Libvirt pour gérer les VM d’un hyperviseur compatible avec libvirt. Pour comprendre La relation entra les outils de gestion,Libvirt et les hyperviseur je vous ai préparer l’image ci-dessous :

 

Comme vous pouvez le constater sur l’image, les outils de gestion comme ( Virsh, virt-manager ) utilise la bibliothèque Libvirt pour gérer les hyperviseurs comme KVM,LXC,Xen, ESX.

Tout est claire maintenant j’imagine 🙂 .

Maintenant que nous savons ce que c’est KVM et libvirt nous allons voir la procédure pour installer tous les packages nécessaires pour installer un Hyperviseur KVM.

Les packages requis pour la mise en place d’un environnement de virtualisation KVM sont : libvirt, qemu-kvm, et  virt-manager.

# apt-get install qemu-kvm libvirt-bin virt-manager

Libvirt et virt-manager vous les connaissez déjà mais qemu-kvm, ça c’est nouveau.

Qemu :

Pour comprendre à quoi sert le package qemu-kvm il faut comprendre ce que c’est l’émulateur Qemu.

C’est quoi déja un émulateur ?

Pour que vous puissiez jouer aux anciens jeux de Nintendo sur votre ordinateur il vous faut d’abord installer un émulateur sur votre PC.

Car les jeux de Nintendo ont été conçus pour tourner sur les architectures des consoles Nintendo et puisque cette architecture est différente de celle de votre PC, ils ne peuvent pas y tourner. C’est pour cela qu’il faut un émulateur installé sur votre PC pour créer un environnement similaire aux consoles Nintendo.

Et bien Qemu fait la même chose, il permet d’émuler plusieurs architecture comme x86 de Intel, ARM et PowerPC d’IBM pour que vous puissiez tourner différente système d’exploitation.

Qemu-KVM est un Qemu modifié qui permet accélérer les jeux instructions.

Maintenant que les chose sont claire, nous allons passer à la création de nos VM ;).

Création des machines virtuelles :

Avec Virt-manager :

Virt-manager (Virtual Machine Manager) est une application qui permet la gestion des machines virtuelle via libvirt.
Avec son interface graphique simple, on peut facilement créer de nouvelles machines virtuelles, les surveiller et effectuer des modifications de configuration en cas de besoin.

Avant de commencer de créer une VM, il faut s’assurer que Virt-manager est bien connecté au Qemu-KVM, pour cela, après avoir démarré l’application,  faut que
‘Qemu-kvm’ doit être affiché comme montre l’image ci-dessous :

Si ce n’est pas le cas, il faut cliquer sur ‘Ajouter une connexion’ et ensuite ajouter ‘QEMU/KVM’ dans la zone Hyperviseur :

Nous allons créer une machine virtuelle dont l’os est Debian .
Pour démarrer virt-manager, il suffi de taper la commande virt-manager :

et notre interface Virt-manager s’affiche :

-Cliquer sur fichier/Nouvelle VM et sélectionner le 1er choix ( car nous allons procéder à une installation via image ISO )  :

-Sélectionner votre image ISO :

-Ensuite vous choisissez les ressource de la VM, voici la configuration qu j’ai choisie :

-RAM = 1Go
-CPU = 1
-La taille du disque : 10GiB

-Le nom que j’ai donnée à la machine est Debian-vm

-Le réseau sélectionné est NAT ( C’est le réseau virtuel par défaut )

-Et enfin cliquer sur Terminer, Virt-manager vous indique que votre VM est en cours d’installation :

-On ouvre ensuite la console pour procéder à l’installation de l’OS :

-Notre Vm est maintenant fonctionnelle :

Avec virsh :

Si vous vous rappelez bien, on a déjà parler de virsh, qui est un utilitaire qui permet de gérer les machine virtuelle et opère comme une alternative à l’outil graphique Virt-manager.
Contrairement à Virt-manager, Il n’ y a pas un moyen pour installer une nouvelle Vm avec virsh, Vous pouvez créer une nouvelle machine virtuelle à partir de la définition XML d’une machine déja installé en utilisant la commande ci-dessous :
#virsh create <Chemin du fichier XML>

Mais nous vous inquiétez, pour installer une nouvelle vm en ligne de commande, autre alternative est à votre service :  Virt-install  😉

Avec Virt-install :

Virt-install est un outil de ligne de commande interactif qui permet  d’installer une Vm et puis lancez le processus d’installation.

Avant de démarrer l’installation du système d’exploitation à l’aide de la commande virt-install, il est nécessaire d’avoir un disque virtuel créé. Pour créer un disque virtuel, Nous allons utiliser la commande qemu-img.

Nous allons créer un disque de 10 Go avec le format du disque raw:

# qemu-img create -f raw -o size=10G /var/lib/libvirt/qemu/debian-vm.img

Ensuite on démarre virt-install avec la commande ci-dessous :

virt-install  --name Debian-vm   --ram 1024  --disk path=./var/lib/libvirt/qemu/debian-vm.img --vcpus 1 --os-type linux --network bridge=virbr0 --graphics vnc,port=5999 --console pty,target_type=serial --cdrom ./debian.iso

Tout comme avec le Virtual Machine Manager, après avoir créé la machine virtuel on doit lancé la console pour suivre l’installation avec la commande :

Félicitation, vous venez d’installer votre hyperviseur KVM avec une machine virtuelle 😉

Maintenant nous allons revenir à notre fameux gestionnaire graphique Virt-manager car nous en avons pas encore fini encore avec 😉 .

cliquer ici pour lire la suite.

 

 

read more
Linux/Unix

find et locate : La différence entre les deux commandes

find et locate sont deux commandes qui permettent de localiser les fichiers sur un système d’exploitation linux, par contre ça ne fonctionnent pas de la même façon. Dans cet article nous allons voir la différence entre ces deux commandes et la manière dont elles opèrent.

-find :

La commande find permet de chercher un fichier ou dossier au sein d’une arborescence, si vous voulez par exemple chercher un fichier dont le nome est “mon_fichier” dans le répertoire /home, la commande find va effectuer une recherche au sein de ce répertoire  et dans tous ses sous répertoires :

root@serLinux:~# find /var/log -type f -name messages

Le temps que la commande find prend pour effectuer une recherche dépend de l’arborescence choisie. Si vous effectuez une recherche à partir de la racine “/”, c’est donc dans toute l’arborescence, ça va être long qu’une recherche au sein d’un répertoire comme /home.

la commande find accepte plusieurs options, contrairement à locate, permettant une recherche précise.

En voici quelques exemples pratiques.

-locate :

Contrairement à find, la commande locate ne cherche pas les fichiers au sein d’une arborescence mais dans une base de données.
Cette base de donnée stocke les informations des noms des fichiers existants et leurs arborescences.

root@serLinux:~# locate document.txt
/home/admin/labo/document.txt

L’inconvénient de la commande locate est que les informations des fichiers récents que vous venez de créer ne sont pas stocké dans la base immédiatement. c’est pour cela qu’il faut mettre à jour la base de locate avec la commande updatedb :

root@serLinux:~# updatedb

Note :
Le système se charge de mettre à jour cette base de données chaque jours.

 

 

read more
Linux/Unix

Détruire le système avec rm -rf

La commande rm ( remove en anglais ) permet de supprimer les fichiers et répertoires sur linux :

Plusieurs options sont utilisées avec la commande rm, dans cet article nous n’allons voir que ceux qui nous intéresse, à savoir : -r et -f qui forment avec la commande rm l’outil pour détruire le système s’il est exécuté avec les droits root.

L’options -r :

Si vous essayez de supprimer un répertoire avec la commande rm, un message d’erreur s’affiche car la commande rm, utilisée toute seule, ne supprime que les fichiers :

Pour supprimer un répertoire et ses sous répertoires, vous devez ajouter l’option -r comme :

L’option -f :

l’option -f force la suppression des fichiers et répertoires sans que le prompt ne demande une confirmation de suppression.

 

Maintenant  imaginez si vous passiez en paramètre la racine “/” à la commande rm -rf  ( rm -rf / ), que se passera-t-il à votre avis ?

Puisque le répertoire “/” est la racine du linux c-à-d la base qui contient tous les autres dossiers et fichiers, c’est donc tous le système sera détruit .

 

Puisque une vidéo vaut mieux qu’un log discours, j’ai exécuté la commande “rm -rf /” sur une machine virtuelle ( une machine virtuelle est une bonne idée pour faire des tests comme ça votre machine physique reste protégé 😉 ) et voici le résultat :

 

 

 

 

 

read more
Linux/Unix

tune2fs : Modifier les paramètres des système de fichier ext2, ext3 et ext4

tune2fs est une commandes très utilisée par les administrateurs UNIX/linux pour modifier les paramètres des système de fichiers ext2, ext3 et ext4.

Nous allons voir dans cet article les paramètres qu’on peux modifier et qui me parait utiles de les connaitre.

avant de pouvoir modifier quoique ce soit, il faut connaitre déjà les valeurs des paramètres existantes.

Pour cela il suffit d’utiliser la commande tune2fs avec le paramètre -l :

 

Comme pourriez le constater, la commande affiche tout les valeurs des paramètres du système de fichier /etc/sda1.

Voyons voir les plus importants :

-Filesystem volume name: C’est le nom de la partition donné lors de la création du système du fichier avec mkfs ou bien avec la commande e2label.

Last mounted on : C’est le point de montage de la partition ( / dans mon cas ).

Filesystem UUID Il s’agit d’un numéro qui permet d’identifier la partition d’une façon unique

-Filesystem OS type : Le système d’exploitation installé sur la partition

Inode count : Le nombre d’inode qui existe sur la partition

Block count: Le nombre de bloc de la partition

Free incodes : Le nombres des inodes libres

Free Blocks : Le nombre des blocks libres

Block size : La taille du block

Filesystem created : La date de la création du système de fichier

Last mount time : La date de la dernière montage.

mount count : Indique combien de fois le système de fichier a été monté.

Maximum mount count : Le nombre de montage après lequel le système effectuera un check de la partition 

Comme je vous ai dis précédemment il y a  paramètres qui peuvent être changés au besoin.

Dans cet articles je vous présente les paramètres que je change souvent le plus souvent :

 

1-Maximum mount count :

Ce paramètre permet d’indiquer au programme e2fsck d’après combien de montage il peux effectuer un check à la partiton.

Exemple :

si je met 15, cela signifie qu’après le 15ème montage, e2fsck effectuera un check de la partition.

Par défaut le paramètre “Maximum mount count” est à -1, cela veux dire que le nombre de montage n’est pas pris en compte par e2fsck, en d’autre terme aucun check ne sera effectué quelque soit le nombre de montage :

Pour changer ce paramètre il suffit d’utiliser l’option -c comme ci-dessous:

Comme vous pouvez le constater le système nous dit que cela a été effectué avec succès.

Nous allons vérifier cela nous même :

Je me suis servi de la commande “grep” pour affiner ma recherche 😉 .

Et voilà notre paramètre a été bien modifié.

 

2-mount count :

Comment je peux savoir combien de fois ma partition a été monté ?

C’est en vérifiant la valeur du paramètre mount count :

 

Mais dans quel cas j’aurais besoin de modifier ce paramètre ?

 

Si par exemple le prochain redémarrage de mon système le nombre de montage de ma partition va atteindre la valeur du paramètre “Maximum mount count” donc ce cas e2fsck va effectuera un check avant de monter la partition, si je ne veux pas que cela se passe pour un X raison, je peux réinitialiser  ce paramètre à 0 et donc mentir au système pour qu’il ne fasse pas de check 😉 .

Ou bien faire le contraire , le modifier pour qu’il fasse le check 😉 .

Voici un exemple pour que vous puissiez bien comprendre :

Le nombre de montage de ma partition a atteint le maximum de nombre du montage ( 15 ) :

Donc au prochaine redémarrage de ma machine un check va être effectué sur la partition /dev/sda1 :

Supposant que j’ai besoin de redémarré mon ordinateur, ma partition est très grande et le check va prendre beaucoup du temps et mois je suis pressé, je ne veux pas alors que ce check se fasse, dans ce cas je vais réinitialiser le compteur à 0 ( ou à n’importe quelle valeur au dessous de  Maximum mount count ) :

Comme ça il y aura pas de check au prochain redémarrage 😉 .

3-Modifie la valeur de l’UUID:

La commande tune2fs permet de modifier la valeur de l’identifiant UUID ( en Hexadécimal ) qui permet d’identifier d’une façon unique la partition.

Pour cela on ajoute l’option -U :

#tune2fs -U 044cccaf-41e0-914a-ca134418db23 /dev/sda1

Un exemple vaut mieux qu’un long discoure 😉

Je voudrais changer l’id de ma partition /dev/sda1 mais avant j’aurai besoin de savoir l’ID existant, pour cela j’utilise la commande dumpe2fs:

Ensuite je change l’ancien ID par 045ccaaf-aff1-30e0-914a-ca115518db06 :

Opss!! un message d’erreur a été affiché : The UUID may only be changed when the filesystem is unmounted.

Le système nous informe que l’UUID n’a pas été modifié car la partition n’est pas démonté :).

Ainsi pour pouvoir modifié l’UUID vous devez d’abord démonter la partition avec la commande umount.

 

Pour résumer, voici une vidéo qui résume l’utilisation de la commande “tune2fs” :

 

read more
Linux/Unix

dumpe2fs : Afficher les informations d’un Système de fichier

Il arrive par fois, sur les système Unix/linux, d’avoir besoin de savoir quelques informations sur les partitions, à savoir : le nom de la partition, l’OS installé, lUUID, Le nombre d’inode et block….etc. Pour cela on utilise la commande dumpe2fs.

dumpe2fs permet d’afficher plusieurs informations sur les système de fichier ext2, ext3 et ext4.

NB : Pas besoin de démonter la partition pour utiliser cet commande ;).

Nous allons voir via l’exemple ci-dessous les informations que cette commandes peut nous fournir.

La syntaxe de la commande est simple, il suffilt de tapper la commande dump2fs suivi par le nome de la partition :

#dumpe2fs -h /dev/sda2

Comme vous pouvez le constater la commande nous affiche plusieurs informations utiles :

-Le nome de la partition, si cette dernière n’a pas de LABEL ( comme dans mon cas ) rien n’est affiché.
-Le point de montage
-L’identifiant de la partition UUID
-Le type de système de fichier
-Le nombre d’inode
-Le nombre des bloc
….

Comme il y a plusieurs informations affichées, la commande grep peut vous être utile dans ce cas si vous cherchez une information précise. si par exemple vous voulez savoir le nombre d’inode existant dans votre partition, il suffit de rediriger le résultat de la commande dump2fs vers la commande grep :

#dump2fs -h /dev/sdb2 | grep inode

C’est très utile pas vrais 😉

read more
Linux/Unix

mkfs : Création des systèmes de fichier

La création du système de fichier est une étape essentielle qui suit l’étape de la création des partions et qui précède l’étape du montage.

La commande utilisée sous linux pour créer un système de fichier est mkfs ( Make File System )

La syntaxe génerale est :

mkfs –t  typefs  options pérphérique

 

typefs = Le type du système du fichier utilisé ( ext2, ext3, ext4 …. )

options = Chaque système de fichier a ses propres options ( qu’on verra par la suite ).

Périphérique  = la parition qu’on veut formater ( /dev/sda1, /dev/hde …. )

 

En fonction du système de fichier choisi, mkfs appel un programme spécifique.

Il existe un programme par système de fichier, par exemple :

ext2 = mkfs.ext2

ext3 = mkfs.ext3

ext4 = mkfs.ext4

ntfs = mkfs.ntfs

Notez qui’il est possible d’appler directement le programme souhaité :

# mkfs.ext2  /dev/sda1
# mkfs.ext4  /dev/sdb2

Les options des système de fichiers :

Ext2, Ext3 et Ext4:

Les systèmes de fichier ext2, ext3 et ext4 ont les mêmes options car ils sont compatibles, ci-dessous les plus utiles ;

-b   :  Permet de définir la taille des bloc en octet, si la taille n’est pas définit, il sera déterminée par défaut.

-c   :  Permet de vérifier les blocs avant de créer le système de fichier. s’il détecte un mauvais bloc, il ne sera pas utilisé.

-m  : Définit le pourcentage réservé pour l’utilisateur root, par défaut 5% de l’espace est réservé pour root.

-L  :  Label du système de fichier

-j   :   Active la journalisation.

 

Prenons les deux exemples suivante:

-Je veux créer un système de fichier ext3 sur la partition /dev/sda1, la taille des bloc est 512 octets et je ne veux réserver aucun espace pour le super-utilisateur root, voici la commande qu’il faut saisir :

#mkfs -t ext3 -b 512 -m 0 -L DATA

-Je souhaite créer un système de fichier ext2 sur la partition /dev/sdb6 sans préciser la taille des bloc ni
la taille réservé pour root et je veux que la partition ait le nom PERSO :

#mkfs -t ext2 -L PERSO

Puisque je n’ai pas précisé la taille des bloc, mkfs va le faire automatiquement et vu que la taille réservé pour root n’a pas été déterminé,  5% de l’espace est réservé dans ce cas.

 

 

 

read more