TP Administration & Principe d'authentification sous linux

19
Rapport TP Linux

Transcript of TP Administration & Principe d'authentification sous linux

Rapport TP Linux

Ecole Nationale des Sciences Appliquées Khouribga Département Génie Electrique

Rapport TP Linux Année universitaire 2014/2015

Sommaire

TP2 : gestion des utilisateurs. - Enoncé 1 : utilisateurs et groupes

- Enoncé 2 : authentification

- Enoncé 3 : Droits d'accès

TP3: gestion des processus. - Enoncé 1 : visualisation des processus

- Enoncé 2 : signaux et commande kill

- Enoncé 3 : commande top

- Enoncé 4 : manipulation des processus

TP4: Gestion des disques et systèmes de fichiers. - Enoncé 1 : fdisk

- Enoncé 2 : montages prédéfinis

-Enoncé 3 : auto montages

- Enoncé 4 : mise en place des quotas

TP5: Principe d'authentification sous linux.

Ecole Nationale des Sciences Appliquées Khouribga Département Génie Electrique

Rapport TP Linux Année universitaire 2014/2015

TP2 : gestion des utilisateurs. - Enoncé 1 : utilisateurs et groupes

1. Pour se connecter en tant que root, on utilise la commande sudo su et on saisit le mot de passe qu’on a spécifié lors de la création de notre machine virtuelle.

2. Pour lister les groupes qui existent sur le système on utilise la commande less pour le fichier de configuration sui contient le détail de tout les groupe /etc/group.

Et pour lister les comptes d’utilisateurs on utilise cette fois-ci le fichier de configuration /etc/passwd.

Ecole Nationale des Sciences Appliquées Khouribga Département Génie Electrique

Rapport TP Linux Année universitaire 2014/2015

3. On remarque déjà que le GID du root 0 à partir du résultat de la commande less /etc/group et que UID du root est 0 à partir du résultat de la deuxième commande less /etc/passwd.

4. Les valeurs minimales du UID et GID qui seront attribués par défaut aux nouveaux utilisateurs ou groupes, seront le plus petit UID et GID supérieurs respectivement aux valeurs UID_MIN et GID_MIN (on utilise le fichier de configuration /etc/login.defs).

Toutefois, on peut interagir pour changer la règle par défaut en choisissant nous-mêmes le UID et GID souhaités.

UID : on ajoute l’option –g lors de la création des comptes utilisateurs, suivi de l’identifiant UID (-g 1200).

GID : on ajoute l’option –u lors de la création des groupes, suivi de l’identifiant GID (-u 1300).

5. On crée les groupes grp1, grp2, grp3 (GID=1023) on utilise les commandes suivantes :

6. On Crée les comptes utilisateurs util1, util2 et util3 ayant respectivement les groupes grp1, grp2 et grp3 comme groupe principal .Le compte util2 est aussi membre des groupes grp1 et grp3. On doit renseigner le pseudonyme « tux1 » de l’utilisateur util1.

Util1 : on utilise -c pour ajouter un commentaire contenant le pseudonyme ainsi que -g pour déterminer le groupe auquel l’utilisateur appartient.

Util2 : on utilise -g pour déterminer le groupe auquel l’utilisateur appartient, et -G pour déterminer les groupes secondaires auquel appartient l’utilisateur (grp1et grp3)

Util3 : on utilise -g pour déterminer le groupe auquel l’utilisateur appartient.

7. Les UIDs et GIDs :

- GID on utilise less /etc/group.

- UID on utilise less /etc/passwd.

Ecole Nationale des Sciences Appliquées Khouribga Département Génie Electrique

Rapport TP Linux Année universitaire 2014/2015

8. On arrive pas à supprimer grp3 parce qu’il constitue un groupe primaire pour l’utilisateur util3, alors on ne peut le supprimer que si on supprime util3.

9. Pour supprimer l’utilisateur util3 et grp3 :

10. Le répertoire /home/util3 est orphelin parce qu’on a supprimé à la fois l’utilisateur util3 et son groupe primaire grp3.

11. Pour trouver les fichiers orphelins appartenant au compte utilisateur :

Pour les supprimer :

- Enoncé 2 : authentification

1. l’utilisateur util1 ne dispose pas d’un mot de passe, il sera impossible de se connecter car sous Linux, il faut avoir un mot de passe associé à un compte pour pouvoir s’y connecter.

