# Le système d'exploitation GNU-Linux/Les systèmes de fichiers

* Qu'est-ce qu'un système d'exploitation ?
* Unix et Linux
* Partitionnement du disque
* Installation
** Installer Debian via le réseau
* Utilisateur Unix, l'interface console
** Le login
** Variables d'environnement
** Commandes de base
** L'aide en ligne man
** L'éditeur de texte vi
** Les shells
** La complétion
** Les jokers
** Les répertoires importants
** Redirection des entrées/sorties
** Invoquer un programme en tâche de fond
** Propriétaires et droits d'accès
** Processus
** Locale
* Administration du système
** Configuration du réseau
** Les utilisateurs et groupes
** Le processus d'initialisation
** Les systèmes de fichiers
** Le système virtuel /proc
** Les périphériques /dev
** L'ordonnanceur de travaux cron
** Le backup : tar et gzip
** ghost avec partimage
** sauvegarde de fichiers avec rsync
** Les fichiers journaux syslog
** Installation de nouveaux logiciels
** Le noyau Linux et les modules
** Autres commandes utiles
** Installation RAID1 logiciel + LVM + XFS
** Scripts de surveillance
** Réseaux sans fil
* Administration des services réseaux
** L'outil d'administration Webmin
** telnet
** cURL
** wget
** Le serveur de noms BIND
** Le serveur de configuration réseau DHCP
** Le serveur de shell distant SSH
** Le partage de fichiers Samba
** Le partage de fichiers NFS
** Le serveur d'impression CUPS
** Le serveur de fichiers FTP
** Le serveur Web Apache
** Le serveur Web Nginx
** La base de données MySQL
** La base de données Memcached
** La base de données Redis
** Le serveur de mails Postfix
** Les annuaires LDAP
** La supervision Nagios
* Sécurisation d'un serveur Linux
** Installation d'un service en mode chroot
** Protection avec iptables
* Erreurs connues
* Médiagraphie
* Auteurs
* Qu'est-ce qu'un système d'exploitation ?
* Unix et Linux
* Partitionnement du disque
* Installation
** Installer Debian via le réseau
* Utilisateur Unix, l'interface console
** Le login
** Variables d'environnement
** Commandes de base
** L'aide en ligne man
** L'éditeur de texte vi
** Les shells
** La complétion
** Les jokers
** Les répertoires importants
** Redirection des entrées/sorties
** Invoquer un programme en tâche de fond
** Propriétaires et droits d'accès
** Processus
** Locale
* Administration du système
** Configuration du réseau
** Les utilisateurs et groupes
** Le processus d'initialisation
** Les systèmes de fichiers
** Le système virtuel /proc
** Les périphériques /dev
** L'ordonnanceur de travaux cron
** Le backup : tar et gzip
** ghost avec partimage
** sauvegarde de fichiers avec rsync
** Les fichiers journaux syslog
** Installation de nouveaux logiciels
** Le noyau Linux et les modules
** Autres commandes utiles
** Installation RAID1 logiciel + LVM + XFS
** Scripts de surveillance
** Réseaux sans fil
* Administration des services réseaux
** L'outil d'administration Webmin
** telnet
** cURL
** wget
** Le serveur de noms BIND
** Le serveur de configuration réseau DHCP
** Le serveur de shell distant SSH
** Le partage de fichiers Samba
** Le partage de fichiers NFS
** Le serveur d'impression CUPS
** Le serveur de fichiers FTP
** Le serveur Web Apache
** Le serveur Web Nginx
** La base de données MySQL
** La base de données Memcached
** La base de données Redis
** Le serveur de mails Postfix
** Les annuaires LDAP
** La supervision Nagios
* Sécurisation d'un serveur Linux
** Installation d'un service en mode chroot
** Protection avec iptables
* Erreurs connues
* Médiagraphie
* Auteurs
[ Modifier le sommaire ]

## Les systèmes de fichiers Unix

UNIX gère les i-nodes (data structure) dans une table qui contient des informations telles que :
* le propriétaire ;
* le groupe de fichiers ;
* les droits d'accès ;
* la date de modification ;
* le type de fichier.
Sous UNIX et LINUX on trouve des partitions, ex. : boot, var, tmp, home qui permettent d'organiser le système de fichiers. Au départ EXT2 sous UNIX, aujourd'hui EXT3 par défaut correspond à EXT2 plus le journal, qui a l'avantage de consigner tout ce que fait le système, et qui en cas de crash lui permet de démarrer plus rapidement sans erreurs. Les deux formats sont compatibles. Il existe toutes sortes de systèmes de fichiers.

