# Debian

Debian est un système d’exploitation libre et gratuit, principalement basé sur Linux. Créé en 1993, il est connu pour sa stabilité, sa sécurité et son large choix de logiciels. Debian supporte de nombreuses architectures matérielles et sert souvent de base à d’autres distributions comme Ubuntu.

# Commandes communes

##### <u>****Utiliser la commande**** </u><u>**`<strong class="editor-theme-bold editor-theme-code editor-theme-underline">ss</strong>`**</u>

****tag :**** &lt;voir port&gt;

<span style="white-space: pre-wrap;">La commande </span>`<span class="editor-theme-code">ss</span>`<span style="white-space: pre-wrap;"> est un outil moderne et rapide pour afficher les connexions réseau. Vous pouvez l'utiliser pour lister les ports ouverts.</span>

Pour afficher tous les ports ouverts et les services qui les utilisent :

```bash
sudo ss -tuln
```

- `<span class="editor-theme-code">-t</span>`<span style="white-space: pre-wrap;"> : Affiche les connexions TCP.</span>
- `<span class="editor-theme-code">-u</span>`<span style="white-space: pre-wrap;"> : Affiche les connexions UDP.</span>
- `<span class="editor-theme-code">-l</span>`<span style="white-space: pre-wrap;"> : Affiche les ports à l'écoute (Listening).</span>
- `<span class="editor-theme-code">-n</span>`<span style="white-space: pre-wrap;"> : Affiche les adresses et les ports sous forme numérique (sans résolution de noms).</span>

Exemple de sortie :

```ruby
Netid  State      Recv-Q Send-Q Local Address:Port   Peer Address:Port
tcp    LISTEN     0      128          *:22              *:*     
tcp    LISTEN     0      128       127.0.0.1:631        *:*     
udp    UNCONN     0      0        0.0.0.0:123           *:*
```

Cela vous donne une vue d'ensemble des ports ouverts et des adresses locales auxquelles ils sont liés.

Exemple pour un port spécifique (par exemple, le port 8080) :

```bash
sudo ss -tuln | grep ':8080'
```

Cette commande affiche les connexions TCP et UDP en écoute et filtre celles qui utilisent le port 8080.

<span style="white-space: pre-wrap;">Si vous souhaitez également afficher le PID, ajoutez l'option </span>`<span class="editor-theme-code">-p</span>`<span style="white-space: pre-wrap;"> :</span>

```bash
sudo ss -tulnp | grep ':8080'
```

##### <u>****Utiliser la commande**** </u><u>**`<strong class="editor-theme-bold editor-theme-code editor-theme-underline">ip -c a</strong>`**</u>

****tag :**** &lt;voir ip, voir adresse ip&gt;

**`<strong class="editor-theme-bold editor-theme-code">ip -c a</strong>`**<span style="white-space: pre-wrap;"> (ou </span>**`<strong class="editor-theme-bold editor-theme-code">ip -c addr</strong>`**) affiche toutes les interfaces réseau et leurs informations, avec une sortie colorée pour améliorer la lisibilité.

```bash
ip -c a
```

****Exemple de sortie de** `<strong class="editor-theme-bold editor-theme-code">ip -c a</strong>` **:****

<span style="white-space: pre-wrap;">Voici un exemple de ce à quoi pourrait ressembler la sortie d'une commande </span>`<span class="editor-theme-code">ip -c a</span>`<span style="white-space: pre-wrap;"> :</span>

```sql
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 192.168.1.10/24 brd 192.168.1.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:fe2a:0bfa/64 scope link
       valid_lft forever preferred_lft forever
```

- **`<strong class="editor-theme-bold editor-theme-code">lo</strong>`**<span style="white-space: pre-wrap;"> est l'interface de boucle locale (loopback), avec l'adresse </span>`<span class="editor-theme-code">127.0.0.1</span>`.
- **`<strong class="editor-theme-bold editor-theme-code">eth0</strong>`**<span style="white-space: pre-wrap;"> est une interface Ethernet avec une adresse IPv4 (</span>`<span class="editor-theme-code">192.168.1.10</span>`) et une adresse IPv6 (`<span class="editor-theme-code">fe80::...</span>`).

<span style="white-space: pre-wrap;">Avec l'option </span>`<span class="editor-theme-code">-c</span>`, ces informations sont colorées pour les rendre plus faciles à analyser visuellement.

****En résumé :****

- **`<strong class="editor-theme-bold editor-theme-code">ip</strong>`**<span style="white-space: pre-wrap;"> : Utilitaire pour gérer les interfaces réseau, les routes, les adresses IP, etc.</span>
- **`<strong class="editor-theme-bold editor-theme-code">-c</strong>`**<span style="white-space: pre-wrap;"> : Active la coloration de la sortie.</span>
- **`<strong class="editor-theme-bold editor-theme-code">a</strong>`**<span style="white-space: pre-wrap;"> : Affiche les adresses réseau et les interfaces.</span>

<span style="white-space: pre-wrap;">La commande </span>`<span class="editor-theme-code">ip -c a</span>`<span style="white-space: pre-wrap;"> est donc un moyen simple et rapide de visualiser l'état des interfaces réseau de votre système avec une sortie colorée pour une lecture plus facile.</span>

# Mise à jour

##### ✅ Commande sans risque (mise à jour des index uniquement)

```bash
sudo apt update
```

<p class="callout info"><span style="color: rgb(66, 66, 66);">Met à jour la liste des paquets disponibles sans installer quoi que ce soit. Aucun changement sur le système.</span></p>

