Exercices TP-3

  1. Table des matières
    1. revision apt, dpkg
    2. consoles
  2. gestion des utilisateurs
    1. création d'un utilisateur
    2. questions /etc/passwd
    3. questions /etc/passwd : root
    4. questions /etc/passwd: gid
    5. questions /etc/passwd : groupe
    6. questions /etc/group
    7. questions /etc/group
    8. questions /etc/group
    9. questions /etc/passwd: shell apache
    10. questions /etc/passwd : nologin
    11. questions /etc/passwd : homedir
    12. questions /etc/passwd : homedir 2
    13. questions /etc/passwd : uid utilisateurs normaux
    14. droits de /etc/passwd
    15. droits de /etc/shadow
    16. droits de /etc/shadow 2
  3. Hachage des mots de passe dans /etc/shadow
    1. /etc/shadow : champ haché
    2. Mot de passe haché
    3. la fonction crypt
    4. crack principe
    5. crack mot de passe court mais maj
    6. crack mot de passe long
    7. crack mot de passe long : temps
    8. Dictionnaire
    9. decryptage brute force
  4. Manipualtion des droits d'acces
    1. Lecture de ls -l
    2. Droits d'accès
    3. chmod symbolique
    4. chmod
    5. chown
    6. chgrp
    7. Répertoires
  5. Exercice : Utilisateurs et droits d'accès

1. Table des matières

1.1 Table des matières



Bienvenue au TP 3.

Avez vous bien fait et fini le TP précèdent?

C'est important d'avoir bien compris les notions du TP précèdent avant de faire ce TP.
Si ce n'est pas fait, finissez d'abord le TP précèdent.

Cliquez sur "début du TP" pour commencer.

Table des matières

1.2 revision apt, dpkg

Révision apt, dpkg

Vous devez absolument comprendre les commandes suivantes.
Ne vous contentez pas de répondre, vérifiez que vous comprenez précisément chaque option.

Si vous avez des doutes, prenez le temps de chercher sur internet les informations nécessaires.

Voir entre-autres:

La fiche de ce cours (et aussi)
http://fr.wikipedia.org/wiki/Advanced_Packaging_Tool
http://www.debian.org/doc/manuals/apt-howto/index.fr.html
http://www.debian.org/doc/manuals/apt-howto/ch-apt-get.fr.html
http://www.coagul.org/article.php3?id_article=157

[des questions seront posées au contrôle sur le fonctionnement de certaines de ces commandes]

Table des matières

1.3 consoles

Consoles

Attention! Lisez jusqu'au bout avant d'appuyer sur les touches!

Un système Linux fournit normalement une série de consoles sur lesquelles on peut se connecter.
On peut changer d'une console à l'autre à l'aide des touches "control-alt-f1, control-alt-f2 ..."

Attention! Vous allez perdre temporairement l'accès à votre interface graphique. Il faudra essayer toutes les consoles (f1, f2 ... f12) jusqu'à ce que vous retrouviez l'interface graphique.

Essayez plusieurs consoles en vous loguant à chaque fois et en tapant quelques commandes.

Les consoles peuvent-être très pratiques lorsque vous avez un problème d'affichage.

Une des consoles correspond au serveur X (interface graphique), laquelle?
(f1, f2, f3 ... f12 ) ?

2. gestion des utilisateurs

2.1 gestion des utilisateurs

Dans cette partie du TP nous allons nous intéresser à la création et à la gestion des utilisateurs.

Voici les transparents du cours correspondants:

xx

gestion des utilisateurs

2.2 création d'un utilisateur

Création d'un utilisateur


Créez un utilisateur avec la commande "adduser nom_utilisateur" et donnez lui un mot de passe avec la commande "passwd nom_utilisateur".

Vérifiez dans le fichier /etc/passwd et /etc/shadow qu'il y a des lignes correspondantes à cet utilisateur.

Vérifiez qu'un répertoire personnel à bien été crée pour cet utilisateur.

Avec la commande "sudo su - nom_utilisateur", devenez l'utilisateur "nom_utilisateur" (ça lance un shell)

Vous pouvez quitter ce shell avec control-d (ou la commande "exit").

gestion des utilisateurs

2.3 questions /etc/passwd

Quel est le numero d'identifiant (uid) de l'utilisateur "nobody" ?

gestion des utilisateurs

2.4 questions /etc/passwd : root

Quel est le login de l'utilisateur ayant le numero d'identifiant (uid) 0 ?

gestion des utilisateurs

2.5 questions /etc/passwd: gid

Quel est le numero de groupe (gid) primaire de l'utilisateur "mail" ?