### Non journalisés

* Ext et Ext2 : Extented FS version 2 (Linux, BSD)
* FAT : File Allocation Table (DOS/Windows, Linux, BSD, OS/2, Mac OS X). Se décompose en plusieurs catégories :
** FAT12 ;
** FAT16 ;
** FAT32 ;
** VFAT.
* FFS : Fast File System (BSD, Linux expérimental)
* HFS : Hierarchical File System (Mac OS, Mac OS X, Linux)
* HPFS : High Performance FileSystem (OS/2, Linux)
* minix fs (minix, Linux)
* S5 (UNIX System V, Linux)
* UFS : Unix File System (BSD, Linux en lecture seule)

### Journalisés

* BFS (BeOS, Haiku, Linux en lecture seule et expérimental)
* Ext3 : Extented FS version 3 - notamment pour l'ajout de la journalisation (Linux, BSD)
* Ext4 : Extented FS version 4 - notamment pour étendre sa capacité à 1024 péta-octets (Linux expérimental)
* HFS+ (Mac OS X, Linux)
* JFS (AIX, OS/2, Linux)
* JFS2 AIX5
* LFS : (Linux)
* NSS : Novell Storage Services (Netware et Suse Linux)
* NTFS : New Technology FileSystem (Windows NT/2000/XP, Linux (écriture disponible grâce au pilote NTFS-3G), Mac OS X en lecture seule)
* ReiserFS (Linux, BSD en lecture seule)
* Reiser4 (Linux expérimental)
* Spufs : Synergistic processing unit filesystem
* UFS+ : Unix FS + journal (BSD, Linux en lecture seule)
* XFS (Irix, Linux, BSD en lecture seule)
* ZFS : Zettabyte FileSystem (Solaris10, FreeBSD 8.0)

### Réseau

* AFS Andrew File System : (Aix, Linux)
* Coda (Systèmes de fichiers informatique) (Linux)
* NFS (tous les Unix, Linux, Mac OS X) (Windows pour la 4)
* NCP NetWare Core Protocol (Novell NetWare, Linux en client seul)
* SSHFS (tous les Unix ?, Linux)
* SMB ou Server message block (Windows) (Linux, BSD et Mac OS X via Samba)
* CIFS (Évolution de SMB, supporté par Samba ainsi que par Windows 2000 et XP)

### Cluster

* GPFS, General Parallel File Sytem : Linux, AIX
* LustreFS, Compression de Linux et de Cluster : Linux
* OCFS2, développé par Oracle : Linux
* PVFS2, Parallel Virtual FileSystem version 2 : Linux, Unix

### Spécialisés

* CFS Cryptographic File System : FS chiffré (BSD, Linux)
* cramfs : FS compressé (Linux en lecture seule)
* EFS Encrypting File System : FS chiffré au dessus de NTFS (Windows)
* ISO 9660 : en lecture seule sur tous les systèmes lisant les CDROM/DVDROM de données
* JFFS et JFFS2 : FS pour support physique sans block, typiquement des cartes flash. Il est compressé et journalisé (Linux)
* QNX4fs : FS utilisé pour le temps réel (QNX, Linux en lecture seule)
* UDF : le format de disque universel (système de fichiers des DVD-ROM et des disques optiques réinscriptibles tels les CD-RW, DVD±RW, etc.)

## mount

Cette commande indique tous les systèmes de fichiers qui sont montés. On l'utilise pour accéder à une partition (en root pour accéder au CD-ROM ou au lecteur disquette).
Exemple : pour brancher une clé USB il faut la monter. On édite le fichier log par la commande tail -f /var/log/messages afin de savoir sur quel système de fichiers se trouve la clé. Puis on utilise mount pour accéder au contenu de la clé.
Exemple :
Il est possible de préciser le système de fichier s'il ne le détecte pas
Syntaxe :
Exemple :
Lorsque l'on a fini d'utiliser la clé il faut la démonter à cause du cache.
Pour sauvegarder des montages réguliers, on utilise le fichier "fstab" détaillé ci-après, et sudo mount -a monte tous ceux qui sont dedans.

