UBUNTU
Configuration Réseau
Le but de cette partie est de configurer une adresse IP statique, configurer les serveur DNS.
1 Identifier l'interface réseau
Avant de commencer on doit identifier notre interface réseau. Pour ce faire il existe plusieurs commandes système :
- ip addr
- ip a (simplificiation de addr)
- ip route show
ubuntu@sys:~$ ip addr
1: lo:
2: eth0@if948:
Notre interface réseau est donc eth0
2 Localiser le fichier de configuration Netplan
Ensuite, je cherche les fichiers de configuration de Netplan dans le répertoire /etc/netplan/. Par défaut, Ubuntu crée un fichier YAML pour la configuration réseau. La commande suivante me permet de voir les fichiers disponibles :
ubuntu@sys:~$ ls /etc/netplan
10-lxc.yaml
3 Modifier le fichier de configuration Netplan
Dans le fichier de configuration, je configure l'interface réseau avec une adresse IP statique et spécifie les serveurs DNS de Google. Voici un exemple de configuration pour l'interface eth0 :
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
addresses: [10.11.9.161/28]
routes:
- to: 0.0.0.0/0
via: 10.22.9.254
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
content_copy
4 Appliquer la configuration réseau
Après avoir enregistré mes modifications dans le fichier de configuration, j'applique les changements avec la commande suivante :
sudo netplan apply
content_copy
Autre manière de faire la configuration réseau
On peut configurer une adresse IP statique et les serveurs DNS en ligne de commande de manière persistante sans modifier directement le fichier de configuration.
Configurer l'adresse IP statique pour l'interface réseau eth0 :
sudo ip address add x.x.x.x/x dev <interface>
content_copy
Définir la passerelle par défaut :
sudo ip route add default via x.x.x.x
content_copy
Configurer les DNS :
On Configure les serveurs DNS en ajoutant les adresses IP des serveurs DNS à notre fichier de configuration /etc/resolv.conf.
sudo bash -c 'echo "nameserver 8.8.8.8" >> /etc/resolv.conf'
sudo bash -c 'echo "nameserver 8.8.4.4" >> /etc/resolv.conf'
content_copy
Ou sinon on peut modifier manuellement le fichier :
sudo vim /etc/resolv.conf
nameserver <adresse_ip_dns_1>
nameserver <adresse_ip_dns_2>
5 Vérifier la configuration
Je vérifie que la configuration est appliquée correctement en utilisant les commandes suivantes :
ip addr show <interface>
content_copy
Ensuite je ping ma gateway, ainsi que le site de google par exemple pour vérifier que la configuration fonctionne.
Commandes
1. Ajouter un utilisateur
Je peux créer un nouvel utilisateur en utilisant la commande adduser.
sudo adduser mahmoud
Adding user `mahmoud' ...
Adding new group `mahmoud' (1002) ...
Adding new user `mahmoud' (1002) with group `mahmoud' ...
Creating home directory `/home/mahmoud' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for mahmoud
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] Y
2. Configuration de sudo pour le nouveau utilisateur
Sur Ubuntu, les utilisateurs qui doivent exécuter des commandes en tant que root sont généralement ajoutés au groupe sudo. Pour ajouter mahmoud à ce groupe, j'utilise la commande suivante :
sudo usermod -aG sudo <nom_utilisateur>
content_copy
3. Lister les utilisateurs
cat /etc/passwd
content_copy
4. Configurer vim comme éditeur par défaut
echo "export EDITOR=vim" >> ~/.bashrc
source ~/.bashrc
Ou si je souhaite utilser vim pour une opération particulière :
sudo EDITOR=vim visudo
content_copy
5. Autoriser un utilisateur de redémarrer la machine
Je peux spécifiquement autoriser mahmoud à redémarrer la machine sans saisir de mot de passe en éditant le fichier sudoers.
sudo EDITOR=vim visudo
// J'ajoute la ligne
mahmoud ALL=NOPASSWD: /sbin/reboot, /bin/systemctl reboot, /bin/systemctl poweroff
Maintenant je peux reboot sans mot de passe :
su - mahmoud
sudo /sbin/reboot
10. Installer un serveur SSH
Installation du paquet SSH
sudo apt install openssh-server
content_copy
Démarrage du service SSH
sudo systemctl start ssh
content_copy
mahmoud-pv@ubuntu-pv:~$ sudo systemctl status ssh
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enab
Active: active (running) since Thu 2024-03-07 12:37:30 CET; 2min 46s ago
Main PID: 582 (sshd)
Tasks: 1 (limit: 514)
CGroup: /system.slice/ssh.service
└─582 /usr/sbin/sshd -D
Activation du service SSH au démarrage
sudo systemctl enable ssh
content_copy
Configuration du pare-feu (firewalld)
Si on utilise firewalld, on doit ouvrir le port 22 pour autoriser les connexions SSH.
sudo ufw allow 22
content_copy
7. Configuration des connexions SSH avec une clé RSA
Générer une paire de clés RSA
ssh-keygen -t rsa -b 4096
content_copy
Copier la clé publique sur le serveur distant
ssh-copy-id user@remote_server
content_copy
Configurer le serveur SSH pour autoriser l'authentification par clé
sudo echo "PermitRootLogin without-password" >> /etc/ssh/sshd_config
content_copy
Modifier la passphrase d'une clé SSH
ssh-keygen -p -f <nom_fihier_cle_prive>
content_copy
Présence de clés
ls ~/.ssh/
content_copy
8. Informations sur les disques
Liste des périphériques de blocks
Cette commande affiche la liste des périphériques de blocs (disques et partitions) sur votre système.
lsblk
content_copy
L'utilisation de l'espace disque de tous les systèmes
Cette commande montre l'utilisation de l'espace disque de tous les systèmes de fichiers montés.
toto@srv:~/df -h
Filesystem Size Used Avail Use% Mounted on
udev 447M 0 447M 0% /dev
tmpfs 99M 1.2M 97M 2% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 17G 6.5G 9.5G 41% /
tmpfs 491M 0 491M 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 491M 0 491M 0% /sys/fs/cgroup
/dev/sda2 976M 207M 703M 23% /boot
/dev/loop0 56M 56M 0 100% /snap/core18/2812
/dev/loop1 56M 56M 0 100% /snap/core18/2566
/dev/loop2 41M 41M 0 100% /snap/snapd/20671
/dev/loop3 64M 64M 0 100% /snap/core20/2182
/dev/loop4 64M 64M 0 100% /snap/core20/1623
/dev/loop5 92M 92M 0 100% /snap/lxd/24061
/dev/loop6 68M 68M 0 100% /snap/lxd/22753
tmpfs 99M 0 99M 0% /run/user/1000
Lister les partitions des disques
sudo fdisk -l
content_copy
9. Installer/Supprimer un paquet
Installer un paquet
sudo apt-get install LE_NOM_DU_PAQUET
content_copy
Supprimer un paquet
sudo apt-get remove LE_NOM_DU_PAQUET
content_copy
10. Activer une interface réseau
Pour les système Linux qui dispoe de netplan on utilise :
sudo ip link set nom_interface up
content_copy
Pour les système Linux un peu anciens qui utilise interfaces :
sudo ifup nom_interface
content_copy
11. Obtenir la version de la distribution
lsb_release -a
content_copy
12. Mettre à jour à une version supérieur d'Ubuntu
sudo do-release-upgrade
content_copy
13. Vider le contenu d'un fichier
sudo truncate -s 0 <nom_du_fichier>
content_copy
14. Ajouter un utilisateur au groupe sudoers
sudo usermod -aG sudo <user>
content_copy
15. Identifier le processus associé à un port spécifique
sudo lsof -i :<num_port>
content_copy
sudo lsof -i :53
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd-r 727 systemd-resolve 13u IPv4 21682 0t0 UDP localhost:domain
systemd-r 727 systemd-resolve 14u IPv4 21683 0t0 TCP localhost:domain (LISTEN)
dnsmasq 1081 libvirt-dnsmasq 5u IPv4 22285 0t0 UDP xen:domain
dnsmasq 1081 libvirt-dnsmasq 6u IPv4 22286 0t0 TCP xen:domain (LISTEN)
16. Utilisation de wget
Wget est un utilitaire en ligne de commande qui permet de télécharger des fichiers depuis
le Web. Il est largement utilisé pour automatiser le processus de téléchargement de
fichiers à partir de serveurs Web, que ce soit pour récupérer des fichiers individuels,
des sites web entiers, ou même pour effectuer des téléchargements récurrents ou planifiés.
Pour afficher toutes les options disponibles :
wget --help
content_copy
man wget
content_copy
wget --user-agent="Mozilla/5.0" <mon_url_de_telechargement>
content_copy
17. Recherche d'un fichier/Rep
Pour que la fonction fonctionne, nous devons indiquer le répertoire à partir duquel nous souhaitons commencer la recherche de manière récursive :
find <endroit_d_ou_commencer> -name "<nom_fic_rep>"
content_copy
18. Trier les fichiers par date de modification
Lister les fichiers par date de modification
ls -t
content_copy
ls -t fic1 fic2 fic3
content_copy
Conserver le plus récent
On peut vouloir supprimer les autres fichiers et conserver uniquement le plus récent :
# Supposons que les trois fichiers sont fichier1, fichier2, et fichier3
# La commande `ls -t` affichera les fichiers dans l'ordre : plus récent en premier
ls -t fichier1 fichier2 fichier3 > tmp_file_list.txt
# Lisez le fichier temporaire et extrayez le fichier le plus récent
read most_recent_file < tmp_file_list.txt
# Supprimez les autres fichiers
for file in fichier1 fichier2 fichier3; do
if [ "$file" != "$most_recent_file" ]; then
rm "$file"
fi
done
exit 0
content_copy
19. Personnalisations
Message affiché lors de l'invite de connexion
Sous Ubuntu Server, il est possible de personnaliser le message qui s'affiche lors de l'invite de connexion (où l'on entre nos identifiants) en modifiant le fichier /etc/issue.
sudo vim /etc/issue
content_copy
Dans cet exemple on affiche l'Ip de la machine :
# /etc/issue
IP: \4{eth0}
content_copy
Message affiché lors d'une connexion
On peut modifier le message affiché lorsque l'on est connecté à un système Ubuntu Server en modifiant le fichier /etc/motd.
sudo vim /etc/motd
content_copy
Protocole SFTP
Cette partie sert à introduire le protocole SFTP. Le protocole SFTP est un protocole utilisé pour transférer des fichiers de manière sécurisée entre un ordinateur local et un serveur distant via une connexion SSH (Secure Shell).
Installation
Le protocole SFTP se base sur le protocole SSH, il suffit donc d'installer SSH sur la machine pour pouvoir utiliser SFTP.
Ouvrir une connexion SFTP
Sur une machine on peut établir une connexion SFTP au client, on utilise la commande sftp dans le terminal. On spécifie l'utilisateur et l'adresse IP ou le nom d'hôte du client.
sftp <utilisateur>@<adresse_IP_ou_nom_hote>
content_copy
Commandes SFTP
Récupérer un fichier
get <nom_du_fichier>
content_copy
On peut également modifier le nom du fichier récupéré si l'on souhaite.
get <nom_du_fichier> <nouveau_nom>
content_copy
Récupération de fichiers
En utilisant scp, on peut récupérer des fichiers depuis un client avec une seule commande :
scp utilisateur@adresse_ip:/chemin/vers/fichiers/nom_du_fichier /chemin/vers/destination/
content_copy
Déposer un fichier
Pour déposer un fichier depuis la machine source vers un client :
put <fichier_local> <nouveau_nom_facultatif>
content_copy
Obtenir le répertoire local
Lorsqu'on se connecte à un client, on peut vouloir connaître le répertoire dans lequel les fichiers récupérés seront déposés. Pour ce faire, on peut utiliser la commande suivante pour déterminer où l'on se trouve :
lpwd
content_copy
Pour obtenir le répertoire distant où l'on se trouve :
pwd
content_copy
Configurer le répertoire de réception
Pour configurer le répertoire où les fichiers téléchargés avec la commande `get` seront déposés, on peut changer le répertoire de travail local avec la commande `lcd` (local change directory).
lcd <répertoire_cible>
content_copy
Répertoire de travail local (sur notre machine)
On peut lister les fichiers dans le répertoire de travail local (sur notre machine). Cela permet de visualiser les fichiers que l'on a récupérés.
lls
content_copy
Renommer un fichier
On peut renommer un fichier avec la commande :
rename <ancien_nom> <nouveau_nom>
content_copy
Supprimer un fichier
On peut supprimer un fichier avec la commande :
rm <nom_du_fichier>
content_copy
Supprimer un répertoire
On peut supprimer un répertoire avec la commande :
rmdir <nom_du_repertoire>
content_copy
Créer un répertoire sur le serveur distant
On peut créer un répertoire sur le serveur distant avec la commande :
mkdir <nom_du_repertoire>
content_copy