gestion des utilisateurs

2.6 questions /etc/passwd : groupe

Dans quel fichier trouve-on la liste des groupes?
(on demande le chemin complet)

gestion des utilisateurs

2.7 questions /etc/group

Dans une question precedente, on avait determiné le gid primaire de l'utilisateur "mail".
En regardant dans /etc/group
quel est le nom du groupe correspondant à ce gid ?

gestion des utilisateurs

2.8 questions /etc/group

La 18eme ligne de /etc/group ressemble à:

cdrom:x:24:etudiant

à quoi correspond le "cdrom:" en debut de ligne?

gestion des utilisateurs

2.9 questions /etc/group

Une ligne de /etc/group est:
scanner:x:111:saned,etudiant
à quoi correspond le "saned" ?

gestion des utilisateurs

2.10 questions /etc/passwd: shell apache

Quel est le shell attribué à l'utilisateur "www-data" ?

gestion des utilisateurs

2.11 questions /etc/passwd : nologin

En regardant dans /etc/passwd, quel est le shell associé a des utilisateurs "normaux" (étudiant,  ...) et à  root

gestion des utilisateurs

2.12 questions /etc/passwd : homedir

Quel est le répertoire personnel de l'utilisateur "root" ?

gestion des utilisateurs

2.13 questions /etc/passwd : homedir 2

Quel est le répertoire personnel de l'utilisateur "mail" ?

gestion des utilisateurs

2.14 questions /etc/passwd : uid utilisateurs normaux

Comparez les numéros d'utilisateur des types d'utilisateurs suivants:

A partir de quel numéro commencent les utilisateurs normaux?

gestion des utilisateurs

2.15 droits de /etc/passwd

en utilisant la commande "ls -l nom_fichier", determinez les droits d'accés au fichier "/etc/passwd"

gestion des utilisateurs

2.16 droits de /etc/shadow

Qui a le droit de lire le fichier "/etc/shadow" ?

gestion des utilisateurs

2.17 droits de /etc/shadow 2

Qui a le droit d'ecrire dans /etc/shadow ?

3. Hachage des mots de passe dans /etc/shadow

3.1 Hachage des mots de passe dans /etc/shadow

Dans cette partie nous allons essayer de comprendre quelques principes sur le hachage des mots de passe utilisé dans /etc/shadow

N'oubliez pas: un des buts et d'eviter que des mots de passe soient enregistrés en clair (non hachés) dans un fichier. Même si ce fichier est protegé en lecture. C'est très dangereux.

http://moodle.iutv.univ-paris13.fr/img/sa/sysadmin-cm-1-8.png

Hachage des mots de passe dans /etc/shadow

3.2 /etc/shadow : champ haché

/etc/shadow : champ haché


Parcourez le fichier "/etc/shadow". Les champs sont delimités par des ":"
Quel est   le numéro du champ ou se trouve le mot de passe crypté?
(champs1:champs2:champs3:....)
(en cas de doute, regardez "shadow" dans la section 5 du manuel: "man 5 shadow")

Hachage des mots de passe dans /etc/shadow

3.3 Mot de passe haché

Mot de passe haché


Un mot de passe haché dans /etc/shadow ressemble à ca
$1$s1f5m5j4$oLyi.z6g6/.Fx4x0y6nxD0
ou bien (plus récent):
$y$j9T$S10k5msKrNxNQajY8oI/$xcje6Hhe6jez


Ce mot de passe haché est composé de deux parties:

La première partie : $1$s1f5m5j4$ (ou bien $y$j9T$S10k5msKrNxNQajY8oI/$) correspond au "salt"
vous remarquerez que cette partie commence toujours par $1$ (ou $6$ ou $y$...$) et finit par $
Le "salt" est une chaîne choisie aléatoirement, qui n'est pas secrète, et qui sert à perturber le hachage.
Par exemple: deux utilisateurs avec des mots de passe identiques auront un "salt" aléatoire différent et donc des mots de passe hachés differents. De cette manière, quelqu'un qui regarderait /etc/shadow ne se rendra pas compte qu'ils ont le même mot de passe.

Et la deuxième partie : oLyi.z6g6/.Fx4x0y6nxD0 est le mot de passe haché
Il est haché à l'aide d'un algorithme (MD5 pour $1$...$, SHA-512 pour $6, yescrypt pour $y$...$...$)
https://fr.wikipedia.org/wiki/MD5
https://fr.wikipedia.org/wiki/SHA-2
Ce hachage, est à sens unique.
On peut aller dans le sens clair->haché mais pas dans le sens haché->clair

Hachage des mots de passe dans /etc/shadow