2. on attribue des mots de passes aux utilisateurs util1 et uti2 en utilisant la commande passwd :

A part l’administrateur et l’utilisateur lui même, personne ne peut modifier le mot de passe d’un utilisateur.

3. En définissant le mot de passe pour util1, il arrive à se connecter On clique sur ctrl+alt+F2 pour accéder à une console virtuelle libre et on tape le login et mot de passe.

Ecole Nationale des Sciences Appliquées Khouribga Département Génie Electrique

Rapport TP Linux Année universitaire 2014/2015

4. On change d’identité en util2

5. Pour charger l’environnement complet on utilise la commande Su –l util2

6. On bloque les comptes util1 par passwd -l

On vérifie l’accès à util1, ça ne fonctionne plus

7. On déverrouille le compte et on remarque qu’il est de nouveau possible d’y accéder :

8. On essaye de changer le mot de passe du compte pas la commande passwd util1, on change respectivement par, azerty, a5Tp et monutill. (azerty) ne marche pas car il est très simple pour un mot de passe (a5Tp) trop petit pour être un mot de passe (monutill) ça fonctionne bien comme mot de passe

- Enoncé 3 : Droits d'accès

1. On crée le répertoire rep1 dans /tmp grâce à la commande mkdir. Ensuite on crée le fichier fic1 grâce à la commande touch et On affiche les droits d’utilisation du contenu du répertoire par la commande ls-l

2. On change le umask par la commande umask 007

3. On crée le répertoire rep2 avec le fichier fic 2dans /tmp (les droits ont changés)

4. On Change les droits du fichier fic2 afin que personne ne puisse le modifier.

Ecole Nationale des Sciences Appliquées Khouribga Département Génie Electrique

Rapport TP Linux Année universitaire 2014/2015

Pour ceci on bascule sur le répertoire rep2 d’abord puis on utilise la commande chmod pour changer les droits.

5. On se connecte sur util2. su util2

6. Essayons de supprimer le fichier /tmp/rep2/fic2

On ne peut supprimer le fichier car les droits d’accès ne donnent pas la possibilité aux utilisateurs du même groupe de supprimer ou modifier des fichiers.

7. Pour créer un programme C sous linux on a recours à l’instruction nano, on tape nano /tmp/droits.c on obtient un fichier vide là où il on va saisir le code C.

On sauvegarde le programme et on quitte le fichier puis on passe à la compilation pour ceci on a besoin du compilateur gcc qu’on installe grâce à la commande :

Il ne nous reste donc que compiler le programme.

Ecole Nationale des Sciences Appliquées Khouribga Département Génie Electrique

Rapport TP Linux Année universitaire 2014/2015

TP3: gestion des processus. - Enoncé 1 : visualisation des processus

La commande ps permet de lister les processus. Le nom de la commande est

l'acronyme de "process status" signifiant "état des processus"

1-Pour Afficher le résumé des options possibles de la commande ps, il suffit de taper ps –help La commande ps possède de nombreuses options et n'est pratiquement jamais utilisé sans aucune options. Finalement seule 3 options sont utilisées régulièrement: "a", "x" et "f".

2-Pour afficher la page du manuel électronique concernant ps, man ps :

3-Pour lister les processus se trouvant dans le shell courant, il suffit de taper ps,

Lorsque la commande est utilisée sans aucune option, elle affiche tout les processus de l'utilisateur courant à condition qu'ils soient liés à un terminal.

4-Pour lister tous les processus s’exécutant sur le système :ps –x

Ecole Nationale des Sciences Appliquées Khouribga Département Génie Electrique

Rapport TP Linux Année universitaire 2014/2015

5-Pour lister tous les processus s’exécutant sur le système ainsi que leurs identités : ps –ef

6- on peut faire : ps –aux

7-afficher l’hiérarchie :

Les processus connaissent le numéro du processus qui les a créés et forment ainsi une hiérarchie de processus parent-enfant.

- Enoncé 2 : signaux et commande kill

Un signal est un message envoyé à un processus. Le corps du message est en fait

très simple puisqu'il est constitué en tout et pour tout d'un entier indiquant le

type du signal. Typiquement, l'arrivée d'un signal interrompt, plus ou moins

brutalement l'exécution du processus qui le reçoit.