## umount

La commande umount permet de démonter une partition. Cette opération est indispensable si on veut être sûr que les données soient correctement écrites sur la partition. Exemples :
ou
Si la partition est en cours d'utilisation, on ne pourra pas la démonter et la commande umount va retourner un message d'erreur :
Deux commandes permettent de connaître les fichiers ouverts et les processus qui sont en train d'utiliser la partition et qui empêchent le démontage.
La commande lsof (list open files) permet de connaître les fichiers ouverts :
La commande fuser permet aussi de connaître les processus qui ont des fichiers ouverts sur la partition.

## Le fichier /etc/fstab

Le fichier /etc/fstab contient la liste des partitions montées automatiquement au démarrage du système.
Extrait d'un fichier fstab :
Pour monter automatiquement une partition au démarrage, il suffit de rajouter une ligne dans le fichier /etc/fstab, comme par exemple :
Pour chaque partition, on peut spécifier des options dans le fichier /etc/fstab. Options les plus courantes :
* user : permet aux utilisateurs d'effectuer les opérations de montage / démontage
* noauto : ne monte pas automatiquement la partition au boot
La commande sync force le noyau à écrire le cache. Pour savoir la taille qu'il reste sur la clé on utilisera la commande df (disk free) -h (human readable) pour avoir les informations en kilo,mega,giga. df -i affiche le pourcentage d'occupation de la table des i-nodes.

### NFS

Pour les partages NFS, on peut lancer sudo apt install nfs-common.

## Formater un système de fichiers

La commande mkfs (make filesystem) permet de formater un système de fichiers. Exemple :
parler des inodes et superblocks
ATTENTION LE SYSTÈME DE FICHIER NE DOIT PAS ÊTRE MONTÉ
mkfs est un wrapper (aiguillage)
Afin de simuler le formatage, nous allons créer un disque dur virtuel. Pour simuler ceci avec un disque dur virtuel, on utilisera le pseudo périphérique loop.
Ceci crée un fichier vide hd1 qui aura une taille de 100 Mo.
On attache le pseudo-pérphérique /dev/loop0 à notre fichier hd1.
Une fois le disque dur virtuel crée on peut le formater :
Pour le démonter :
CAS PARTICULIER : pour les disquettes, on effectue en général un formatage de bas niveau :
ATTENTION À BIEN DÉMONTER AU PRÉALABLE LE PÉRIPHÉRIQUE
La commande suivante permet de vérifier l'intégrité du système de fichiers :
L'option -c de fsck permet de vérifier les bad blocks (en lecture seule par défaut). L'option -v (verbose, soit verbeux) pour voir ce qu'il fait.
parler des commandes : badblocks, tune2fs, dumpe2fs

## Le swap
### Partition de swap

Le SWAP signifie échange, il s'agit d'une mémoire virtuelle en effet lorsque la mémoire de l'ordinateur arrive à saturation, le système écrit sur une partition SWAP de façon à libérer de la mémoire.
Il est possible de créer une partition SWAP grâce à la commande mkswap :
On utilisera la commande swapon /dev/sdb5 pour l'activer :
Avec la commande 'free,' il est possible de vérifier si le swap est activé :
Pour lister les partitions SWAP :

### Fichier de swap

Il est possible de créer un fichier swap en complément d'une partition SWAP, pour faire ceci nous allons commencer par créer un fichier de huit gigaoctets :
On initialise ensuite le fichier en swap :
On active le swap :
Pour désactiver la partition de SWAP :
Si l'on tape la commande free on constate que la taille du swap a augmenté.
Pour visualiser son utilisation autrement :

## Utilitaires disques-durs
### Technologie S.M.A.R.T.

SMART est une technologie de monitoring des disques dur.
Nom du package apt : smartmontools
Le fichier /etc/smartd.conf permet de programmer des tests, et l'envoie de messages d'alertes.

### hdparm

hdparm permet de configurer les paramètres d'accès au disque dur.
Pour tester les performances on utilise l'option -tT

### hddtemp

hddtemp utilise les données SMART du disque dur spécifié et retourne sa température.
L'option -n permet de ne renvoyer que la valeur de la température (utile pour les scripts)