##### ⚙️ Commande plus complète (mise à jour des paquets installés)

```bash
sudo apt update && sudo apt upgrade -y
```

<p class="callout info"><span style="color: rgb(66, 66, 66);">Met à jour la liste des paquets</span><span style="white-space: pre-wrap;"> </span>**et installe les mises à jour disponibles**<span style="white-space: pre-wrap;"> </span><span style="color: rgb(66, 66, 66);">pour les paquets déjà installés. Le</span><span style="white-space: pre-wrap;"> </span>`<span class="editor-theme-code">-y</span>`<span style="white-space: pre-wrap;"> </span><span style="color: rgb(66, 66, 66);">permet de valider automatiquement les changements.</span></p>

##### 🧰 Commande ultra complète (mise à jour + nettoyage)

```bash
sudo apt update && sudo apt full-upgrade -y && sudo apt autoremove --purge -y && sudo apt autoclean
```

<p class="callout info"><span style="white-space: pre-wrap;">En plus de la mise à jour : </span>`<span class="editor-theme-code">full-upgrade</span>`<span style="white-space: pre-wrap;"> gère les changements de dépendances (peut installer ou supprimer des paquets). </span>`<span class="editor-theme-code">autoremove --purge</span>`<span style="white-space: pre-wrap;"> supprime les paquets inutiles et leurs fichiers de config. </span>`<span class="editor-theme-code">autoclean</span>`<span style="white-space: pre-wrap;"> nettoie les fichiers .deb obsolètes.</span></p>

# Étendre une partition sur Debian (MBR) sans perte de données

Ce guide explique comment étendre une partition / (root) sous Debian lorsque le disque virtuel a été agrandi dans l’hyperviseur, mais que la partition principale est bloquée par une partition étendue contenant le swap (`<span class="editor-theme-code">sda2</span>`<span style="white-space: pre-wrap;"> + </span>`<span class="editor-theme-code">sda5</span>`).

Fonctionne pour :

- VMware, Proxmox, Hyper‑V, VirtualBox
- Debian 10 → Debian 13+
- <span style="white-space: pre-wrap;">Disques MBR (label </span>`<span class="editor-theme-code">dos</span>`)

---

##### 🛑 Avant de commencer

Vérifier que le disque virtuel a déjà été agrandi dans l’hyperviseur :

```Shell
lsblk
```

Vous devez voir par ex. :

sda 50G └─sda1 23G

---

##### 1️⃣ Désactiver le swap existant

```Shell
swapoff -a
```

---

##### 2️⃣ Modifier la table de partitions avec fdisk

<span style="white-space: pre-wrap;">Lancer </span>`<span class="editor-theme-code">fdisk</span>`<span style="white-space: pre-wrap;"> :</span>

```Shell
fdisk /dev/sda
```

<span style="white-space: pre-wrap;">Dans </span>`<span class="editor-theme-code">fdisk</span>`, effectuer exactement les actions suivantes :

##### 1. Supprimer l’ancienne swap (sda5)

```bash
d
5
```

##### 2. Supprimer la partition étendue (sda2)

```
d
2
```

##### 3. Supprimer la partition root (sda1)

⚠️ Sans danger tant que le secteur de début est conservé.

```
d
1
```

##### 4. Recréer /dev/sda1 sur tout le disque

```
n
p
1
2048 ← le même secteur de début qu’avant
<Entrée> ← fin par défaut = fin du disque
```

##### 5. Remettre le drapeau boot

```
a
1
```

##### 6. Sauvegarder et quitter

```
w
```

Un redémarrage peut être nécessaire :

```Shell
reboot
```

---

##### 3️⃣ Étendre le système de fichiers ext4

Une fois la machine revenue :

```Shell
resize2fs /dev/sda1
```

Le système de fichiers s’adapte alors à la nouvelle taille (50 Go dans cet exemple).

Vérifier :

```Shell
df -h
```

---

##### 4️⃣ Créer un swap via un fichier (recommandé)

Un swapfile est plus simple et plus flexible qu’une partition swap.

##### Création du fichier swap :

```Shell
fallocate -l 1G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile
```

##### Rendre le swap permanent

<span style="white-space: pre-wrap;">Ajouter dans </span>`<span class="editor-theme-code">/etc/fstab</span>`<span style="white-space: pre-wrap;"> :</span>

```bash
echo '/swapfile none swap sw 0 0' >> /etc/fstab
```

ou

```
/swapfile none swap sw 0 0
```

---

##### 5️⃣ Vérifications finales

```Shell
lsblk && df -h && free -h
```

Vous devriez voir :

- `<span class="editor-theme-code">/dev/sda1</span>`<span style="white-space: pre-wrap;"> = ~50 Go monté sur </span>`<span class="editor-theme-code">/</span>`
- `<span class="editor-theme-code">/swapfile</span>`<span style="white-space: pre-wrap;"> actif</span>

---

##### 🟢 Résultat final

Votre système Debian utilise maintenant toute la taille du disque agrandi, sans perte de données, avec un swap propre et moderne via fichier.

---

##### ✨ Bonus : résolution du problème “commandes sbin introuvables”

<span style="white-space: pre-wrap;">Si des commandes comme </span>`<span class="editor-theme-code">fdisk</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">parted</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">ip</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">reboot</span>`… n’étaient plus accessibles :

<span style="white-space: pre-wrap;">Ajouter ceci dans </span>`<span class="editor-theme-code">/root/.bashrc</span>`<span style="white-space: pre-wrap;"> :</span>

```Shell
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
```

Puis :

```Shell
source /root/.bashrc
```