# Installation des systèmes
- Une fois arrivé à l'étape des partitionnements des disques, on pick l'option manuel

- Choisir son hard drive, puis configurer LVM

- Ensuite, on créer son groupe de volumes, puis ses volumes logiques


- Ne pas oublier de bien choisir ses points de montage, exemple sur lvboot

- Exemple de volumes faits

- **Attention a cette étape** : bien cocher oui puis france et ftp.fr-debian

# Utilisateurs et environnement
## Utilisateur principal et privilèges
Ajout de l'utilisateur principal en sudoers : **commandes à faire en root**
```bash
visudo
%username ALL=(ALL:ALL)
```
## Utilisateurs et groupes
**Voici un exemple complet de la procédure**
Créer l'utilisateur alice avec un répertoire personnel, bash comme shell par défaut, et l'ajouter au groupe administrateur
```bash
groupadd administrateur
sudo useradd -m -s /bin/bash -g administrateur alice
```
```bash
sudo groupmod -n nouveau_nom ancien_nom
```
Définir un mot de passe par défaut (exemple : Ch@ngeMe) pour alice
```bash
echo "alice:Ch@ngeMe" | sudo chpasswd
```
Ou
```bash
sudo passwd alice
```
Forcer alice à changer son mot de passe lors de sa première connexion
```bash
sudo change -d 0 alice
```
**Résultat final**
```
Répertoire personnel : /home/alice
Shell par défaut : /bin/bash
Groupe principal : administrateur
Mot de passe initial : Ch@ngeMe
Mot de passe à changer : Alice devra changer son mot de passe lors de sa première connexion pour des raisons de sécurité.
```
## Environnement de travail
### Vim
installation de vim
```bash
sudo apt install vim
```
creation du .vimrc
```bash
touch .vimrc
```
parametres de base de vim
* Affiche les numéros de ligne dans la marge gauche de l'éditeur.
```set number```
* Active la coloration syntaxique pour améliorer la lisibilité du code.
```syntax enable```
* Met en surbrillance toutes les occurrences de la recherche actuelle.
```set hlsearch```
* Active la recherche incrémentale, c'est-à-dire que les résultats de la recherche sont mis à jour à mesure que vous tapez.
```set incsearch```
* Active l'indentation intelligente, ce qui ajuste l'indentation en fonction de la syntaxe du code.
```set smartindent```
* Active l'indentation automatique lors de la frappe de nouvelles lignes.
```set autoindent```
* Définit la largeur d'un onglet à 4 espaces.
```set tabstop=4```
* Définit le nombre d'espaces utilisés pour chaque niveau d'indentation lors du décalage automatique (shift).
```set shiftwidth=4```
* Remplace les tabulations par des espaces, ce qui permet de conserver une mise en page cohérente.
```set expandtab```
* Configure les options de complétion automatique :
* `menu` : Affiche les options de complétion dans un menu déroulant.
* `menuone` : Affiche le menu de complétion même s'il n'y a qu'une seule option.
* `noselect` : Ne sélectionne pas automatiquement la première option du menu de complétion.
```set completeopt=menu,menuone,noselect```
Ne pas oublier de commenter les lignes des sources deb-src cdroom
```bash
vim /etc/apt/sources.list
```
Ajouter la commande dans le fichier vim
```bash
:g/^deb-src/s/^/#/
```

# Stockage et ressources
## Partitionnement de disques
### Ajout d'un nouveau disque / Installation d'outils
Après avoir ajouté le disque dans la VM, redémarrez la machine
**Installer le paquet util-linux :**
```bash
sudo apt install util-linux
```
**lexique :**
- ```lsblk``` Affiche les informations sur les périphériques de bloc (disques et partitions)
- ```fdisk``` Permet de manipuler les partitions des disques
```bash
sudo fdisk /dev/sdb
```
### Creer une nouvelle partition
- taper `n`
- selectionner `p` partition principal
- choisir le numero : entrer par default
- définir le premier secteur: entrer par default
- définir la taille de la partition : +taille(G,M,..)
- taper `t` : definissez le type 83 pour linux
- taper `w` : pour ecrire la partition
### Formater les partitions
Si ext4:
```bash
sudo mkfs.ext4 -L label /dev/sdb*
```
Si xfs:
- installer xfs
```bash
sudo apt install xfsprogs
sudo mkfs.xfs -L label /dev/sdb*
```
### Pour ajouter ou modifier le label
- ext4
```bash
sudo e2label /dev/sdb* nouveau label
```
- xfs
```bash
sudo xfs_admin -L new-label /dev/disque-xfs-a-modifier
```
## Occupation des espaces disques
### Monter les partitions
Créer les points de montage temporaires
```bash
sudo mkdir /mnt/PROFILS
sudo mount /dev/sdb1 /mnt/PROFILS
```
Attention de ne pas oublier
``` bash
rm -rf /mnt/dossier-de-montage
```
Pour vérifier si elles sont montées corectement
```bash
df -h
```