3.4 la fonction crypt

La fonction crypt


La fonction "C " crypt() permet de hacher un mot de passe.
Lisez rapidement la page man de crypt.

le deuxième champ de /etc/shadow contient le mot de passe crypté sous la forme:

$1$abcdefgh$xyz....
ou bien (plus récent):
$y$j9T$S10k5msKrNxNQajY8oI/$xyz...

Comme on l'a vu:


Créez un fichier password.c :

#define _XOPEN_SOURCE
#include <unistd.h>
#include <stdio.h>
#include <crypt.h>

int
main()
{
printf("resultat:\n%s\n",crypt("motdepasse", "salt"));
return 0;
}

remplacez "salt" avec une valeur trouvée dans /etc/shadow et "motdepasse" par le mot de passe correspondant (par exemple, pour le compte "etudiant")
puis compilez le avec: "gcc password.c -l crypt -o password"

Exécutez le programme et vérifiez qu'il affiche effectivement le mot de passe cryptée, tel qu'on le trouve dans /etc/shadow

Attention: ne créez jamais des fichiers de travail dans /etc !!!
Vous devez travailler dans votre répertoire personnel

Question: Quel est la ligne affichée pour:
salt: $1$s1f5m5j4$
mot de passe: blablabla


Hachage des mots de passe dans /etc/shadow

3.5 crack principe

"Cracker" un mot de passe


Supposons que vous soyez un pirate qui a réussi à lire le fichier /etc/shadow
Vous avez donc un mot de passe haché, et vous voulez obtenir le mot de passe en clair correspondant.

Il n'est pas possible de trouver directement le mot de passe reel ("blablabla") à partir du mot de passe haché ("$1$s1f5m5j4$fkvOx0vI.c98vi4EUz6Lw.").

Une solution très simple (mais longue) est d'essayer tous les mots de passes possibles. Vous pouvez hacher chacun de ces essais et comparer au mot de passe haché que vous avez trouvé dans /etc/shadow. Si la version haché de votre essai est egale au mot de passe haché de /etc/shadow, c'est que vous avez trouvé le bon mot de passe.

Supposons que vous sachiez que l'utilisateur a choisi un mot de passe composé de 3 lettres minuscules (sans accents).

Combien de combinaisons possibles est-ce qu'il faudra essayer au maximum?


Hachage des mots de passe dans /etc/shadow

3.6 crack mot de passe court mais maj