Ecole Nationale des Sciences Appliquées Khouribga Département Génie Electrique

Rapport TP Linux Année universitaire 2014/2015

1-La commande kill -l permet d'obtenir la liste complète des signaux disponibles sur la machine.

2- Lorsqu'un processus reçoit un signal, il peut agir de différentes façons, selon l'action enregistrée pour le signal. Pour chaque signal, il existe une action par défaut, qui détermine ce qui arrive au processus si le programme ne spécifie pas d'autre comportement. Pour la plupart des signaux, le programme peut indiquer un autre comportement -- soit ignorer le signal, soit appeler un gestionnaire de signal, fonction chargée de traiter le signal. Si un gestionnaire de signal est utilisé, le programme en cours d'exécution est suspendu, le gestionnaire est exécuté, puis, une fois celui-ci terminé, le programme reprend.

Sinon, voici ,ci-dessous, la description de quelques signaux.

4-on crée un autre utilisateur avec useradd tux,et on envoi le signal SIGTERM au processus sleep 777. On remarque que le processus s’est terminé.

Ecole Nationale des Sciences Appliquées Khouribga Département Génie Electrique

Rapport TP Linux Année universitaire 2014/2015

- Enoncé 3 : commande top

1- On utilise la commande top

2-On tape top man pour afficher le manuel électronique correspondant à Top

3-On utilise la commande top avec l’option –p et on spécifie un processus, choisissons par exemple 1911 comme processus

5- Dés qu’on tape kill [sigint] top , l’opération exécutée préalablement est interrompue.

- Enoncé 4 : manipulation des processus

1-Pour afficher le processus en arrière plan on ajoute & à la fin de la ligne de commande

2-Même chose :

3-Pour lancer en avant-plan la commande sleep 4444 on ajoute un Ctrl Z :

Ecole Nationale des Sciences Appliquées Khouribga Département Génie Electrique

Rapport TP Linux Année universitaire 2014/2015

4- Pour lister les travaux (jobs) lancés à partir du shell courant :

6-on relance l’exécution du processus suspendu précédemment (4444) à l’aide de la commande bg :

7- on lance le man sleep :

8-Pour suspendre le processus on fait un Control Z.

9-Pour arrêter le processus sleep 1111en utilisant son numéro de travail, on fait :

10-on tape la commande ps pour voir les processus et leurs PID et on met un kill suivi du pid correspondant au sleep 4444 dans cet exemple c’est le 3454 (le ps ne donne pas des informations sur le processus sleep2222).

Ecole Nationale des Sciences Appliquées Khouribga Département Génie Electrique

Rapport TP Linux Année universitaire 2014/2015

11-maintenant, on arrête le processus grâce à la séquence Ctrl-C :

13-On quitte grâce à q (quitt).

Ecole Nationale des Sciences Appliquées Khouribga Département Génie Electrique

Rapport TP Linux Année universitaire 2014/2015

TP4: Gestion des disques et systèmes de fichiers. - Enoncé 1 : fdisk

1. Se connecter autant que root :

2. Lancement de l’outil de partitionnement fdisk :

3. La liste des commandes intégrées à fdisk :

Durant le reste de l’exercice , on va manipuler les partitions par billet des commandes intégré à fdisk précédentes

4. la liste des partitions actuellement définies sur le disque dur :

p : print partition table

Ecole Nationale des Sciences Appliquées Khouribga Département Génie Electrique

Rapport TP Linux Année universitaire 2014/2015

5. Passer en mode expert et attacher la liste des commandes supplémentaires.

x : extra functionnality

6. Afficher de nouveau la table des partitions :

7. Retourner en mode normal .

r : return to main menu

- Enoncé 2 : montages prédéfinis

1. Création du répertoire /mnt/dos

2. Monter le système de fichiers de la partition Windows sur /mnt/dos.

3. Visualisation des fichiers contenus sur la partition Windows.

4. Recréation automatique des montages effectués précédemment au démarrage du système:

Ecole Nationale des Sciences Appliquées Khouribga Département Génie Electrique

Rapport TP Linux Année universitaire 2014/2015

On accede au dossier /etc/fstab On ajoute en ligne de commande : /dev/sda1 /mnt/dos auto defaults 0 0

-Enoncé 3 : auto montages

