Introduction à GNU/Linux

Yoann Ono Dit Biot

CTO & Co-Founder SYNHACK

System/Network/Security Engineer

Meet me on LinkedIn

Or maybe on twitter

 

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,354