Supposons que vous sachiez que l'utilisateur a choisi un mot de passe composé de 3 lettres sans accents.
MAIS: majuscules et minuscules et 10 caracteres de ponctuation permis (,;:!&"'-_=)

Combien de combinaisons possibles est-ce qu'il faudra essayer au maximum?

Hachage des mots de passe dans /etc/shadow

3.7 crack mot de passe long

Combien de combinaisons sont possibles si l'utilisateur a choisi un mot de passe de 10 lettres minuscules non-accentués?

(utilisez la commande "bc -l" pour faire le calcul exact, les calculatrices n'affichent pas assez de chiffres)

Hachage des mots de passe dans /etc/shadow

3.8 crack mot de passe long : temps

En supposant que votre machine puisse vérifier 1000 mots de passe à la seconde, combien de temps faudra-il pour décrypter un mot de passe de 10 lettres minuscules sans accents.

Hachage des mots de passe dans /etc/shadow

3.9 Dictionnaire

Dictionnaire

Les gens utilisent souvent des mots de passe longs, mais contenant des mots en français.

Les programmes de décryptage peuvent alors essayer tous les mots du dictionnaire pour essayer de trouver le mot de passe correspondant. (en pratique les méthodes dictionnaire ont des approches beaucoup plus sophistiquées)

Un dictionnaire français contient environ 40 000 mots.

Un utilisateur choisit le mot de passe "diplodocus"

En supposant que votre machine puisse vérifier 1000 mots de passe à la seconde, combien de temps faudra-il pour décrypter un mot de passe comme "diplodocus"?

Hachage des mots de passe dans /etc/shadow

3.10 decryptage brute force

Decryptage "brute force"


(exercice un peu plus long, si vous êtes en retard, vous pouvez passer cette question en répondant "retard")

Écrivez un programme en C qui balaye tous les mots de passe possibles à 3 lettres (minuscules sans accents).

Trouvez le mot de passe de l'utilisateur "toto". Voici sa ligne dans /etc/shadow :
toto:$1$rXGhjmGD$qtuklX26hky6/TDbGxjCo.:11745:0:99999:7:::
Conseils et rappels C:
Saisissez le mot de passe trouvé ci-dessous (ou "retard" si vous ne souhaitez pas faire cette question).

4. Manipualtion des droits d'acces

4.1 Manipualtion des droits d'acces

Dans l'exercice suivant nous allons construire une arborescence en y associant des utilisateurs et des groupes.
Le but est de s'habituer à l'utilisation des commandes de gestion des utilisateurs et des droits.

xx

Manipualtion des droits d'acces

4.2 Lecture de ls -l

La commande ls -l affiche ceci:

-rw-r--r--  1 abcd efgh      1234 août  14  2018 ijkl

Manipualtion des droits d'acces

4.3 Droits d'accès

La commande ls -l affiche ceci:

-rw-r-xr--  1 abcd efgh      1234 août  14  2018 ijkl
Décomposons le sens de

rw-r-xr--

Manipualtion des droits d'acces

4.4 chmod symbolique

La commande ls -l affiche ceci:

-rw-r-xr--  1 abcd efgh      1234 août  14  2018 ijkl
Les droits d'accès sont donc les suivants:
rw-r-xr--

  1. les trois premiers (rw-) correspondent aux droits du propriétaire du fichier (abcd).
  2. les trois suivants (r-x) correspondent aux droits des membres du groupe associé à ce fichier (efgh).
  3. les trois derniers (r--) correspondent aux droits des utilisateurs qui ne sont ni abcd, ni dans le groupe efgh

La commande chmod utilise des lettres pour chacune de ces 3 catégories, lesquelles ?

Manipualtion des droits d'acces

4.5 chmod

Quelle commande taper pour changer ceci :

-rw-r--r--  1 abcd efgh      1234 août  14  2018 ijkl
en ceci:

-rw-rw-r--  1 abcd efgh      1234 août  14  2018 ijkl

Manipualtion des droits d'acces

4.6 chown

Quelle commande taper pour changer ceci :

-rw-r--r--  1 abcd efgh      1234 août  14  2018 ijkl
en ceci:

-rw-r--r--  1 wxyz efgh      1234 août  14  2018 ijkl

Manipualtion des droits d'acces

4.7 chgrp

Quelle commande taper pour changer ceci :

-rw-r--r--  1 abcd efgh      1234 août  14  2018 ijkl

en ceci:

-rw-r--r--  1 abcd rstu      1234 août  14  2018 ijkl


Manipualtion des droits d'acces

4.8 Répertoires

La commande ls -l affiche ceci:

drwxr-xr-x  1 abcd efgh      1234 août  14  2018 ijkl
Le "d" indique que ijkl est un répertoire.

r,w et x ont un sens différent pour un fichier et pour répertoire .

Pour un fichier:

A votre avis que veulent dire r,w et x pour un répertoire ?

5. Exercice : Utilisateurs et droits d'accès

5.1 Exercice : Utilisateurs et droits d'accès

Cet exercice de manipulation de droits est assez long, mais important. N'hésitez pas à prendre du temps.

Des commandes qui pourront être utiles sont données en pas de cette page.

Un petit programme (script) est fourni, pour vérifier si vous ne vous êtes pas trompés, une fois que vous aurez fini les 4 questions de cet exercice.
Vous pouvez l'exécuter, en tant que root, et il vous dira si vos répertoires sont conformes à ce qui est demandé.
Pour télécharger le script cliquez sur ce lien: verif-droits.sh

Exceptionnellement, pour cet exercice, il peut-être intéressant de travailler dans un shell en tant que root.
Pour ça, vous pouvez taper la commande "sudo su - "

1. création des fichiers et répertoires

Créez l'arborescence suivante (figure)
Vous pouvez créer très simplement des fichier vides à l'aide de la commande "touch nom_fichier" .
Indication: /var existe déjà, vous devez donc commencer par créer le répertoire "jeu"
droits

2. création des utilisateurs

En utilisant la commande appropriée, créez les utilisateurs: jeu, jean, akima, dupond
Attention, ne confondez pas les répertoires (que vous avez déjà crée) avec les utilisateurs du système.
Vérifiez que les utilisateurs ont bien été crées en regardant le fichier /etc/passwd

3. création de groupes d'utilisateurs

4. manipulation des droits et des propriétaires

Dans cette partie vous devez changer les propriétaires, les groupes et les droits de différents fichiers et répertoires pour obtenir les point suivants (faites-les dans l'ordre) :

Conseil : n'hésitez pas à devenir un des utilisateurs pour voir si ses droits sont corrects. Par exemple, pour devenir akima, vous pouvez taper: "sudo su - akima"

Les commandes utiles

N'hésitez pas à regarder la page "man" de ces commandes.