Démonter les partitions temporaires
```bash
sudo umount /mnt/PROFILS
```
### Modifications des partitions en changeant la partition de volume (exemple)
**outil :**
- `rsync` utilisé principalement pour la synchronisation de fichiers et de répertoires entre différents emplacements.
- ```sudo apt install rsync```
**option :**
```bash
-r # Recursif, copie les répertoires et leur contenu de manière récursive.
-a # signifie "archive mode". C'est une option combinée pour que la synchronisation conserve l'intégrité des fichiers et répertoires
-l # Conserve les liens symboliques.
-p # Conserve les permissions.
-t # Conserve les timestamps (date et heure de modification des fichiers).
-g # Conserve le groupe.
-o # Conserve le propriétaire.
-D # Conserve les périphériques et les fichiers spéciaux.
-v # Active le mode verbeux
```
Après avoir vérifié que le répertoire n'avait pas de souci lors du montage, on prépare le répertoire que l'on souhaite déplacer de volume.
### Création d'un Répertoire de Sauvegarde
```bash
sudo mkdir /home_backup # creation du dossier backup a la racine
sudo rsync -av /home/ /home_backup/
```
On peut aussi utiliser la commande `cp` pour copier les données sur notre backup :
```bash
sudo cp -rpv /home/* /home_backup/
```
#### Tips
On peut vérifier rapidement que les données ont été copiées
```bash
ls -la /home
ls -la /home_backup
```
### Démonter l'ancien `/home` si nécessaire
Si `/home` est sur une partition différente, vérifier avec `df -h`
```bash
sudo umount /home
```
Si on rencontre des difficultées pour démonter `/home`, utliser
```bash
sudo umount -l /home
```
### Monter PROFILS sur `/home`
```bash
sudo mount /dev/sdb1 /home
```
**Attention** : si on a utilisé la commande `cp`, il faut recopier les données du backup sur notre home
```bash
sudo cp -rpv /home_backup/ /home/*
```
Vérifier que le volume est correctement monté
```bash
df -h | grep /home
```
A nouveau, on peut vérifier que les données soient bien copiées sur notre `/home`
```bash
ls -la /home
ls -la /home_backup
```
### Mettre à jour `/etc/fstab` pour le montage automatique
```bash
sudo nano /etc/fstab
```
Remplacer le point de montage de `/home`


Verifier les droit de chaque user
```bash
ls -la /home
```
Ne pas oublier de supprimer le dossier backup une fois fini
```
sudo rm -rf /home_backup
```
### Monter les partitions automatique
Editer le ficher `/etc/fstab`
### Monter un volume avec dossier partagé
Commencer par créer un repertoire commun exemple `/services`
```bash
sudo mkdir /services
```
Monter le volume exemple `DATA` sur /services
```bash
sudo mount /dev/sdb2 /services
```
Ajouter la ligne suivante pour que le volume soit monté automatiquement `/etc/fstab`
```bash
/dev/sdb2 /services ext4 defaults 0 2
```
On oublie pas la vérification habituelle
```bash
df -h /services
```
Créer les sous-repertoires
```bash
sudo mkdir -p /services/commercial
sudo mkdir -p /services/informatique
sudo mkdir -p /services/comptabilite
sudo mkdir -p /services/logistique
sudo mkdir -p /services/direction
```
ou en une seule commande
```bash
sudo mkdir -p /services/ {commercial,informatique,...}
```
Ajouter les permissions aux groupes concernés
```bash
chown :Commercial commercial
chown :Informatique informatique
chown :Comptabilite comptabilite
chown :Logistique logistique
chown :Direction direction
```
Puis accorder les droits requis, ici lecture+écriture aux seuls membres de chaque groupe
```bash
chmod g+x *
ou
chmod 770 *
```
# Configuration avancée système
Ici, on cherche à modifer la durée du chargeur d'amorçage grub
```bash
sudo nano /etc/default/grub
```
On modifie la ligne `GRUB_TIMEOUT=5` par `GRUB_TIMEOUT=2`