1- Vérifier que le paquetage autofs est installé. Si ce n’est pas le cas, l’installer.

2- Créer le répertoire /automnt.

3- Editer le fichier /etc/auto.master pour l’automonteur autofs. Il doit contenir une entrée qui pointe vers le fichier /etc/auto.automnt pour le répertoire /automnt. :

En effet ,p armi les plus célèbres éditeurs de texte console de Linux, il faut connaître : Nano, Vim et Emacs., Nano est de loin le plus simple à utiliser et qui permet d'éditer un fichier.

4- Créer le fichier /etc/auto.automnt permettant le montage automatique du CDROM dans /automnt/cdrom en se basant sur l’exemple fourni dans /etc/auto.misc.

5- Démarrer le service autofs.

6- Insérer un CDROM dans le lecteur et essayer d’accéder à celui-ci sans le monter explicitement

ls /automnt/cdrom/ , Par conséquent , le contenu du CDROM s’affiche

7- S’assurer que plus aucun processus n’accède au système de fichiers contenu sur le CDROM. lsof /dev/cdrom

8- Attendre alors une minute et éjecter le CDROM du lecteur.

Ecole Nationale des Sciences Appliquées Khouribga Département Génie Electrique

Rapport TP Linux Année universitaire 2014/2015

TP5: Principe d'authentification sous linux. Tous les systèmes basés sur Unix possèdent un système d'authentification reposant sur les mots de passe. A partir de 1995, la bibliothèque PAM a été créée et a fournie une API pour les services relevant de l'authentification permettant à un administrateur système de “jouer” avec l'authentification sur le système à l'aide de modules. Nous allons voir comment, à l'aide de Linux-PAM, améliorer l'authentification des utilisateurs sur notre système Debian.

Le système PAM (Pluggable Authentication Modules) est, à la base, une suite de librairies partagées qui permet à l'administrateur de choisir comment les applications authentifieront les utilisateurs. PAM est donc une collection de modules qui forment une barrière entre un service de votre système et son utilisateur. L'utilisation de ces modules varie énormément allant du rejet de connexion de certains utilisateurs de certains groupes UNIX à l'implémentation de limites quant aux ressources de votre système.

La plupart des UNIX commerciaux actuels intègre ce système ainsi que pratiquement toutes les distributions Linux. Le pouvoir et la souplesse qu'offre PAM est une aubaine pour les développeurs d'applications pour systèmes Linux car cela leur évite de coder une interface d'authentification à part, ils leur suffit d'écrire un module PAM et ainsi les administrateurs pourront configurer leur application simplement avec toutes celles utilisant PAM. Ceci rend également la vie plus facile à l'administrateur qui ne devra connaitre que PAM et non tous les systèmes d'authentification pour chaque service mis en place.

Le fichier de configuration de Linux-PAM

Nous verrons comment PAM s'applique à un système GNU/Linux et plus particulièrement à Debian. Solaris et d'autres systèmes UNIX commerciaux ont une configuration un peu différente basée sur un seul fichier /etc/pam.conf. Cependant le système reste le même, sous Linux chaque service utilisant PAM aura son propre fichier de configuration. Sur la plupart des systèmes GNU/Linux, ces fichiers de configurations se situent dans le répertoire /etc/pam.d et sont nommés selon le nom du service. Par exemple, le fichier de configuration “login” se nomme /etc/pam.d/login. Jetons un oeil au fichier pour voir à quoi cela ressemble :

Les tâches gérées par PAM

La première chose à noter est que la première colonne du fichier indique le type de tâche que PAM va gérer parmis les quatre types suivant : auth (gestion des authentification), account (gestion des comptes), password (gestion des mots de passes) et session (gestion des sessions). Tandis que de nombreux modules supportent plus d'une structure (pam_unix par exemple les utilisent tous), d'autres, comme pam_craklib, ne sont destinés qu'à

Ecole Nationale des Sciences Appliquées Khouribga Département Génie Electrique

Rapport TP Linux Année universitaire 2014/2015

une seule (dans le cas de pam_craklib seule la structure 'password' sera utilisée). La compréhension de ces quatres structures est très importante pour une utilisation efficace de PAM. Voyons comment ils fonctionnent :

authentication management (authentification) : ceci permet à l'utilisateur de s'authentifier et de définir les droits du compte.Les modules utilisant ce système demandent en général un mot de passe.

