Introduction à GNU/Linux
Yoann Ono Dit Biot
CTO & Co-Founder SYNHACK
ET SI ON PARLAIT DE VOTRE SÉCURITÉ ?
SYNHACK est une start-up Normande spécialisée dans la sécurité numérique.
Basée à Seine Innopolis (Petit-Quevilly),
notre société est composée d'experts pluridisciplinaires dans les domaines
de la sécurité numérique.
VÉRIFIONS VOTRE NIVEAU DE SÉCURITÉ
NOS AUDITS DE SÉCURITÉ :
- Tests d'intrusion
- Audits de configuration
- Audits de vulnérabilités
- Audits d'infrastructures
NOS CERTIFICATIONS :
- EC-Council CEH
- Cisco CCNP Security
FORMER VOS SALARIÉS C'EST VOUS PROTÉGER
PARCOURS DE FORMATION :
- Formation et sensibilisation des
collaborateurs de l'entreprise
- Formation et accompagnement
de l'équipe IT de l'entreprise
Centre de formation agréé par
la DIRECCTE de Haute-Normandie.
LAISSEZ NOS EXPERTS VOUS AIDER
NOS OFFRES :
- Diagnostic Interne : Un expert se déplace au sein de votre entreprise afin de comprendre vos enjeux métiers et d'évaluer l'état de votre sécurité.
- SYNHACK @ Work : Un expert vous accompagne régulièrement à raison de 3 jours de prestation par mois.
Qu'est-ce que GNU/Linux ?
GNU/Linux n'est pas Linux
C'est un assemblage de deux projets
C'est un projet qui a démarré en 1992
Le noyau LINUX
Développé à partir 1991 par Linus Torvalds
Aujourd'hui c'est 5000 développeurs
Ce sont 500 entreprises derrière le projet
Ce sont presque 20 millions de lignes de code
C'est libre et gratuit
Le projet GNU
C'est un projet initié en 1983 par Richard Stallman
C'est un système d'exploitation
Ce sont des commandes de bases
C'est libre et gratuit
La tête des gars derrière GNU/Linux
Les distributions
Une distribution c'est un système GNU/Linux packagé
Ce sont des outils préinstallés
Où trouves-t-on GNU/Linux ?
Où trouves-t-on GNU/Linux ?
https://www.youtube.com/watch?v=JzsLkbwi1LA
Organisation des fichiers
Linux Hierarchy Standard
GNU/Linux respecte le Linux Hierarchy Standard (LHS)
C'est une organisation de fichier hiérarchique particulière
La racine est représentée par le dossier "/"
Linux Hierarchy Standard
/
Représente la racine du système
Comparable au répertoire C:\ sous Windows
/BIN
Dossier contenant les commandes essentielles du système
/Boot
Contient les fichiers nécessaires au démarrage du système
/dev
Contient les fichiers liés aux périphériques du système
/etc
Contient les fichiers de configuration des services
/home
Contient les dossiers personnels des utilisateurs du système
/lib
Contient les bibliothèques partagées du système
/media
Points de montages des périphériques amovibles
/mnt
Points de montage temporaires
/opt
Contient les applications installées manuellement
/proc
Contient des informations relatives au système
/root
Dossier personnel de l'utilisateur root (administrateur)
/run
Contient des informations du système depuis son démarrage
/sbin
Contient les applications nécessitant des droits privilégiés
/srv
Contients les données des services (http, ftp, etc...)
/tmp
Contient des données temporaires
/usr
Données en lecture seule sur le système
/var
Contient des données variables
Les commandes de base
Commande: MAN
Description
Cette commande permet d'afficher la documentation d'un logiciel
man = manual
Utilisation
man cd man firefox
Commande: cd
Description
Cette commande permet de changer de dossier courant.
cd = current directory
Utilisation
cd cd /tmp
cd ../scripts cd ~/downloads
Commande: PWD
Description
Cette commande permet de connaître le répertoire courant
pwd = print working directory
Utilisation
pwd
Commande: ls
Description
Cette commande permet de lister le contenu d'un dossier
ls = list
Utilisation
ls ls /tmp ls ../scripts ls -al ../scripts
Commande: cat
Description
Cette commande permet d'afficher le contenu d'un fichier
Utilisation
cat /etc/passwd cat example.doc
Commande: touch
Description
Cette commande permet de créer un fichier vide
Utilisation
touch test.txt touch /tmp/test2.txt
Commande: mkdir
Description
Cette commande permet de créer un dossier vide
Utilisation
mkdir testdir mkdir /tmp/testdir2
Commande: nano
Description
Cette commande permet de créer ou modifier un fichier.
Utilisation
nano example.txt nano /etc/passwd
Commande: cp
Description
Cette commande permet de copier un fichier.
cp = copy
Utilisation
cp /tmp/test.txt ./ cp test.txt /tmp
Commande: mv
Description
Cette commande permet de déplacer/renommer un fichier.
mv = move
Utilisation
mv /tmp/test.txt ./ mv test.txt test2.txt
Commande: rm
Description
Cette commande permet d'effacer un fichier ou un dossier.
rm = remove
Utilisation
rm example.doc rm -rf /home/y0no/example_directory
Commande: rmDIR
Description
Cette commande permet d'effacer un dossier vide.
rmdir = remove directory
Utilisation
rm /home/y0no/example_directory
Commande: su
Description
Cette commande permet de changer d'utilisateur.
su = switch user
Utilisation
su root su y0no
Commande: sudo
Description
Cette commande permet d'exécuter une commande en tant qu'un autre utilisateur
sudo = switch user and do
Utilisation
sudo apt-get install php5 sudo -u y0no nano test.php
Démo
TP
TP: Commandes basiques
- Créer un fichier vide nommé test.txt
- Le renommer en monFichier.txt
- Créer un dossier nommé TP
- Déplacer monFichier.txt dans le dossier TP
- Écrire "TP Linux" dans monFichier.txt
- Copier le dossier TP vers TP_copy
- Effacer le dossier TP
TP: Commandes basiques
- Se loguer en tant qu'utilisateur root
- Créer un fichier test.txt dans le dossier /tmp
- Écrire du texte dans /tmp/test.txt
- Se déconnecter de l'utilisateur root
- Lire le fichier /tmp/test.txt, est-ce possible ?
- Ecrire dans le fichier /tmp/test.txt, est-ce possible ?
Ubuntu
Présentation
Système d'exploitation libre et gratuit
Basé sur la distribution Debian
Développé par la société Canonical
Interface Unity
Démo
Gestion Applications
Méthode simple:
La logithèque Ubuntu
Méthode complexe:
La ligne de commande (et oui...)
Text
Text
Méthode simple : La logithèque Ubuntu
apt-get update
apt-get upgrade
apt-cache search firefox
apt-get install firefox
apt-get autoremove firefox
Méthode complexe : La ligne de commande
Démo
TP
Installation d'une distribution UBUNTU
- Télécharger l'ISO d'Ubuntu 15.10 sur le site ubuntu.com
- Télécharger et installer virtualbox 5.0
- Créer une machine virtuelle
- Installer Ubuntu
Installation de logiciel via la logithèque
- Lancer la logithèque
- Installer le navigateur web chromium
- Lancer et utiliser chromium
Installation de logiciel via le terminal
- Lancer un terminal
- Mettre à jour le système
- Installer le logiciel filezilla
InstallER Une autre distribution Linux
Utilisation avancées des commandes
Les pipes
Description
Les pipes permettent d'envoyer les résultats d'une commande en entrée d'une autre.
Exemples
cat /etc/passwd | grep y0no ls | wc -l
L'operateur AND (&&)
Description
L'opérateur AND permet de chaîner des commandes.
Ce chaînage s'arrête dès qu'une commande échoue ou en fin de ligne
Exemples
apt-get update && apt-get upgrade mkdir test && echo 'Directory test created'
L'operateur point virgule (;)
Description
L'opérateur ";" permet de chaîner des commandes sans regarder le resultat des commandes. C'est à dire que si une commande échoue, le chaînage continuera.
Exemples
apt-get update ; apt-get upgrade
L'operateur OU (||)
Description
Cette opérateur permet d'exécuter une commande si la première échoue.
Exemples
mkdir test || echo 'Unable to create test'
L'operateur >
Description
Cette opérateur permet de créer/modifier un fichier avec une entrée STDIN
Exemples
echo 'hello' > test.txt
L'operateur >>
Description
Cette opérateur permet d'ajouter une entrée STDIN à un fichier
Exemples
echo 'hello' > test.txt echo 'ligne 2' >> test.txt
Commande: grep
Description
Cette commande permet de filtrer une entrée STDIN
Utilisation
cat /etc/passwd | grep y0no
Les scripts
Description
Les scripts sont des fichiers texte permettant d'effectuer plusieurs actions sur le système. Ils sont comparables à des scripts batch.
Exemples
echo 'debut du script'
mkdir test
cd test && touch fichier.txt
echo 'fin du script'
Les Tâches CRON
Description
Les tâches CRON permettent d'exécuter des tâches à intervale régulier.
En résumé, ce sont des tâches planifiées.
Configuration dans /etc/cron
Format
# m h j m js cmd log
30 23 * * * df >>/tmp/log_df.txt
Démo
TP
TP: Chainage commandes
En une commande:
- Demander au système de rafraîchir son cache apt
- Demander au système de se mettre à jour
- Demander au système d'installer une application
- Écrire dans le terminal "Everything is ok" si tout va bien
- Écrire dans le terminal "Epic fail" si la commande plante
TP: Chainage commandes
En une commande:
- Demander au système de pinger google.com
- En cas de réussite, afficher "Everything is ok"
- En cas d'échec, afficher "Google seems down"
TP: Script bash
Dans un script:
- Afficher à l'utilisateur "Système de notation v1.0"
- Demander à l'utilisateur d'entrer une note dans la console
- Enregistrer cette note dans une variable
- Afficher un texte en fonction de la note:
- insuffisant, assez bien, bien, très bien et excellent
TP: Script bash
Dans un script:
- Permettre à l'utilisateur d'ajouter des contacts dans un fichier (nom, prénom, numéro de téléphone)
- Permettre à l'utilisateur de supprimer des contacts
- Permettre à l'utilisateur de lister les contacts
Gestion des utilisateurs et des droits
Gestion des Utilisateurs
GNU/ Linux permet de créer autant d'utilisateurs que l'on veut.
Un utilisateur peut appartenir à un ou plusieurs groupes
La liste des utilisateurs est présente dans /etc/passwd
La liste des groupes utilisateurs est dans /etc/group
Commande: useradd
Description
Cette commande permet d'ajouter un utilisateur au système
Utilisation
useradd usertp
Commande: usermod
Description
Cette commande permet de modifier un utilisateur existant
Utilisation
usermod -a -G sudo testtp
Commande: userdel
Description
Cette commande permet de supprimer un utilisateur
Utilisation
userdel usertp
Gestion des permissions
Gestion des droits de type UGO
Permissions liées à un utilisateur et un groupe
Permissions RWX
Gestion des permissions
Commande: chmod
Description
Cette commande permet de modifier les droits d'un fichier ou d'un dossier.
chmod = change mode
Utilisation
chmod 755 example.doc chmod -r 755 ~/ chmod u+x example.doc
chmod ug+rwx example.doc
Commande: chown
Description
Cette commande permet de modifier le propriétaire d'un fichier ou d'un dossier.
chown: change owner
Utilisation
chown y0no example.doc chown -r y0no ~/ chown y0no:users example.doc
Commande: chGRP
Description
Cette commande permet de modifier le groupe d'un fichier ou d'un dossier.
chgrp = change group
Utilisation
chgrp nom_groupe nom_fichier
TP
Gestion des utilisateurs
- Demander à votre terminal d'afficher votre nom d'utilisateur
- Déterminer à quel groupe appartient votre utilisateur actuel
- Créer un nouveau groupe nommé TP
- Ajouter un nouvel utilisateur 'userTP' qui appartient au groupe TP
- Ajouter votre utilisateur actuel au groupe TP
Gestion des Permissions
- Créer un fichier nommé "test_permission"
- Ouvrir un terminal en tant qu'utilisateur "userTP"
- Essayer de modifier le fichier "test_permission" avec "userTP"
- Donner les droits d'écriture à l'utilisateur actuel et à userTP
- Réessayer de modifier le fichier "test_permission" avec "userTP"
Répertoire partagé
- Créer les utilisateurs Bob et Alice
- Permettre à Bob et Alice (et seulement eux) d'écrire dans /home/tp/
Les ACL
Description
Les ACL, ou Access Control Lists, permettent une gestion plus fine des permissions sous GNU/Linux.
Elles ne remplacent pas les permissions de bases mais les complètent.
getfacl
Description
Cette commande permet d'obtenir les ACL définies sur le fichier.
Exemple:
getfacl fichierTest
Setfacl
Description
Cette commande permet de définir une ACL sur un fichier.
Exemple:
setfacl -m u:bobi:rwx fichierTest setfacl -x g:staff fichierTest
TP
Les ACL
- Créer un fichier testACL
- Afficher les ACL du fichier testACL
- Créer un utilisateur bobi
- Permettre à bobi d'éditer le fichier testACL en utilisant les ACLs
- Afficher les ACL du fichier testACL
Gestion des Partitions
Les partitions: Présentation
Description
Une partition est une zone logique située sur un disque dur. Elles permettent d'isoler des données sur un même disque dur.
Les partitions permettent d'utiliser plusieurs systèmes de fichiers (FS) sur un même disque dur.
Les partitions: Convention
Description
Sous GNU/Linux, les partitions se situent dans /dev et respectent une convention de nommage particulière.
Le format sera toujours /dev/XXYZ
où XX est le type de périphérique de stockage
Y l'emplacement du stockage
et Z le numéro de partition
Exemple:
/dev/sda1
/dev/hdb3
Commande: FDISK
Description
Cette commande permet de lister ou créer une partition
Utilisation
fdisk -l # Liste les partitions fdisk /dev/sdb # Lance fdisk sur /dev/sdb
Commande: mkfs
Description
Cette commande permet de formater une partition
Utilisation
mkfs.ext4 /dev/sda1 mkfs.ntfs /dev/sda2
Commande: mkswap
Description
Cette commande permet de formater une partition en tant que swap.
Utilisation
mkswap /dev/sda1 swapon /dev/sda1
TP
Créer une partition EXT4
- Créer un nouveau disque dur sous virtualbox
- Ajouter-le disque à la machine virtuelle (Ubuntu ou autre)
- Lister les disques sur le système
- Créer une partition sur le nouveau
- Formater la partition en ext4
- Monter la partition sur le système et écrire dedans
Montage permanent
- Monter la partition au boot à l'emplacement /home/partages
LVM: Logical Volume Manager
LVM est un système permettant de gérer facilement les partitions sous GNU/Linux à l'aide de volumes logiques
Cette méthode permet de redimensionner facilement des partitions sans craindre des pertes de données.
Néanmoins le système peut s'avérer dangereux.
LVM: Logical Volume Manager
LVM: Logical Volume Manager
En résumé:
PV: Physical volume
VG: Volume group
LV: Logical volume
Démo
TP
LVM
- Définir les deux nouveaux disques en tant que PV ;
- Définir un VG "MyData" contenant les deux PV ;
- Créer trois LV "Videos", "Musique" et "Images" d'une taille de 5Go chacun
- Formater les partitions en ext4
- Monter automatiquement les partitions dans le répertoire /mnt (vidéos, musiques et images)
- Créer des liens symboliques entre chaque point de montage des LV ainsi que votre /home/$user
- Gérer les droits d'accès intelligemment ;-)
Résumé du cours
https://www.jottit.com/3eey4/
Introduction à GNU/Linux
By Yoann Ono
Introduction à GNU/Linux
- 2,336