Ensuite, il faut faire une mise à jour du fichier
```bash
sudo update-grub
```
### Redimensioner le volume logique swap
```bash
cat /ect/fstab #pour recuperer le chemin du swap
```
si swap activé
```bash
sudo swapoff /dev/chemin/du/swap
```
Cette commande ajuste le volume logique swap pour utiliser tout l'espace libre restant dans le groupe de volume associé
```bash
sudo lvresize -l +100%FREE /dev/chemin/du/swap
```
Reformater le volume swap
```bash
sudo mkswap /dev/chemin/du/swap
```
Vérification de la taille
```bash
sudo lvdisplay /dev/chemin/du/swap
```
# Installation d'applications
```bash
sudo apt install remmina remmina -plugin-rdp
```
# Sauvegarde et restauration
Ici, on veut planifier une sauvegarde quotidienne sous forme de fichiers `tar`
On peut créer un script
```bash
nano /root/script.sh
```
On ajoute ces 3 lignes
```bash
#!/bin/bash
tar cf /root/HomeBack.tar /home
tar cf /root/ServicesBack.tar /services
```
N'oublions pas de modifier les permissions
```bash
chmod u+x /root/script.sh
```
Ensuite, on planifie le script avec une contrab
```bash
crontab -e
```
Et on ajoute dans la crontab
```bash
30 12 * * 1-5 /root/script.sh
```
La sauvegarde aura donc lieu tous les jours à 12h30.
### Sauvegarde partagée (à revoir)
On va aussi vouloir configurer une duplication des fichiers à l'aide de la commande `scp`, pour que les fichiers soient dispo sur un autre poste (ici celui du binôme de TP)
On vérifie si on à les paquets requis
```bash
apt-cache search scp
```
Puis on ajoute une ligne dans notre crontab
```bash
scp /root/*.tar userdubinome@ipdubinome:/nomdudossier
```
**Attention** : la ligne de commande est ajoutée à la suite de la première à l'aide d'un `&&`

# Partitionnement LVM
On souhaite monter une partition xts dans le dossier `/var/log`
Pour des raisons de sécurité, on passe en mode maintenance
```bash
systemctl isolate rescue.target
ou
init 1
```
On copie les données dans un dossier temporaire
```bash
mkdir /mnt/logs
cp -rvp /var/log /mnt/logs
```
Puis on modifie le fichier `/etc/fstab`
* Méthode 1
```bash
sudo nano /etc/fstab
```
Et on ajoute ici la ligne `/dev/sdb3`

* Méthode 2
```bash
echo "LABEL=LOGS /var/log xfs defaults 0 0" >> /etc/fstab
mount -a
```
Ensuite on peut recopier les données du dossier temporaire
```bash
cp -rvp /mnt/logs/* /var/log/
```
On peut déjà vérifier le contenu des 2 dossiers
```bash
ls -la /var/log
ls -la /mnt/logs
```
Maintenant on peut redémarrer la machine
```bash
reboot
```
Et on fini par vérifier le bon fonctionnement
```bash
sudo tail /var/log/syslog
```
## Configuration avancée des systèmes
On ajoute deux disques de 20G à notre machine dans le but de créer un volume logique LVM
Vérification des nouveaux disques
```bash
lsblk -l
```
#### Créer des partitions sur les nouveaux disques
* Pour le disque /dev/sdc :
```bash
fdisk /dev/sdc
```
Dans fdisk :
* Taper `n` pour créer une nouvelle partition.
* Accepter les valeurs par défaut pour utiliser tout l'espace.
* Taper `t` et entrez 8e pour définir le type comme "Linux LVM".
* Taper `w` pour écrire les changements sur le disque.
Répéter ces étapes pour le disque /dev/sdd.
#### Créer des volumes physiques LVM
`pvcreate`
```bash
pvcreate /dev/sdc1 /dev/sdd1
```
#### Créer un groupe de volumes LVM
Créer un groupe de volumes nommé, par exemple `vg_opt` à partir des volumes physiques :
```bash
vgcreate vg_opt /dev/sdc1 /dev/sdd1
```
Créer un volume logique LVM
```bash
lvcreate -L 32G -n lv_opt vg_opt
```
Formater le volume logique en ext4
```bash
mkfs.ext4 /dev/vg_opt/lv_opt
```
Monter le volume logique sur /opt
```bash
mount /dev/vg_opt/lv_opt /opt
```
#### Rendre le montage permanent
Ouvrir le fichier /etc/fstab avec un éditeur de texte (ici nano)
```bash
sudo nano /etc/fstab
```
```bash
/dev/vg_opt/lv_opt /opt ext4 defaults 0 2
```
Vérification
```bash
reebot
df -h /opt
```