account management (gestion de compte) : permet la gestion des comptes utilisateurs. Par exemple, des restrictions peuvent être définies selon les horaires ou la charge du serveur.

session management (gestion de session) : Ce sont les tâches à effectuer en début et fin de chaque session. Par exemple, démarrer un agent ssh, monter des disques, etc …

password management (gestion des mots de passe) : mise à jour du jeton d'authentification du compte d'un utilisateur, soit parce qu'il a expiré soit parce que celui-ci désire le modifier.

Contrôle de réussite des modules PAM

La colonne du milieu contient un mot clé qui détermine ce que la librairie PAM doit faire en cas de réussite ou d'echec du module. L'application n'est pas au courant du succès ou des échecs des modules dans /etc/pam.d, elle reçoit uniquement une réponse sommaire de la librairie PAM. Voici une présentation de ces quatres mots-clés :

required : si un module “required” retourne un status qui n'est pas “success”, l'opération échouera mais seulement après que tous les modules en dessous soient invoqués. La réussite d'au moins un des modules “required” est nécessaire.

requisite : si un module “requisite” échoue, l'application en est tout de suite informée et aucun autre module n'est invoqué. La réussite de tous les modules “requisite” est nécessaire.

sufficient : la réussite d'un seul module “sufficient” est suffisant. Tous les modules “sufficient” qui suivent ne seront pas invoqués. Il faut noter, toutefois, que si un module “required” échoue avant un “sufficient”, l'opération échouera ignorant les autres modules “sufficient”.

* optional : la réussite d'au moins un des modules “optional” est nécessaire si aucun autre n'a réussi.

L'empilement des modules (Stacking)

Dans la colonne la plus à droite, nous voyons le chemin où est stocké le module. Dans notre exemple, quatre modules différents sont listés pour le type “auth”. En anglais le terme “stacking” est employé dans le jargon PAM pour indiquer le fait qu'on empile les modules. Ceci sous-entend que l'ordre dans lequel passent les modules est important (nous le verrons un peu plus bas). De plus, on peut également passer des options aux modules comme c'est le cas dans notre exemple avec le module “pam_unix” qui prend l'argument “try_first_pass”. 3.5. Fonctionnement de l'empilage des modules

Maintenant que nous avons vu comment se présentait un fichier de configuration, attardons-nous un peu plus sur notre exemple et plus précisement sur le type “auth” et sa pile d'exécution en détaillant ce qui pourrait se produire en fonction de différents scénarios.

Ecole Nationale des Sciences Appliquées Khouribga Département Génie Electrique

Rapport TP Linux Année universitaire 2014/2015

Dans notre fichier d'exemple, nous avons quatre modules empilés pour le type auth :

Comme les modules sont invoqués dans l'ordre, voici ce qui va arriver :

Le module “pam_securetty” va vérifier son fichier de configuration, /etc/securetty, afin de vérifier que le terminal utilisé est listé dans le fichier. Si cela n'est pas le cas, les connexions en tant qu'utilisateur root ne seront pas permises. Vu que le statut est à “required”, le module appelera les trois autres modules de la pile mais même si tous les autres sont ok, la connexion échouera. Notons que si le module avait le statut “requisite”, l'opération aurait été soldé par un échec et aucun des autres modules n'auraient été invoqué, peu importe de leur statut.

Le module “pam_env” va fixer les variables d'environnement d'après le fichier /etc/security/pam_env.conf.

Le module “pam_ldap” va demander à l'utilisateur un mot de passe et vérifier ensuite le répertoire ldap indiqué dans le fichier /etc/ldap.conf pour authentifier l'utilisateur. Si cela échoue, l'opération peut réussir tout de même si le module “pam_unix” authentifie l'utilisateur. Si “pam_ldap” authentifie l'utilisateur, “pam_unix” ne sera pas invoqué.

Le module “pam_unix”, dans ce cas, ne demandera pas de mot de passe. L'argument “try_first_pass” lui indique d'utiliser le mot de passe fourni dans le module précédent (ici “pam_ldap”). Il essaiera d'authentifier l'utilisateur en utilisant les appels systèmes getpw*. Si “pam_unix” échoue et que “pam_ldap” avait échoué, l'opération échouera. Si “pam_ldap” échoue mais “pam_unix” est correct, l'opération sera exécutée.