# Portfolio des compétences ## Séquence 1 ## Pastille 1.2 – installation de debian ## Pastille 1.3 - comprendre le rôle de l’administrateur système L'administrateur système décide qui est autorisé à avoir un compte sur les machines >FAUX L'administrateur système crée les comptes sur les machines >VRAI L'administrateur système alloue l'espace disque des utilisateurs >VRAI L'administrateur système vérifie la nature des données personnelles des utilisateurs >FAUX L'administrateur système vérifie la nature des données professionnelles des utilisateurs >FAUX L'administrateur système garantit la confidentialité des données des utilisateurs >FAUX L'administrateur système donne les moyens permettant de garantir la confidentialité des données des utilisateurs >VRAI L'administrateur système vérifie que les moyens informatiques mis à disposition des utilisateurs sont bien utilisés pour un usage professionnel >FAUX L'administrateur système met en place un système de sauvegardes des données et des configurations >VRAI L'administrateur système est chargé de faire évoluer le matériel informatique >VRAI L'administrateur système assure la maintenance du matériel et des logiciels >VRAI L'administrateur système fournit les consommables aux utilisateurs >FAUX L'administrateur système forme et informe les utilisateurs >VRAI ## Pastille 1.4 – QCM rôle central du shell ## Pastille 1.5 – Man man nom_de_la_commande Différentes sections : • Programmes exécutables ou commandes de l’interpréteur de commandes (shell) • Appels système (Fonctions fournies par le noyau) • Appels de bibliothèque (fonctions fournies par des bibliothèques) • Fichiers spéciaux (situés généralement dans /dev) • Formats des fichiers et conventions (Par exemple /etc/passwd) • Jeux • Divers • Commandes de gestion du système • Interface du noyau Linux. • Alternative de printf : la commande man • Man /etc/passwd • Lister les différentes sections man : Man -s • Format d’un fichier de documentation man : Troff ## Pastille 1.6 – les commandes linux ### La commande cd 1. tapez la commande $ man cd Que voyez-vous apparaître ? Comment qualifier toutes ces commandes ? Où trouver l’usage de cd ? Le manuel de la commande cd (change directory) 2. Comment distinguer un chemin absolu d’un chemin relatif ? Le chemin absolu commence toujours par un / 3. Balladez-vous dans l’arborescence Fait. 4. Prenez connaissance de pushd et popd Pushd = empiler répertoires Popd = dépiler les répertoires ### La commande ls 1. quel droit faut-il sur un répertoire pour y exécuter la commande ls Droit de lecture ® 2. comment obtenir la date de modification d’un fichier ? Ls -l 3. à qui appartient la commande ls ? Est-ce une builtin commande ? Appartient à POSIX. OUI 4. peut-on utiliser des métas-caractères dans un répertoire inclus dans un chemin ? NON 5. listez tous les fichiers du répertoire courant dont le nom comporte exactement 5 caractères. 6. créez une gentille commande shell nommée « toto ». OK 7. renommez “toto” en “ls”. Quel problème cela pose-t-il ? Ls est déjà une commande. 8. si quelqu’un tape “ls”, quelle est la commande alors exécutée ? Expliquez ? erreur « niveau de shell top élevé (1000), initialisation à 1 » car ls est déjà connu. ### La commande pwd 1. Que veut dire la commande pwd ? print working directory La commande mkdir et rmdir La commande mkdir créez un répertoire temporaire Mkdir temp 2. à quelle(s) condition(s) peut-on créer un sous-répertoire du répertoire courant ? Si on a les droits d’écriture, on peut créer un sous-répertoire 3. quels sont les droits d’un sous-répertoire ? rwxr-xr-x La commande rmdir Quel avantage possède la commde rmdir par rapport à la commande rm appelée récursivement ? Ne peut uniquement supprimer un répertoire vide contrairement à rm 2. Sous quelle(s) condition(s) a-t-on le droit de supprimer un répertoire créé par quelqu’un d’autre ? Si et seulement si l’utilisateur qui a créé le répertoire nous a autorisé à écrire sur le répertoire en question OU si on est administrateur. ### Les méta-caractères 1. Qu’est-ce qu’un méta-caractère du shell ? Citez les. Permet de faire une sélection de fichier suivant certains caractères. ? $ ^ [ ] ( ) * + | {} 2. Isolez-vous dans un répertoire temporaire et créez un ficher de nom “?”, puis effacez-le. OK 3. listez tous les fichiers du répertoire courant commençant par une majuscule Ls [[:upper:]]* 4. allez dans la racine, listez les sous-répertoires du répertoire courant, sans lister leur contenu Ls -R 5. Qui étend les méta-caractères ? Quel(s) argument(s) reçoit ls quand on tape ‘ls *’ ? 6. commentez la séquence de commandes suivante : $ mkdir temp ; cd temp //créer un répertoire temp et se déplace dedans $ touch hello echo //créer un répertoire vide hello et echo $ * //affiche hello $ * ; * // affiche hello hello $ * * //affiche hello echo hello ## Pastille 1.7 - Les commandes linux La commande touch 1. Utilisez la commande ‘touch’ pour créer un nouveau fichier dans le répertoire courant Touch fichier 2) Modifiez les dates d’accès et de modification du fichier créé à la question 1) au 1er Janvier 2000 à 0h00 Touch -t 200001010000 fichier La commande cat 1. Affichez le contenu d’un fichier texte grâce à la commande cat Cat fichier 2. Affichez le contenu de 3 fichiers textes ‘fichier_1.txt’, ‘fichier_2.txt’ et ‘fichier_3.txt’ dans l’ordre fichier_2.txt, fichier_1.txt puis fichier_3.txt avec une seule commande cat. Cat fichier_2.txt fichier_1.txt fichier_3.txt La commande more/less 3. Affichez le contenu d’un fichier texte de grande taille page par page grace à la commande more (ou less) page par page More fichier Less fichier 4. Affichez le contenu d’un fichier texte de grande taille page par page en commençant à la ligne 100 5. Cherchez une chaîne de caractères dans un fichier de grande taille en utilisant les fonctionnalités de la commande ‘more’ (ou less) La commande paste La commande paste permet de coller le contenu d’un fichier dans un autre fichier. paste test.txt>test1.txt Ls | paste - - La commande tr Conversion de chaînes de caractères avec tr. echo abcd | tr “[a-z]” “[A-Z]” Donne : ABCD echo abcd | tr bd 24 a2c4 La commande diff Permet de voir les différences entre deux fichiers. diff a.txt b.txt ## Pastille 1.8 – les commandes linux Commande bg : permet de lancer une tache en background. BG identifie les tâches avec leurs PID. Commande fg : permet de reprendre un processus suspendu. Commande wait : met en pause une exécution jusqu’à la fin d’un processus donné. ## Pastille 1.9 – Les commandes linux Commande grep : permet de filtrer en sélectionnant toutes les lignes qui satisfont. Commande sed : sélectionne les lignes d’un fichier texte et applique un traitement ou un remplacement. ## Pastille 1.10 – Les quotes Comment éviter qu’un caractère ne soit interprété par le shell ? Affichez un message contenant une somme en dollars, une apostrophe et des guillemets. Commentaire : « # » Utilisation des quotes : ‘ $ variable=“secret” $ echo ‘Mon mot de passe est $variable.’ Mon mot de passe est $variable. Les guillemets : « » $ variable=“secret” $ echo “Mon mot de passe est $variable.” Mon mot de passe est secret. Les back quotes : $ echo variable=“connu”; echo “Mon mot de passe est $variable.”` Mon mot de passe est connu ## Pastille 1.11 – Les redirections 1. Redirigez la sortie standard d’une commande ls vers un fichier liste.txt (contenu remplacé si le fichier existe) Utilisation de > ls /etc/passwd > liste.txt 2. Redirigez la sortie d’erreur d’une commande ls vers un fichier erreurs.txt (contenu remplacé si le fichier existe) Utilisation de 2> 3. Redirigez la sortie standard d’une commande ls vers un fichier liste.txt ajout à la fin si le fichier existe Utilisation de >> ls /etc/passwd >> liste.txt 4. Rediriez la sortie d’erreur d’une commande ls vers un fichier erreurs.txt (ajout à la fin si le fichier existe) Utilisation de 2>> 5. Redirigez la sortie standard et la sortie d’erreur d’une commande ls vers un fichier ls.txt ls /etc/passwd > ls.txt 2>&1 Redirections avec |, tee : ls | tee test.txt" Il faut savoir que toutes les commandes produisent deux flux de données différents : • la sortie standard : pour tous les messages (sauf les erreurs) ; • la sortie d'erreurs : pour toutes les erreurs. • 2> : redirige les erreurs dans un fichier (s'il existe déjà, il sera écrasé) ; • 2>> : redirige les erreurs à la fin d'un fichier (s'il n'existe pas, il sera créé) ; • 2>&1 : redirige les erreurs au même endroit et de la même façon que la sortie standard. ## Pastille 1.12 1) Une variable peut contenir des chiffres mais pas en première position, elle ni contenir d'espace ni de tiret, mais peut contenir un souligné (underscore) 2) En faisant $ puis le nom de la variable (àverif) 3) = et il doit (du moins en bash) être collé à la variable et à l'affectation 4) par exemple pour la variable "test" il faut faire "unset test" 5) commande "set 6) Il faut une variable globale, ou passez la variable en argument du second programme 7) Oui par exemple en retour d'appel de fonction 8) avec un -z par exemple : if [ -z $test ] then echo "variable non affectée" fi si test n'a pas de valeur alors la fonction nous renverra "variable non affectée" 9) Si vaut le contenu d’une variable qui n’a pas encore été affectée (an unbound variable) 10) cela lance un interpréteur bash, (ce qui est probablement plus sécurisé et plus propre) ## Pastille 1.13 1) echo $1 $2 $3 2) echo $12 3) echo $# 4) echo $@ ## Pastille 1.14 Tombe pas sur celle la 1) A quoi correspond la directive #! dans la première ligne d'un script ? Peut-on l'écrire dans une ligne plus bas (après les commentaires où figurent l'auteur, la date...) ? Peut-on l'écrire après quelques espaces (pas en première colonne) ? 2) Que se passe-t-il si vous n'avez pas les droits d'exécution sur le chemin indiqué ? 3) Testez un script qui commence par #!/bin/cat 4) Quel droit *minimal* faut-il posséder sur un script pour pouvoir l'exécuter ? 5) Quel(s) droit(s) est(sont) nécessaire(s) pour exécuter un script en l'appelant avec ./ devant son nom ? 6) Quelle est la différence entre appeler un script par son nom (par exemple : toto) ou par la commande source (par exemple : source toto) ? La commande "source" a-t-elle un synonyme beaucoup plus court ? 7) Quelle est l'utilité de la variable d'environnement PATH ? Variable PATH : contenir des chemins vers des programmes. Ces chemins permettent d’exécuter directement une commande dans le terminal. 8) Si vous déposez un script dans un des répertoires de PATH, peut-il être exécuté sans le droit d'exécution ? 9) Peut-on surcharger une commande système avec un script bash ? (par exemple en écrivant un script et en l'appelant "ls") ? 10) Dans quel ordre est parcourue la variable PATH ? 11) Le répertoire courant peut-il se trouver dans PATH ? Comment l'insérer ? Est-ce dangereux ? ## Pastille 1.15 - alias 1) https://doc.ubuntu-fr.org/alias 2) alias 3) unalias NAME_ALIAS 4) alias rm="rm-i" ## Pastille 1.16 – les codes retours 1) Code retour : toute commande linux renvoi un code erreur compris entre O et 255, O représentant le succès de la commande. Sortie standard : sortie retournant le résultat d'une commande. Exemple : ls renvoi l'affichage des repertoires et fichiers sur la sortie standard, code retour = 0. 2) echo $? 3) En faisant man COMMAND, on retrouve les codes retour à la fin dans exit status 4)0 5) if fonctionne avec [ $A COMP $B ]; pour les tests, fini le if avec fi. $num1 -eq $num2 Vérifie si les nombres sont égaux (equal). À ne pas confondre avec le « = » qui, lui, compare deux chaînes de caractères. $num1 -ne $num2 Vérifie si les nombres sont différents (nonequal). Encore une fois, ne confondez pas avec « != » qui est censé être utilisé sur des chaînes de caractères. $num1 -lt $num2 Vérifie sinum1est inférieur ( < ) ànum2(lowerthan). $num1 -le $num2 Vérifie sinum1est inférieur ou égal ( <= ) ànum2(lowerorequal). $num1 -gt $num2 Vérifie sinum1est supérieur ( > ) ànum2(greaterthan). $num1 -ge $num2 Vérifie sinum1est supérieur ou égal ( >= ) ànum2(greaterorequal). 6) test - check file types and compare values. C'est donc une commande, elle a pour synonyme [ ] 7) on peut utiliser if avec (( )) pour tester une expression 8) $? : variable gardant la valeur de retour de la dernière commande exécutée 9) exit permet de retourner un code retour spécifique dans un script. exit sans param ferme juste le programme. 10) && permet d'enchainer les commandes sans attendre la fin de la precedente dans un script, alors que le ; est sequentiel, on ne passe pas à la commande suivante tant que l'actuelle n'est pas terminée. Il existe aussi | qui permet d'enchainer sur la commande suivante. ## Pastille 1.18 1) Le programme principal est celui par lequel on appel les programmes et fonctions créés, un peu comme le main en java. 2) Il suffit d'appeler la fonction et d'ajouter les paramètres à la suite, pas besoin de définir littéralement dans la fonction le nombre de paramétre. Exemple function test () { echo $1 }; appel : test coucou. 3) On écrit les paramètres les uns après les autres à la suite lors de l'appel de la fonction. Nombre param : $#. 15ème paramètre : $15. 4) Voir pastille 1.17 ou Fonction permettant de calculer le PGCD Cette fonction, je l'ai trouvé sur le site : http://pierrellensa.free.fr/dev/bash/www.bsdbooks.net/shells/scripting/f... ``` function pgcd() { dividende=$1 diviseur=$2 reste=1 until [ "$reste" -eq 0 ]; do let "reste=$dividende%$diviseur" dividende=$diviseur diviseur=$reste done } ``` 5) Contrairement à d'autres langages, les variables instanciées dans la fonction sont visibles en dehors et les variables instanciées avant la définition de la fonction sont visibles dans celle-ci. Il suffit d'utiliser $1, $2, etc. ## Pastille 1.19 – oskour Commande expr   1. Écrivez un script qui calcule la somme des carrés de tous ses arguments (entiers) #!/bin/sh  # Fonction qui renvoie le carré du nombre qu'elle reçoit  carre()  {      # Affichage du carré du nombre reçu      expr $1 \* $1  }  result=0 # Pour chaque nombre passé au programme  for nb in $*  do      # Récupération du carré de ce nombre      tmp=`carre $nb`     result=$(expr $tmp + $result)     # Affichage (ou autre traitement quel qu'il soit) de ce résultat      echo "Le carré de $nb vaut $tmp"  done echo "La somme des carrés est $result"  2. Écrivez un script qui calcule et affiche le produit scalaire de deux vecteurs dont les composantes sont passées en paramètres   Commande $(())   Que se passe-t-il si vous tapez la commande expr 2 + 1 ? Ca fait l’addition de 2 + 1 = 3 3. Que se passe-t-il si vous tapez la commande $((2 + 1)) ? Command not found ## Séquence 2 ## Pastille 2.2 – les inodes Informations stockées dans inode : ● Type de fichier : -,d, l, c, p, b. ● Droits d'accès : par exemple : rwxr-x--- ● Nombre de liens (physiques) : correspond au nombre de références c'est à dire au nombre de noms. ● UID : effectif du processus créateur ou affecté par chown. ● GID : effectif du processus créateur, affecté par chgrp ou hérité du répertoire. ● Taille du fichier. ● atime :date de la dernière lecture. ● mtime :date de la dernière modification. ● ctime :date de la dernière connexion. ● Adresse du fichier. Avantages et inconvénients : http://www-igm.univ-mlv.fr/~dr/NCSPDF/chapitre02.pdf Essentiellement, l'avantage est la rapidité engendrée par la simplification des mécanismes d'allocation et de libération d'espace disque. L'inconvénient majeur est évidemment qu'on perd de la place pour tous les fichiers qui ne tiennent pas dans un nombre entier de blocs, puisqu'il faut allouer un bloc supplémentaire qui sera partiellement utilisé. Il en existe de nombreux tel que GoogleFS, AppleFS, etc. ## Pastille 2.3 Enoncé : Déterminez les capacités minimales et maximales d’un FS (questions TD 7.3.2 + 7.3.3) : quel est le plus petit fichier que l'on puisse créer (par quelle commande shell ?), quel est le plus gros fichier que l'on puisse stocker sur ce FS ? Distinguer la taille d'un fichier (par exemple grace à la commande ls -l), et son occupation disque (commande du). La taille d'un fichier peut-elle être supérieure à la taille totale des blocs qui lui sont réservés sur le disque ? A quelle condition ? A partir de quelle taille de fichier certains blocs sont réservés mais ne contiennent pas des fragments du fichier ? Que contiennent-ils ? réponse partiel : Plus petit fichier = O octet -> un inode et 0 bloc. Plus grand (sans prise en compte de la triple indirection) -> 68032 octets Du représente le disk usage d’un fichier, tandis que ls -l représente la taille du fichier sans prendre en compte ses i-noeuds. Oui, si on lui attribue plusieurs inode Cela dépend du système de fichier, pour des blocs de 64 octets il faut une taille de 65 octets ? Les blocs contiennent des suites de 0. ## Pastille 2.4 Pourquoi les sauvegardes des données d'un système doivent se faire au niveau du FS et pas fichier par fichier ? Un fichier peut être rattaché à plusieurs blocs de données appartenant à des adresses différentes. Seul une sauvegarde de donnée via le file system permet d’assurer l'intégrité des données (i-nodes correspondant, etc). ## Pastille 2.5 Enoncé : Créez un fichier de 3To qui réside sur une partition de 10Go, en un temps record (man dd). Ne créez pas une partition pour cela, le but de la commande étant de montrer qu'un très gros fichier peut résider sur une partition beaucoup plus petite... A quelle condition une telle hérésie est-elle possible ? Pourquoi est-il très maladroit de réaliser ses sauvegardes en utilisant la commande cp ? Réponse : dd if=/dev/zero of=1T.bin bs=1024 count=0 seek=$[1024* 1024 * 1024*3] ls -lh if = input file of = output file (name) seek = taille du fichier Contrairement à la commande cp la commande dd permet de reproduire des zones de disques qui ne sont pas un système de fichiers telles que le secteur de démarrage (MBR), tables de partitions, traces des fichiers effacés. dd permet ainsi de sauvegarder l’image d’un disque dans sa totalité, facilitant grandement la restauration en cas de problème. ## Pastille 2.6 Enoncé Pour répondre à la question 7.3.6, il sera nécessaire de schématiser sur un large FS les fragments de fichiers et inodes créés lors de l'exécution des commandes proposées. Vous vous remémorerez cet exercice fastidieux pour comprendre le rôle et la difficulté de la commande fsck (man fsck). Si fsck retrouve des fichiers non référencés dans l'arborescence, qu'en fait-elle ? Comment s'appelle le service des objets trouvés dans les villes anglophones ? Réponse : Schéma géant du disque +réponse : fsck - check and repair a linux filesystem Ils sont stockés dans les “objets perdus” : lost and found ## Pastille 2.7 : Script du cours de la commande PWD Ecrire en langage C (ou un langage de votre choix) la commande pwd. Inspirez-vous directement de la pastille précédente. Aide pour résoudre cette question : on peut définir deux fonctions qui nous rendront grand service : int SearchByName (char *entry, int rep); fonction qui prend en paramètre un nom d'objet (un fichier ou un répertoire), et le numéro d'inode d'un répertoire ; puis qui cherche cette entrée dans le répertoire et renvoie l'inombre correspondant à cet objet. char * SearchByNumber( int entry, int rep); fonction qui prend en paramètre un inode de fichier ou de répertoire, et le numéro d'inode d'un répertoire ; puis qui cherche cette entrée dans le répertoire et renvoie son nom. Challenge : la commande pwd peut alors s'écrire en 3 lignes environ. Réponse : (script du cours ) #!/bin/bash -u #1 nb blocs #2 nom du fichier # retour vrai ou faux (différent test cree et if [ cree creer(){ dd if=/dev/zero of=$2 bs=1024 count=1 seek=$(($1-1)) 2> /dev/null } BORNE_SUP=1000 BORNE_INF=0 #retourne 1 while creer BORNE_SUP test;do rm -f test BORNE_SUP=$(($BORNE_SUP *10)) done N=$(($BORNE_SUP/2)) while [ $(($BORNE_SUP - $BORNE_INF)) -gt 1 ] ; do if creer $N test ; then BORNE_INF=$N else BORNE_SUP=$N fi N=$((($BORNE_SUP-$BORNE_INF)/2+$BORNE_INF)) done echo $N blocs ## Pastille 2.8 Grace à la commande dd, vous pouvez créer un très gros fichier et très peu de temps. Si vous ne le saviez pas, retournez à la pastille 3. Pour connaître le résultat d'une commande shell, vous pouvez tester la valeur de retour de la dernière commande en accédant à la variable $? Ecrire en shell un algorithme qui va calculer la taille maximale d’un fichier supporté par ext4 (ou par le FS installé pour votre partition d’essais). Soucieux de l'efficacité de tout programme, vous utiliserez impérativement une dichotomie. (Au fait, quelle est la complexité d'une dichotomie ?) Réponse : PTDR ## Pastille 2.9 PTDR DEUX FOIS ## pastille 2.10 – QCM 1. Utiliser RAID sur un serveur dispense de faire des sauvegardes >NON 2. A propos de RAID 0 >RAID 0 peut améliorer les performances en lecture RAID 0 peut améliorer les performances en écriture 3. RAID 1 nécessite au moins 2 disques >VRAI 4. RAID 1 assure de la redondance de données >VRAI 5. RAID 1 peut améliorer les performances en lecture >VRAI 6. RAID 1 fonctionne comme RAID 0 en multipliant la redondance par 2 >FAUX ## Pastille 2.11 – setuid : Lorsqu’un utilisateur exécute un programme, celui-ci se lance avec les droits de cet utilisateur. Je (utilisateur fabien) lance un script toto.sh, celui-ci aura les droits de fabien, normal. Mais il arrive que l’on veuille lancer une commande spéciale – en général dévolue à root – en tant que simple utilisateur, l’exemple flagrant étant la commande passwd (sous /usr/bin/passwd) qui est une commande root, mais tout un chacun peut pourtant changer son mot de passe avec cette commande. En regardant les droits sur passwd, on s’aperçoit que ce fichier est setuidé : $ ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 25708 sep 25 2007 /usr/bin/passwd C’est-à-dire que lorsqu’un utilisateur lance la commande passwd, elle est lancée avec les droits du superutilisateur, ainsi l’écriture pourra se faire dans le fichier /etc/passwd et l’utilisateur aura changé son mot de passe sans être root. Sans le setuid, l’utilisateur n’aurait pas pu écrire dans le fichier /etc/passwd. La notion de setuid n’existe pas pour les répertoires. Quelle est la commande qui permet à un usager de changer son mot-de-passe de login ? $ passwd Changer shell ? $ chsh -s /bin/bash username Changer son fullname ? $ chfn Où est stockée l'emprunte du mot-de-passe d'un usager ? fullname ? /etc/shadow et /etc/passwd Quels sont les droits sur ces fichiers ? Un utilisateur a-t-il le droit d'écriture ? Pourtant, il peut changer ces informations... Grâce au setuid il peut changer écrire dessus sur les informations le concernant. setgid : Le principe du setgid est le même que le setuid pour un fichier, mais bien entendu au niveau des droits du groupe. Un exécutable setgidé peut donc être lancé avec les droits du groupe auquel il appartient. Par contre, le comportement change lorsqu’il s’agit d’un répertoire. Lorsqu’un répertoire est setgidé, tous les fichiers créés dans ce répertoire appartiennent au même groupe que le répertoire. Ainsi, imaginons un répertoire conteneur, plusieurs personnes – Jean-Claude, André et Robert – travaillent dedans pour un même projet, il est bon de le setgider, de cette façon, les fichiers créés appartiendront tous au même groupe et non aux groupes de chaque utilisateur individuel. STICKY BIT: Lorsque l’on positionne le sticky bit, un exécutable restera en mémoire même lorsqu’il aura terminé son exécution, ainsi, il se lancera plus rapidement au prochain lancement. Cette pratique tend à être obsolète. Seul l’administrateur système peut positionner le sticky bit. En ce qui concerne les répertoires, le sticky bit sert à sécuriser un fichier se trouvant dans un répertoire où tout le monde a les droits en écriture. Par exemple pour le répertoire /tmp (en général tout le monde a le droit d’écrire dedans), il serait gênant qu’un autre utilisateur puisse supprimer un de vos fichiers. Pour y remédier, on positionne le sticky bit sur ce répertoire, n’autorisant la suppression d’un fichier uniquement à son propriétaire. Affectation : chmod ug+s nom_du_fichier # pour activer les Setuid et Setgid chmod u+s nom_du_fichier # pour activer le Setuid chmod g+s nom_du_fichier # pour activer le Setgid chmod +t test # sticky bit Quels sont les droits affectés au répertoire /tmp de votre distribution ? Umask : L’umask est un outil de gestion des droits sur la création des fichiers et des répertoires qui permet de gérer une certaines sécurité et une restriction des droits par défaut. En définissant un umask, on retire automatiquement l’umask des droits défini sur la création des futurs fichiers ou répertoires. Fonctionnement -> Lors de la création d’un fichier, les droits par défaut qui s’y appliquent sont « rw-r--r--». On peut imaginer que par défaut, le fichier est créé par défaut avec les droits « 666 » ou « rw-rw-rw- » mais que l’umask qui s’y applique enlève automatiquement certains droits qui sont les droits d’écriture pour le groupe et les autres utilisateurs. Un répertoire quant à lui est créé par défaut avec les droits « 777 », il faut donc calculer l’umask en conséquence car un umask de « 022 » donnera un droit final de « 755 » soit « rw-r---r-- » Qui décide de sa valeur : administrateur système. ## Pastille 2.12 Wassim : Qu’est-ce que la mémoire virtuelle ? Une partition swap est-elle indispensable ? obligatoire ? Mémoire virtuelle = mémoire provenant du disque dur, et qui va aider le mémoire RAM lors de taches difficiles. Le défaut, c’est que si tu alloue 3GB de mémoire virtuelle, tu va perdre 3GB de stockage sur ton Disque dur. Partition swap = pas obligatoire mais intéressant (mémoire virtuelle) Qui peut activer et désactiver une partition swap, et par quelles commandes ? Administrateur swapoff /dev/sda6 swapon /dev/sda6 Quel est le risque d’avoir une mémoire virtuelle trop petite ? Lenteur disque Comment choisir la taille du swap sur une machine ? Taille swap = double de la RAM Thomas : La mémoire virtuelle est une fonctionnalité qui permet d’augmenter artificiellement la mémoire vive d’un ordinateur, en transférant temporairement des données vers le disque dur de l’ordinateur. Cette mémoire est perçue par l’application qui l’utilise (par exemple le système d’exploitation) comme de la mémoire vive bien qu’elle soit en réalité stockée sur le disque. Grâce à cette astuce, l’ordinateur devient capable d’exécuter des programmes dont la taille excède celle de la mémoire vive vraiment disponible sur la machine, en transférant des pages de données qui ne sont pas nécessaires dans l’immédiat. Si les données précédemment transmises ont besoin d’être récupérées, alors d’autres pages de données sont transférées à leur tour pour rapatrier celles dont on a besoin. Ce processus d’échanges permanents entre la mémoire vive et la mémoire de masse du disque dur est nommé « pagination » ou « permutation », et l’espace de stockage sur le disque dur utilisé pour cela est appelé « fichier d’échange » ou « swap». Le swap n’est pas obligatoire mais fortement recommandé. Particulièrement utile lorsqu’on veut mettre son ordinateur en veille prolongée (hibernation). Il n’y a pas vraiment de risque aujourd’hui d’avoir une mémoire virtuelle trop petite en raison de la grande quantité de ram dans les ordinateurs. Cependant le risque majeur d’avoir une mémoire virtuelle trop petite est lié à l’utilisation de plusieurs processus simultanément en mémoire, un processus peut écraser les données en mémoire d’un autre. ## Pastille 2.13 Quelle est la commande qui permet de monter une partition sur l’arborescence ? Comment s’appelle le répertoire qui accueillera la racine de la partition ? Commande mount Répertoire / Des options de montage permettent de restreindre la vision de la partition en inhibant certains bits des droits de fichiers contenus dans la partition. Lesquelles ? root peut-il outrepasser ces restrictions ? JSP Comment fait l’administrateur pour rendre inscriptible une partition montée en lecture seule ? Donnez la commande. A quelle occasion cette opération est-elle effectuée par le système (aide : man fsck) ? Commande : jsp Lors d’un file system check Peut-on démonter une partition ? Qui et comment ? A quelle(s) condition(s) ? Oui, root, à l’aide de la commande « umount » Condition : système de fichier ne doit pas être en cours d’utilisation Peut-on démonter la racine ? Non car tout le temps en cours d’utilisation ## Pastille 2.14 Que trouve-t-on dans /etc/fstab (man 5 fstab) ? Qu’est-ce qu’une vague de fsck ? Liste des disques utilisés au démarrage et des partitions de ces disques Vague fsck = je pense : vague de file système check pour tout vérifier petit à petit et pas en même temps. Que trouve-t-on dans /etc/mtab ? Modifie-t-on ce fichier avec un éditeur de texte ? Pourquoi préférer la commande mount ? liste des périphériques actuellement montés Non on ne le modifie pas car il peut servir de base après un test avec mount pour modifier le fichier fstab ## Pastille 2.15 Quand le premier fsck est exécuté pendant la procédure de boot. Sur quelle partition s’exécute-t-elle ? Etapes du boot : Le chargement et l’initialisation du noyau. La détection et la configuration des périphériques. La création de processus système « spontanés ». L’intervention éventuelle de l’opérateur système (en mode manuel). L’exécution des scripts de démarrage. Les opérations en mode multi-utilisateurs. Etape 5 du boot : Lors des lancements des scripts de démarrage, vérification de l’intégrité du système de fichiers. Sur la partition racine car c’est la seule en lecture seule. Pourquoi un fsck ne s’exécute que sur une partition montée en read-only ? Est-ce le cas pour la première partition qui fait l’objet de ce fsck ? Par sécurité, le système démarre en mode de récupération et monte la partition système ( / ) en lecture seule pour être certain de ne pas faire de bêtise en écrivant sur un système de fichier incohérent. Oui c’est le cas. A quoi sert le répertoire lost+found que l’on trouve généralement dans les racines des partitions ? Quand un administrateur y trouve des fichiers, que s’est-il passé ? Que connaît-il de ces fichiers ? Qu’en fait-il ? Lost+found = objets trouvés. Répertoire utilisé par fsck pour le stockage de fichiers à récupérer si un incident s’est produit sur le système. Un administrateur trouvant des fichiers à l’intérieur signifie que le système a eu un problème (par exemple: crash). Il peut les remettre dans les répertoires d’origines. ## Pastille 2.16 Critiquez la table des partitions choisie par votre distribution favorite. Essayez d’y trouver des vulnérabilités. La table des partitions d’OS X est idéale car elle assure une haute sécurité. JSP Partitionnement GPT avantages : ● il prend en charge des tailles de partitions > 2.2 To ● Capacité de 128 partitions par défaut. (On peut en avoir plus, ou moins) ● Table de partition en 2 exemplaires: une au début du disque une à la fin. (plus robuste) ● Toutes les partitions sont de type primaires: Pas de notion de partition étendue et logiques. Et donc pas de problème d'interdépendance entre les partitions logiques ou vis à vis du container (la partition étendue)… Ce qui lève certaines contraintes de modifications du partitionnement et est plus robuste. Microsoft fonctionne sur les nouveaux pc avec GPT/UEFI, UEFI a rencontré de nombreuses failles ces dernières années. https://www.zdnet.fr/actualites/le-secure-boot-uefi-a-du-plomb-dans-l-aile-a-cause-de-microsoft-39840598.htm Sinon faille MBR : https://www.futura-sciences.com/tech/actualites/informatique-securite-nouveau-rootkit-attaque-mbr-14206/ ## 2.17 Wassim : Énoncez les commandes correspondantes à chacune de ces étapes. les disques physiques sont partitionnés et les partitions LVM sont formatées sous un format spécifiques (une collection de blocs appelés physical extents). pv : pvcreate /dev/sdb A partir des physical extents, LVM construit des volume groups. Ces volume groups sont ensuite considérés comme des disques durs. vg : vgcreate nomduvg /dev/pv1 /dev/pv2 … Les volume groups sont partitionnés (les partitions sont appelées logical volumes) puis formatées avec un système de fichier comme ext4. lv : lvcreate -n nomdulv -L taille nomduvg Il reste enfin à monter les partitions sur l’arborescence, comme tout autre partition. fs : mount /dev/nomduvg/nomdulv /pointdemontage Est-il possible de créer des volume groups comportant des physical extents répartis sur plusieurs disques durs ? Oui je pense Corentin : Création physical volume : pvcreate /dev/sda Création volume group : vgcreate VGO /dev/sda Création des LV : lvcreate -n(nom) “LVTEST” -L(taille) 5go VGO Création de la partition : mkfs -t ext4 /dev/mapper/VG00-LVTest Montage du volume : mount /dev/mapper/VG00-LVTest /Test Il est tout à fait possible de créer des volums group comportant plusieurs pysical extents répartis sur plusieurs disques durs : “Un groupe de volumes ou « VG » pour « volume group » est, comme son nom l'indique, un ensemble de volumes physiques. On a donc un ou plusieurs volumes physiques dans un groupe de volumes, et pour utiliser LVM, il faut obligatoirement au moins un groupe de volumes. Habituellement, sur les gros serveurs, on essaye de regrouper les disques en fonction de leur caractéristiques (capacités, performances, etc.). Pour un particulier, le fait de mettre plusieurs disques dans un même groupe de volume peut permettre « d'étaler » un système de fichiers sur plusieurs disques, et d'avoir donc /home par exemple qui utiliserait 2 disques. Une telle configuration est tout de même assez dangereuse en cas de perte d'un disque… De plus, cela n'apporterait aucun gain de performance contrairement à du RAID-0 par exemple. :)” ## Pastille 2.18 1. Nouvelle installation en laissant de l’espace libre 2. fdisk /dev/sda, n pour créer une nouvelle partition, w pour l’écrire sur le disque et quitter, puis pvcreate /dev/sda8 par exemple 3. lvcreate -L8000 -n nom_volume_logique voulume_groupe 4. vgcreate “nom volume groupe” /dev/sda8 5. lvextend -L100G /dev/volume_groupe/volume_logique 6. lvdisplay, vgdisplay 7. X 8. lvresize --size -10G /dev/volume_group/volume_logique Il est possible d'utiliser le LVM pour tous vos systèmes de fichiers, exception faite de « /boot », qui pose quelques problèmes. Par contre il est tout à fait possible de l'inclure sur un ou plusieurs volumes logiques. D'ailleurs la plupart des distributions proposent aujourd'hui cette option dès l'installation. La seule contrainte est de prévoir le chargement du module LVM dès le démarrage. Pour être utilisé, le LVM nécessite de disposer du driver qui permet de générer la couche assurant le mapping (la carte) entre périphérique physique et vue logique, des utilitaires pour manipuler ce mapping et des périphériques physiques ## Pastille 2.19 nothing to do ## Pastille 2.20 Les 4 principaux niveaux de RAID sont : Le RAID0 ou stripping qui permet de gérer deux disques en un seul 1+1=2 ou 1+1+1=3 qui n’aura comme seuls avantages que d’étendre la capacité de sauvegarde mais surtout de doubler ou tripler… les rapidités en lecture et en écriture et ce sans filet : un des disques tombe en panne tout est perdu. Le RAID1 ou mirroring comme son nom l’indique « miroir » les données sont écrites en partie double sans augmentation de capacité ou de débit 1+1=1 c’est, sous certaines conditions, une manière de sécuriser les données. Le RAID10 qu’il faut plutôt interpréter comme 0+1 c’est la combinaison des 2 modes précédents 2+2=2, on comprend de fait l’aspect positif marier débit et pseudo-sécurité mais c’est très dispendieux puisqu’on va doubler les disques pour une même capacité. Enfin le RAID5 mis en œuvre à partir de 3 disques identiques ou plus dont la capacité totale est égale au cumule des disques moins 1 disque soit pour 3 disques de 1To : 3To-1To = 2To, 4 disques =3To, 5 disques=4To… avec un cumule équivalant sur les rapidités en lecture et en écriture ex : pour des disques à 60Mo/s on obtiendra 120Mo/S pour 3 disques, 180Mo/s pour 4 disques et 240Mo /s pour 5… Ces exemples ne sont que théoriques bien sûr. Compte tenu de ce qui vient d’être dît le RAID5 est le mode qui a la faveur du plus grand nombre car il a le triple avantage de permettre d’étendre les capacités en augmentant les débits de manière économique et pour couronner le tout de manière pseudo-sécuritaire. Comme vous l’avez remarqué depuis le début de l’article je parle de pseudo-sécurité. Si vous avez déjà lu des articles à propos du RAID vous avez sans doute lu que les rédacteurs dénoncent en général l’aspect sécuritaire de la technologie; pourquoi? Simplement parce que tout passe, tout casse, tout lasse, plus sérieusement parce qu’aucune technologie basée sur la duplication instantanée ou agrégé par bandes à parité répartie (RAID5) ne garantit contre les pannes multiples simultanées. D’ailleurs afin d’éviter les pannes simultanées dues à des défauts de série ou plus simplement aux limites « naturelles » de durée de vie d’un disque, les pros « panachent » les provenances de leurs approvisionnement afin d’éviter d’intégrer des disques d’une même série dans une grappe RAID5. Un dernier point à propos du RAID5 et de la nécessité de l’employer de nos jours car pour nous, l’aspect économique prime sur le reste. En imaginant que nous restions avec une simple panne de 1 disque sur une grappe qui en compte 3 de 3To chacun soit au final 6To exploitables pour un peu moins de 300€ aujourd’hui ; la grappe mettra de 16 à 24 heures à se reconstituer, presque 1 jour de travail intense pour le disque neuf certes mais aussi pour les 2 autres qui ont peut être le même âge que celui tombé en panne ?!… C’est peut-être faire de la corde raide non ? Imaginez faire faire le même boulot à des grappes de disques de 4, 6 ou 8To ou bientôt 10 ou 12To comme récemment annoncé dans la presse ce ne sera plus 24 heures mais en semaine qu’il faut compter. Il y a aussi un aspect pas encore abordé : les débits. Je mets là l’accent sur l’utilisation du RAID dans un NAS et plus précisément connecté en Gigalan. Dans le meilleur des cas en Gigalan utilisé normalement les débits vont plafonner je dis bien plafonner à un peu moins 120Mo /s (limites de la norme), or certains disques de grosse capacité aujourd’hui avoisinent ces débits en natif ce qui n’était pas le cas il y a quelques années où quand on avait du 80Mo/s on était content et donc tenté d’utiliser le RAID pour la capacité et la rapidité. Pour info 80Mo/s permettent de streamer 4 ou 5 films en HD sur le réseau local. Les constructeurs de NAS mettent souvent en exergue des débits supérieurs, quelquefois de manière floue, mais ne cherchez pas, il s’agit de transfert interne entre disques, la belle affaire ! Donc aujourd'hui nous pouvons disposer de disques qui allient grande capacité et débit les 2 raisons qui ont présidé initialement à l'élaboration de la technologie. # Séquence 3 t le plus fort wawa gro gg pour l'ASI ## Contenu séquence 3 corentin ## Pastille 3.2 BIOS (maxcoreboot) Bootloader(grub, lilo, silo, syslinux, mbr dos ...) max 512 octets Noyau Initrd (rajouté au processus de boot pour permettre le chargement dynamique de driver ainsi que la configurations de certain éléments comme le réseau ou le NFS) Init (initramfs qui est chargé (c'est la même chose mais en mieux, le premier est un block device et le second une archive) avant le montage de la racine. Celui-ci est monté à la racine. Son boulot, rendre la vraie racine accessible. NFS, driver manquant, LVM, toutes les raisons sont bonnes pour utiliser un initrd.) rc (/etc/rcX.d où X est un runlevel) Si on monte une clef usb avant le disque dur on peut monter le disque interne comme si il s'agissait d'une simple clef usb et par exemple dumper la base des mp http://assiste.com.free.fr/p/abc/a/cle_usb_risques_et_menaces.html ### Comment éviter une telle attaque sur la séquence de BIOS ? il suffi d'interdire le montage de périphériques externe dans le bios ET de mettre un mot de passe au bios pour que personne ne puisse changer la configuration ## Pastille 3.3 1. BIOS signifie "Basic Input Output System" >VRAI 2. Le BIOS charge le noyau du système qu'il va lancer, éventuellement après sélection par l'utilisateur >FAUX 3. Le BIOS est standardisé de telle manière qu'il peut gérer n'importe quel matériel compatible PC >FAUX 4. Le BIOS est spécifique à chaque carte mère >VRAI   5. Le BIOS fournit un certain nombre d'interfaces avec le matériel grâce à un gestionnaire d'interruptions en mode réel >VRAI 6. Le BIOS s'exécute en mode protégé du processeur compatible x86 >FAUX 7. Le BIOS s'exécute en mode réel du processeur compatible x86 >VRAI 8. Le BIOS charge le bootloader de premier niveau situé sur le Master Boot Record du disque de démarrage >VRAI 9. Le BIOS charge le bootloader de second niveau situé sur un système de fichier (sur un disque dur, une clé USB, ...) >FAUX 10. Le BIOS empêche le lancement d'un bootloader non-signé par une autorité de certification reconnue de la machine >FAUX 11. UEFI signifie "Unified Extensible Firmware Interface" >VRAI 12. L'UEFI n'est pas exclusivement réservé aux IBM PC compatible >VRAI 13. L'UEFI ne peut charger de bootloader que depuis le MBR >FAUX 14. L'UEFI charge le bootloader de second niveau depuis le MBR >FAUX 15. L'UEFI peut accèder aux systèmes de fichiers de type FAT pour charger le bootloader de l'OS >VRAI 16. L'UEFI permet d'empêcher le chargement d'un bootloader non signé par une autorité de certification reconnue par la machine >VRAI 17. L'UEFI peut être exécuté en mode protégé ou en mode long du processeur compatible x86 >VRAI 18. L'UEFI permet de lancer des systèmes d'exploitation que le BIOS ne pouvait pas lancer >FAUX 19. L'UEFI permet de remplacer le bootloader du système d'exploitation >FAUX 20. L'UEFI permet de gérer des disques durs de plus grande taille que le BIOS >VRAI ## Pastille 3.4 oui on peut interrompre le bootloader en tapant e pour "edit ensuite mettre rw puis init=/bin/bash pour mettre un mot de passe au grub: /etc/grub/grub.cfg #Password set superusers = "justegeek" password justegeek justegeek Si password root perdu il faut passer en recovery mode : https://www.leunen.com/linux/2008/10/mot-de-passe-oublie/ ## Pastile 3.5 Il faut pour cela sécuriser le grub: /boot/grub. Il s’agit du fichier grub.conf, grub.cfg ou menu.lst Sécurisation -> ajout a /boot/grub/menu.lst password --md5 XXX man grub-md5-crypt pour avoir le crypté de son password ou en SHA512 password --encrypted YYYYY AUTRE CHOSE /etc/inittab. grub2-editenv - unset menu_auto_hide https://linux-attitude.fr/post/securite-du-processus-de-boot securiser le grub: https://www.justegeek.fr/proteger-ledition-du-grub-avec-mot-de-passe/ nano /boot/grub/grub.cfg nano /etc/grub2.cfg rajouter les lignes: #Password set superusers = "phoenix" password phoenix phoenix ## Pastille 3.6 On peut récupérer de la sorte le mot de passe administrateur d’une machine sous Unix. les partitions dans /etc/fstab le clavier : /etc/init.d/keymap.sh partitions:etc/fstab connexion user: rmnologin Scénario : http://www.linux-france.org/prj/edu/archinet/systeme/ch47s06.html Description des services /etc/init.d : https://doc.ubuntu-fr.org/init_d ## Pastille 3.7 /etc/systemd.conf CPU affinity=1 sudo systemctl set-environment Variable="bonjour" then restart systemd-networkd and watch the journal for the service with the -f/--follow ## Pastille 3.8 https://medium.com/@benmorel/creating-a-linux-service-with-systemd-611b5c8b91d6 ans /etc/systemd/system crée un script que t'appelle moncul.service dedans: [Unit] Description="je fait le wget" ConditionPathExists=/home/ozome/test/ [Service] Type=forking ExecStart=/bin/sh -c 'wget -O /home/ozome/test/index.html http://checkip.dyndns.org/' TimeoutSec=0 StandardOutput=tty RemainAfterExit=yes SysVStartPriority=99 [Install] WantedBy=multi-user.target ensuite : pour l'activer au démarrage: systemctl enable moncul.service pour le tester systemctl start moncul.service ## Pastille 3.9 -> PAS OK ## Pastille 3.10 -> PAS OK ## Pastille 3.11 Pourquoi les commandes halt ou shutdown sont inopérantes ? Parcequ'ils necessitent des modules initialisés par init, comme on à remplacé init ils n'existent pas ## Pastille 3.12 Oui, il suffit d’avoir un accès à quoique ce soit pour pouvoir corrompre des données dans la machine. Surtout pour les cas présenté ici. GRUB : GNU GRUB (acronyme signifiant en anglais « GRand Unified Bootloader ») est un programme d'amorçage de micro-ordinateur. Il s'exécute à la mise sous tension de l'ordinateur, après les séquences de contrôle interne et avant le système d'exploitation proprement dit, puisque son rôle est justement d'en organiser le chargement. Lorsque l'ordinateur héberge plusieurs systèmes (on parle alors de multi-amorçage), il permet à l'utilisateur de choisir quel système démarrer. Classez ces mots-de-passe dans l'ordre chronologique des attaques de la séquence d'initialisation : Digicode de l'accès à la salle où se trouve la machine Mot-de-passe protégeant la configuration du BIOS Mot de passe GRUB Mot de passe root   ## Pastille 3.13 Faire une sauvegarde et restaurer ou noter les mdps ? ## Pastille 3.14 Systemctl enable "programme"   ## Pastille 3.15 Quelques astuces commande journalctl : https://www.linuxtricks.fr/wiki/utiliser-journalctl-les-logs-de-systemd ## Pastille 3.16 1. Au démarrage, le script S01rsyslog est exécuté avant le script S03exim4 >VRAI 2. Même lorsqu'on utilise systemd, un script shell acceptant les paramètres start, stop, status est indispensable pour la gestion du cycle de vie d'un service. >FAUX 3. systemd permet une meilleure parallélisation des lancements de services que SysV init >VRAI 4. Un service lancé via un script de /etc/init.d ne doit pas être arrêté via une commande systemctl (et vice-versa) >FAUX 5. L'utilisation des sockets de systemd permet d'accélerer de manière drastique le démarrage d'un serveur >VRAI 6. Contrairement à SysV init, systemd est spécifique à Linux, il n'est pas disponible sur les autres Unix >VRAI ## Pastille 3.17 Si un OS s'installe en écrasant la configuration précédente du boot-loader, que se passe-t-il ? Comment corriger ce dysfonctionnement ? sudo update-grub Peut-on partager des données communes aux divers systèmes d'exploitation présents sur une machine ? Comment ? Est-ce possible pour n'importe quel file-system ? Utilisation de SAMBA je pense ## Pastille 3.18 PXE : - requete DHCP Dynamic Host Configuration Protocol = récupérer une adresse IP dynamiquement à partir d'un serveur DHCP - requete BOOTP Bootstrap Protocol = Bootstrap Protocol (BOOTP) est un protocole réseau d'amorçage, qui permet à une machine cliente sans disque dur de découvrir sa propre adresse IP, l'adresse d'un hôte serveur, et le nom d'un fichier à charger en mémoire pour exécution. On peut représenter l'amorçage comme une opération se produisant en deux phases : Détermination d'adresses et sélection du fichier de démarrage, c'est ici qu'intervient BOOTP. Transfert du fichier de démarrage, le transfert utilisera typiquement le protocole TFTP, SFTP ou encore FTP. Le serveur BOOTP utilise le port 67 et le client BOOTP utilise le port 68. Le protocole BOOTP est défini dans la RFC 951. DHCP est un protocole beaucoup plus avancé que BOOTP, mais il est plus complexe à mettre en place. La plupart des serveurs DHCP prennent aussi BOOTP en charge. ## Pastille 3.19 D'autres générateurs sont fournis avec systemd, par exemple : systemd-getty-generator : instancie les terminaux au démarrage du système systemd-default-display-manager-generator : permet de configurer le display manager au démarrage (GDM, KDM, ...) systemd-sysv-generator : créé les unités basées sur les scripts de SysV init ## Pastille 3.20 Le fait d'accéder ou de se maintenir, frauduleusement, dans tout ou partie d'un système de traitement automatisé de données est puni de deux ans d'emprisonnement et de 60 000 € d'amende. Lorsqu'il en est résulté soit la suppression ou la modification de données contenues dans le système, soit une altération du fonctionnement de ce système, la peine est de trois ans d'emprisonnement et de 100 000 € d'amende. Lorsque les infractions prévues aux deux premiers alinéas ont été commises à l'encontre d'un système de traitement automatisé de données à caractère personnel mis en œuvre par l'Etat, la peine est portée à cinq ans d'emprisonnement et à 150 000 € d'amende. # Séquence 4 ## Pastille 4.2 Adresse / Masque réseau Classe A B C D E et masque pesronnalisé ## Pastille 4.3 1. 123.67.768.1 est ... ce n'est pas une adresse IP 2. Le réseau 123.45.67.64/26 peut comporter jusqu'à 62 machines contient la machine de n° 123.45.67.100 3. Dans le réseau 10.0.1.0/26, la passerelle peut-être 10.0.1.15 peut-être 10.0.1.43 peut-être 10.0.1.62 4. Le netmask d'un réseau IPv4 appliqué avec un ET bit-à-bit à l'adresse IP d'une machine donne l'adresse réseau de cette machine inversé bit-à-bit puis appliqué avec un ET bit-à-bit à l'adresse IP d'une machine donne l'adresse locale de cette machine est calculable à partir de la taille du réseau local : pour aa.bb.cc.dd/sz, le netmask est ((2^sz)-1)<<(32-sz) 5. Quelles valeurs peuvent être des netmasks ? 255.255.255.0 255.255.254.0 255.255.255.240 255.255.255.192 255.255.255.224 6. L'adresse IP d'une machine est 123.45.1.225 et sa passerelle est 123.45.1.207 le réseau local comporte au moins 62 adresses 7. Une machine qui ne possède pas de passerelle... ne pourra pas accéder à Internet ne pourra communiquer qu'avec le réseau local 8. une machine peut faire partie de plusieurs réseaux être en même temps passerelle et DNS 9. Connecter une machine avec un câble ethernet est possible à condition d'avoir une carte ethernet ## Pastille 14 Connection ssh : ssh pi@adresseIP Par défaut, la raspbian est installée avec un utilisateur nommé pi qui a choisi un pot-de-passe trivial (raspberry) ## Pastille 15 générer paire clef ssh : ssh-keygen -t rsa Une fois que vous aurez entré cette commande, quelques questions apparaîtront: Enter file in which to save the key (/home/james/.ssh/id_rsa): En général, il est recommandé de laisser tel quel (appuyez sur ENTRÉE sans taper quoi que ce soit) afin que le générateur de clé puisse créer la clé à l’emplacement par défaut. Les questions qui apparaîtront ensuite : Enter passphrase (empty for no passphrase): Et: Enter same passphrase again: Pour des raisons de commodité, j’aime laisser ceux-ci vides aussi. De cette façon, après avoir configuré la clé avec votre serveur distant, vous n’aurez pas besoin d’utiliser un mot de passe pour vous connecter. Vous entrerez ssh utilisateur@ipduserveur et serez immédiatement connecté. Mais si vous avez besoin de plus de sécurité, vous pouvez entrer une phrase secrète (passphrase) dans cette section. Si vous choisissez cette option, vous devrez entrer le mot de passe chaque fois que vous vous connectez au serveur distant. ## pastille 16 ## pastille 17 ## pastille 18 1. Une machine à IP fixe possède son propre n° IP au moment du boot (avant d'accéder au réseau) >VRAI 2. Avec l'accès à un serveur DHCP, une machine ne peut pas conserver une adresse IP constante. >FAUX 3. Un réseau local peut fonctionner sans serveur DHCP. >VRAI 4. On peut trouver au sein d'un même réseau des adresses statiques et dynamiques. >VRAI 5. Le serveur DHCP peut calculer lui-même l'adresse de la passerelle en fonction du netmask. >FAUX 6. L'utilisation d'un serveur DHCP attribue des adresses dynamiques qui gênent la mise en place du service NFS (l'adresse du serveur n'est pas connue au moment du montage). >FAUX 7. Une adresse fournie par DHCP a une durée de vie limitée (le temps d'un bail) >VRAI 8. La configuration " IP fixe ou IP dynamique " est propre à chaque interface réseau. >VRAI 9. Dans notre data-center, l'adresse du serveur DHCP est obtenue dynamiquement au démarrage de l'interface de l'adaptateur USB/ethernet >FAUX 10. Une image iso bootable peut être copiée sur une carte SD ou une clef USB par la commande dd >VRAI 11. La commande dd suivante copie une carte SD connectée en /dev/sd1 sur /dev/sd2 dd if=/dev/sd1 of=/dev/sd2 bs=4096 >VRAI 12. On peut trouver dans les logs du serveur DHCP une trace des requêtes des machines clientes ainsi que les adresses attribuées. >VRAI 13. La loi impose à un administrateur de conserver les logs d'un serveur DHCP pendant un an, on y trouve les adresses MAC. >VRAI 14. Ping ne répond que si l'adresse testée appartient au même sous-réseau >FAUX 15. La configuration d'une interface réseau se trouve dans le fichier /etc/network/interfaces >VRAI 16. On peut résilier le bail de notre adresse IP. >VRAI 17. Si on espionne une communication ssh, on peut lire le password d'un utilisateur >FAUX 18. L'utilisation d'une paire de clés publique/privée permet à ssh d'opérer des connexions distantes plus sécurisées qu'avec un mot-de-passe. >VRAI 19. Une commande ls peut consommer de la bande passante réseau. >VRAI 20. Le protocole NFS permet de limiter l'accès d'un répertoire exporté à un utilisateur particulier (dont l'UID est précisé dans le fichier /etc/exports) >FAUX ## Pastille 19 ETEINDRE CLIENTS (ICI RASPBERRY PY) //Après clients car ces derniers peuvent encore avoir envoyé des fichiers nfs ETEINDRE SERVEUR NFS (ET DHCP) ETEINDRE LE MINI PC (QUI EST LA PASSERELLE) ## Pastille 20 Cartographie permet de savoir quel machine est connectée avec quel autre machine /périphérique. Exemple : [Clique pour voir cartographie](http://www.strongswan.org/images/umlArchitecture_large.png) # Sequence 5 ## Pastille 5.2 Les systèmes Unix traditionnels garde l'information sur les comptes utilisateurs, y compris les mots de passe cryptés, dans un fichier texte appelé /etc/passwd. Comme ce fichier est utilisé par beaucoup d'utilitaires, (comme ls) pour afficher les permissions des fichiers, etc. pour associer le numéro d'identification de l'utilisateur (id #) avec son nom, le fichier doit pouvoir être lu par tout le monde. En conséquence de quoi, cela représente quand même un risque pour la sécurité. Un second fichier, appelé /etc/shadow, contient le mot de passe codé de même que toute autre information telle que les valeurs relatives à l'expiration du compte ou du mot de passe, etc. Le fichier /etc/shadow file ne peut être lu que par le compte root et cela constitue donc un risque moins grand pour la sécurité. adduser "nom" addgroupe "nom" Pour le "fasle" : si vous essayez de vous connecter à un utilisateur ayant l’un de ces « shell », rien ne se passera. Puisque le champ du shell ne peut pas être vide, la solution est d’avoir un exécutable qui… Ne fait rien : le nologin ou false. https://forum.ubuntu-fr.org/viewtopic.php?id=1485371 Quelles informations du fichier /etc/passwd sont utilisées pour la gestion des permissions sur les fichiers ? UID et GID ## Pastille 5.4 le répertoire /etc/skel contient les fichiers qui permettent de construire automatiquement le répertoire /home de l'utilisateur au moment de sa création avec le programme useradd. ## Pastille 5.5 groupadd = créer groupe groupmod = editer groupe groupdel = supprimer groupe ## Pastille 5.6 groupadd test /home/partage (root:test-775) exemple umask : permet de supprimer des droits umask x Où x est un nombre exprimé sous forme octale qui déterminera les permissions par complétion de 0666 pour les fichiers et de 0777 pour les répertoires. Les bits du masque sont annulés, ce qui signifie que les droits correspondant à ces bits sont supprimés. $ umask 0022 $ mkdir repertoire $ touch fichier $ ls -l drwxr-xr-x 2 user user 512 Jan 1 23:59 repertoire -rw-r--r-- 1 user user 0 Jan 1 23:59 fichier ## Pastille 5.7 bash = #!/bin/bash shell = #!/bin/sh ## Pastille 5.8 Le cinquième champ du fichier /etc/passwd est un champ qui n'est pas utilisé par le système. Il contient simplement le nom complet (fullname) de l'utilisateur. Ce nom est historiquement accédé par la commande finger. Installez cette commande vintage. un utilisateur peut changer son fullname avec la commande chfn. ## Pastille 5.9 Vaut mieux pas supprimer mot de passe root et utiliser que sudo car sudo permet uniquement de faire des tâches demandant des privileges avec mdp user alors que root est le super utilisateur (A REVOIR) ## Pastille 5.10 /etc/sudoers = fichiers des user qui ont accès à la commande sudo ## PAstille 5.11 Logiciel a interdire dans sudo : shell, bash, passwd, (aide moi corentin) ## PAstille 5.13 ## Pastille 5.14 http://www.tux-planet.fr/empecher-la-suppression-dun-fichier-ou-dun-repertoire/ Les méthodes d’authentifications PAM : Les mécanismes : Le mécanisme auth - Authentification Concerne l’authentification du demandeur et établit les droits du compte : Authentifie généralement avec un mot de passe en le comparant à une valeur stockée en base de données ou en s’appuyant sur un serveur d’authentification, Établit les paramètres du comptes : uid, gid, groupes et limites de ressources. Le mécanisme account - Gestion de compte Vérifier que le compte demandé est disponible : Concerne la disponibilité du compte pour des raisons autres que l’authentification (par exemple pour des restrictions d’horaire). Le mécanisme session - Gestion de session Concerne la mise en place et la terminaison de la session : Accomplir les tâches associées à la mise en place d’une session (par exemple enregistrement dans les logs), Accomplir les tâches associées à la terminaison d’une session. Le mécanisme password - Gestion des mots de passe Utilisé pour modifier le jeton d’authentification associé à un compte (expiration ou changement) : Modifie le jeton d’authentification et vérifie éventuellement qu’il est assez robuste ou qu’il n’a pas déjà été utilisé. ![](https://i.imgur.com/OPRgSPZ.png) ## Pastille 5.15 Les ressources physiques sont limitées (espace disque). Un quota est fixé par 3 données : - la limite soft à partir de laquelle l'utilisateur est prévenu. - la limite hard que l'utilisateur ne peut jamais dépasser (une erreur est provoquée à chaque écriture). - le délai de grace : temps dont dispose l'utilisateur pour revenir en dessous de la limite soft à partir du moment où il l'a dépassée. A l'expiration du délai de grace, la limite hard est rabaissée à la limite soft. L'administrateur édite les quotas avec la commande edquota. Puis il active les quotas sur une partition en ajoutant une option à la déclaration du montage de cette partition ; ou avec la commande quotaon. Il la désactive avec la commande quotaoff. Les quotas sont stockés par le système à chaque racine de FS dans des fichiers quota.usr et quota.grp. ## Pastille 5.18 1. Toute entreprise ou organisation publique ou privée a l'obligation légale de définir une charte informatique signée par ses utilisateurs >FAUX 2. Une charte informatique permet de préciser les droits et devoirs des utilisateurs d'un système d'information au sein d'une entreprise ou d'une organisation >VRAI 3. La charte informatique prévaut sur la loi au sein de l'entreprise. Il est notamment possible pour un employeur de définir des règles non conformes à la réglementation sur la vie privée de ses employés. >FAUX 4. La charte informatique donne le droit à l'administrateur système de prendre des sanctions unilatéralement en cas de manquements professionnel d'un employé. Par exemple, si l'administrateur système constate qu'une personne passe ses journées sur des sites à usage personnel/ludique, il lui revient de mettre un terme à ce comportement. >FAUX 5. La charte informatique peut comporter des modalités d'application d'un "droit à la déconnexion" des employés d'une entreprise/organisation. >VRAI 6. Hors cas spécifique (notamment relatives aux droits des syndicats), un employeur peut toujours consulter les données de ses employées hébergées par son système d'information, même si elles sont dûment notifiées comme étant privées en conformité avec la charte informatique. Seules les modalités de consultation changent : l'employé devant être présent dans le cas de consultation de données personnelles. >VRAI 7. Le non respect de la charte informatique dans l'entreprise peut conduire à des sanctions disciplinaires, voire à des sanctions pénales. >VRAI 8. Afin d'assurer le bon fonctionnement du SI, l'administrateur système peut légalement consulter toutes les données de tous les employés d'une entreprise/organisation sans que ceux-ci n'aient donné leur accord. >FAUX 9. Il convient, pour protéger l'administrateur et les employés, de définir clairement et explicitement dans la charte informatique, les conditions et les droits d'accès aux données des utilisateurs pour l'administrateur système. On définira notamment comment les données privées (fichiers, e-mails etc) doivent être "étiquetées" et quelles sont les exceptions autorisant leur consultation (présence d'un virus/malware, ...). >VRAI 10. Lors de son départ de l'entreprise (temporaire ou définitif, volontaire ou forcé), l'administrateur système a l'obligation légale de donner l'ensemble des informations permettant à son successeur de prendre le contrôle plein et entier sur le système d'information (mots de passe, clés cryptographiques, etc.) >VRAI ## Pastille 5.19 Quand on aura fini les études; l'upjv va garder nos données pendant 1 an (date légale) et dans charte informatique, c'est écrit "se référer à la date légale actuellle" ## Pastille 5.20 1. Parmi les programmes suivants, lesquels ne doivent pas être utilisables par un utilisateur "normal" avec les droits root via sudo sous peine de risquer une prise de contrôle complet sur la machine ? >emacs bash python visudo mount 2. Il est possible d'utiliser sudo pour donner les droits d'un utilisateur "normal" (non root) à un autre utilisateur sur une commande particulière. >VRAI 3. Donner les droits root à un utilisateur via une commande sudo pour l'exécution de la commande gcc est sans risque. En effet, il ne pourra que compiler un programme qui appartiendra à root, mais pas l'exécuter avec les droits de root. >FAUX 4. Lorsque le compte root est compromis, seules les données chiffrées convenablement sont dignes de confiances. >FAUX 5. En cas de compromission d'un serveur, l'administrateur système doit : >Prendre toutes les mesures nécessaires pour interrompre l'intrusion Prévenir les utilisateurs Conserver toutes les données systèmes en vue d'une analyse future # base de contenu pour le portfolio # Séquence 1 ## 1.2 - installation debian ## 1.3 - QCM comprendre le role de l'administrateur système L'administrateur système décide qui est autorisé à avoir un compte sur les machines >FAUX L'administrateur système crée les comptes sur les machines >VRAI L'administrateur système alloue l'espace disque des utilisateurs >VRAI L'administrateur système vérifie la nature des données personnelles des utilisateurs >FAUX L'administrateur système vérifie la nature des données professionnelles des utilisateurs >FAUX L'administrateur système garantit la confidentialité des données des utilisateurs >FAUX L'administrateur système donne les moyens permettant de garantir la confidentialité des données des utilisateurs >VRAI L'administrateur système vérifie que les moyens informatiques mis à disposition des utilisateurs sont bien utilisés pour un usage professionnel >FAUX L'administrateur système met en place un système de sauvegardes des données et des configurations >VRAI L'administrateur système est chargé de faire évoluer le matériel informatique >VRAI L'administrateur système assure la maintenance du matériel et des logiciels >VRAI L'administrateur système fournit les consommables aux utilisateurs >FAUX L'administrateur système forme et informe les utilisateurs >VRAI ## 1.4 - QCM role central du shell Super simple (à voir sur Moodle) ## 1.5 - man ``` man nom_de_la_commande ``` Différentes sections : * Programmes exécutables ou commandes de l'interpréteur de commandes (shell) * Appels système (Fonctions fournies par le noyau) * Appels de bibliothèque (fonctions fournies par des bibliothèques) * Fichiers spéciaux (situés généralement dans /dev) * Formats des fichiers et conventions (Par exemple /etc/passwd) * Jeux * Divers * Commandes de gestion du système * Interface du noyau Linux. ``` man ASE ``` NOM : SYNOPSIS : COMMANDE : OPTIONS : ## 1.6 ### Commande cd ![](https://i.imgur.com/I7C7DA6.png) 1) on voit apparaitre le man de la commande cd (ChangeDirectory) ### Commande ls ![](https://i.imgur.com/4xaiACd.png) ### Commande pwd ![](https://i.imgur.com/NTX07nV.png) ### Commande mkdir et rmdir ![](https://i.imgur.com/tor8Dq4.png) ![](https://i.imgur.com/3rsoYe4.png) ### Méta-caractères ![](https://i.imgur.com/Y96j0vd.png) ## 1.7 ### Commande touch et cat ![](https://i.imgur.com/8mMpuWM.png) ### Commande more/less & head ![](https://i.imgur.com/oahdSEu.png) ### commande tail & cut ! ![](https://i.imgur.com/6g6MgVP.png) ### Commande sort, paste et uniq ![](https://i.imgur.com/qRxS5Px.png) ### Commande wc, tr et diff ![](https://i.imgur.com/CA9rWmR.png) ## 1.8 ### Commande ps ![](https://i.imgur.com/IDit22f.png) ### Commande kill ![](https://i.imgur.com/vMqc09C.png) ### Commande bg,fg et & ![](https://i.imgur.com/CpGmPd9.png) ### Commande wait ![](https://i.imgur.com/aPw3PNG.png) ## 1.9 ### Commande grep ![](https://i.imgur.com/uYxZKom.png) ### Commande sed ![](https://i.imgur.com/UKXfG9X.png) ## 1.10 - différente facon de "quoter" ![](https://i.imgur.com/j05U2Ou.png) ## 1.11 - les redirections ### Redirections >, >>, <, 2>, 2>>, &>, <<, 2>&1 ![](https://i.imgur.com/C4ITcn3.png) ### Redirections | ![](https://i.imgur.com/eshb8Oz.png) Pastille 1.5 - MAN : Alternative de printf : la commande man Man /etc/passwd Lister les différentes sections man : Man -s Format d’un fichier de documentation man : Troff Pastille 1.6 - commandes : La commande cd 1) tapez la commande $ man cd Que voyez-vous apparaître ? Comment qualifier toutes ces commandes ? Où trouver l'usage de cd ? Le manuel de la commande cd (change directory) 2) comment distinguer un chemin absolu d'un chemin relatif ? Le chemin absolu commence toujours par un / 3) balladez-vous dans l’arborescence. Fait. 4) prenez connaissance de pushd et popd Pushd = empiler répertoires Popd = dépiler les répertoires La commande ls quel droit faut-il sur un répertoire pour y exécuter la commande ls Droit de lecture (R) 2) comment obtenir la date de modification d'un fichier ? Ls -l 3) à qui appartient la commande ls ? Est-ce une builtin commande ? Appartient à POSIX. OUI 4) peut-on utiliser des métas-caractères dans un répertoire inclus dans un chemin ? NON 5) listez tous les fichiers du répertoire courant dont le nom comporte exactement 5 caractères. 6) créez une gentille commande shell nommée « toto ». OK 7) renommez "toto" en "ls". Quel problème cela pose-t-il ? Ls est déjà une commande. 8) si quelqu'un tape "ls", quelle est la commande alors exécutée ? Expliquez ? erreur « niveau de shell top élevé (1000), initialisation à 1 » car ls est déjà connu. La commande pwd 1) que veut dire l'acronyme pwd ? print working directory La commande mkdir créez un répertoire temporaire Mkdir temp 2) à quelle(s) condition(s) peut-on créer un sous-répertoire du répertoire courant ? Si on a les droits d’écriture, on peut créer un sous-répertoire 3) quels sont les droits d'un sous-répertoire ? rwxr-xr-x La commande rmdir Quel avantage possède la commde rmdir par rapport à la commande rm appelée récursivement ? Ne peut uniquement supprimer un répertoire vide contrairement à rm 2) Sous quelle(s) condition(s) a-t-on le droit de supprimer un répertoire créé par quelqu'un d'autre ? Si et seulement si l’utilisateur qui a créé le répertoire nous a autorisé à écrire sur le répertoire en question OU si on est administrateur. Les méta-caractères qu'est-ce qu'un méta-caractère du shell ? Citez les. Permet de faire une sélection de fichier suivant certains caractères. ? $ ^ [ ] ( ) * + | {} 2) Isolez-vous dans un répertoire temporaire et créez un ficher de nom "?", puis effacez-le. OK 3) listez tous les fichiers du répertoire courant commençant par une majuscule Ls [[:upper:]]* 4) allez dans la racine, listez les sous-répertoires du répertoire courant, sans lister leur contenu Ls -R 5) Qui étend les méta-caractères ? Quel(s) argument(s) reçoit ls quand on tape 'ls *' ? 6) commentez la séquence de commandes suivante : $ mkdir temp ; cd temp //créer un répertoire temp et se déplace dedans $ touch hello echo //créer un répertoire vide hello et echo $ * //affiche hello $ * ; * // affiche hello hello $ * * //affiche hello echo hello Pastille 1.7 : La commande touch Utilisez la commande 'touch' pour créer un nouveau fichier dans le répertoire courant Touch fichier 2) Modifiez les dates d'accès et de modification du fichier créé à la question 1) au 1er Janvier 2000 à 0h00 Touch -t 200001010000 fichier La commande cat Affichez le contenu d'un fichier texte grâce à la commande cat Cat fichier 2) Affichez le contenu de 3 fichiers textes 'fichier_1.txt', 'fichier_2.txt' et 'fichier_3.txt' dans l'ordre fichier_2.txt, fichier_1.txt puis fichier_3.txt avec une seule commande cat. Cat fichier_2.txt fichier_1.txt fichier_3.txt La commande more/less 1) Affichez le contenu d'un fichier texte de grande taille page par page grace à la commande more (ou less) page par page More fichier Less fichier 2) Affichez le contenu d'un fichier texte de grande taille page par page en commençant à la ligne 100 3) Cherchez une chaîne de caractères dans un fichier de grande taille en utilisant les fonctionnalités de la commande 'more' (ou less) La commande paste La commande paste permet de coller le contenu d’un fichier dans un autre fichier. paste test.txt>test1.txt Ls | paste - - La commande tr Conversion de chaînes de caractères avec tr. echo abcd | tr "[a-z]" "[A-Z]" Donne : ABCD echo abcd | tr bd 24 a2c4 La commande diff Permet de voir les différences entre deux fichiers. diff a.txt b.txt Pastille 1.8 : Commande bg : permet de lancer une tache en background. BG identifie les tâches avec leurs PID. Commande fg : permet de reprendre un processus suspendu. Commande wait : met en pause une exécution jusqu’à la fin d’un processus donné. Pastille n°1.9: Commande grep : permet de filtrer en sélectionnant toutes les lignes qui satisfont. Commande sed : sélectionne les lignes d’un fichier texte et applique un traitement ou un remplacement. Pastille n°1.10: comment éviter qu’un caractère ne soit interprété par le shell ? Affichez un message contenant une somme en dollars, une apostrophe et des guillemets. Commentaire : « # » Utilisation des quotes : ‘ $ variable="secret" $ echo 'Mon mot de passe est $variable.' Mon mot de passe est $variable. Les guillemets : « » $ variable="secret" $ echo "Mon mot de passe est $variable." Mon mot de passe est secret. Les back quotes : ` $ echo `variable="connu"; echo "Mon mot de passe est $variable."` Mon mot de passe est connu. Pastille n°1.11: Redirigez la sortie standard d'une commande ls vers un fichier liste.txt (contenu remplacé si le fichier existe) Utilisation de > ls /etc/passwd > liste.txt 2) Redirigez la sortie d'erreur d'une commande ls vers un fichier erreurs.txt (contenu remplacé si le fichier existe) Utilisation de 2> 3) Redirigez la sortie standard d'une commande ls vers un fichier liste.txt (ajout à la fin si le fichier existe) Utilisation de >> ls /etc/passwd >> liste.txt 4) Rediriez la sortie d'erreur d'une commande ls vers un fichier erreurs.txt (ajout à la fin si le fichier existe) Utilisation de 2>> 5) Redirigez la sortie standard et la sortie d'erreur d'une commande ls vers un fichier ls.txt ls /etc/passwd > ls.txt 2>&1 Redirections avec |, tee : A REVOIR Pastille n°1.12: A revoir pour l’option -u d’un script bash Pastille n°1.14: Variable PATH : contenir des chemins vers des programmes. Ces chemins permettent d’exécuter directement une commande dans le terminal. Pastille n° 1.18 : 1) Une fonction shell est déclarée par le mot-clef "function". Le corps de la fonction est écrit entre accolades sous la forme d'une suite d'insctructions shell. Ecrire une première fonction dans un shell et appelez la depuis le programme principal. Qu'est-ce que le programme principal ? $ function f0 > { > echo Bonjour tout le monde ! > } $ $ f0 => appel de la fonction f0 Bonjour tout le monde ! Programme principal = en dehors des fonctions 2) Comment passer un paramètre à une fonction ? Ecrire le paramètre dans les accolades de la fonction. 4) Ecrire une fonction qui retourne le PGCD de deux nombres. #!/bin/sh echo Entrez deux nombres separes d"'"un espace : read a b m=$a if [ $b -lt $m ] then m=$b fi while [ $m -ne 0 ] do x=`expr $a % $m` y=`expr $b % $m` if [ $x -eq 0 -a $y -eq 0 ] then echo PGCD de $a et $b est $m break fi m=`expr $m - 1` done 5) Si un script shell reçoit des paramètres lors de l'appel, peut-on traiter ces paramètres dans une fonction ? Comment ? JSP Pastille n° 1.19 : Commande expr Écrivez un script qui calcule la somme des carrés de tous ses arguments (entiers) #!/bin/sh # Fonction qui renvoie le carré du nombre qu'elle reçoit carre() { # Affichage du carré du nombre reçu expr $1 \* $1 } result=0 # Pour chaque nombre passé au programme for nb in $* do # Récupération du carré de ce nombre tmp=`carre $nb` result=$(expr $tmp + $result) # Affichage (ou autre traitement quel qu'il soit) de ce résultat echo "Le carré de $nb vaut $tmp" done echo "La somme des carrés est $result" 2) Écrivez un script qui calcule et affiche le produit scalaire de deux vecteurs dont les composantes sont passées en paramètres Commande $(()) Que se passe-t-il si vous tapez la commande expr 2 + 1 ? Ca fait l’addition de 2 + 1 = 3 2) Que se passe-t-il si vous tapez la commande $((2 + 1)) ? Command not found Commande bc -l Écrivez un script qui calcule la moyenne de ses arguments (réels) 2) Écrivez une fonction calc qui permet de faire des calculs en virgule flottante sur la ligne de commande comme on peut le faire avec expr pour les entiers # Séquence 2 Pastille 2.12 Qu'est-ce que la mémoire virtuelle ? Une partition swap est-elle indispensable ? obligatoire ? Mémoire virtuelle = mémoire provenant du disque dur, et qui va aider le mémoire RAM lors de taches difficiles. Le défaut, c'est que si tu alloue 3GB de mémoire virtuelle, tu va perdre 3GB de stockage sur ton Disque dur. Partition swap = pas obligatoire mais intéressant (mémoire virtuelle) Qui peut activer et désactiver une partition swap, et par quelles commandes ? Administrateur swapoff /dev/sda6 swapon /dev/sda6 Quel est le risque d'avoir une mémoire virtuelle trop petite ? Lenteur disque Comment choisir la taille du swap sur une machine ? Taille swap = double de la RAM Pastille 2.13 Quelle est la commande qui permet de monter une partition sur l'arborescence ? Comment s'appelle le répertoire qui accueillera la racine de la partition ? Commande mount Répertoire / Des options de montage permettent de restreindre la vision de la partition en inhibant certains bits des droits de fichiers contenus dans la partition. Lesquelles ? root peut-il outrepasser ces restrictions ? JSP Comment fait l'administrateur pour rendre inscriptible une partition montée en lecture seule ? Donnez la commande. A quelle occasion cette opération est-elle effectuée par le système (aide : man fsck) ? Commande : jsp Lors d’un file system check Peut-on démonter une partition ? Qui et comment ? A quelle(s) condition(s) ? Oui, root, à l’aide de la commande « umount » Condition : système de fichier ne doit pas être en cours d’utilisation Peut-on démonter la racine ? Non car tout le temps en cours d’utilisation Pastille 2.14 Que trouve-t-on dans /etc/fstab (man 5 fstab) ? Qu'est-ce qu'une vague de fsck ? Liste des disques utilisés au démarrage et des partitions de ces disques Vague fsck = je pense : vague de file système check pour tout vérifier petit à petit et pas en même temps. Que trouve-t-on dans /etc/mtab ? Modifie-t-on ce fichier avec un éditeur de texte ? Pourquoi préférer la commande mount ? liste des périphériques actuellement montés Non on ne le modifie pas car il peut servir de base après un test avec mount pour modifier le fichier fstab Pastille 2.15 Quand le premier fsck est exécuté pendant la procédure de boot. Sur quelle partition s'exécute-t-elle ? Etapes du boot : Le chargement et l'initialisation du noyau. La détection et la configuration des périphériques. La création de processus système « spontanés ». L'intervention éventuelle de l'opérateur système (en mode manuel). L'exécution des scripts de démarrage. Les opérations en mode multi-utilisateurs. Etape 5 du boot : Lors des lancements des scripts de démarrage, vérification de l’intégrité du système de fichiers. Sur la partition racine car c’est la seule en lecture seule. Pourquoi un fsck ne s'exécute que sur une partition montée en read-only ? Est-ce le cas pour la première partition qui fait l'objet de ce fsck ? Par sécurité, le système démarre en mode de récupération et monte la partition système ( / ) en lecture seule pour être certain de ne pas faire de bêtise en écrivant sur un système de fichier incohérent. Oui c’est le cas. A quoi sert le répertoire lost+found que l'on trouve généralement dans les racines des partitions ? Quand un administrateur y trouve des fichiers, que s'est-il passé ? Que connaît-il de ces fichiers ? Qu'en fait-il ? Lost+found = objets trouvés. Répertoire utilisé par fsck pour le stockage de fichiers à récupérer si un incident s’est produit sur le système. Un administrateur trouvant des fichiers à l’intérieur signifie que le système a eu un problème (par exemple: crash). Il peut les remettre dans les répertoires d’origines. Pastille 2.16 Critiquez la table des partitions choisie par votre distribution favorite. Essayez d'y trouver des vulnérabilités. La table des partitions d’OS X est idéale car elle assure une haute sécurité. JSP Pastille 2.17 Énoncez les commandes correspondantes à chacune de ces étapes. les disques physiques sont partitionnés et les partitions LVM sont formatées sous un format spécifiques (une collection de blocs appelés physical extents). pv : pvcreate /dev/sdb A partir des physical extents, LVM construit des volume groups. Ces volume groups sont ensuite considérés comme des disques durs. vg : vgcreate nomduvg /dev/pv1 /dev/pv2 ... Les volume groups sont partitionnés (les partitions sont appelées logical volumes) puis formatées avec un système de fichier comme ext4. lv : lvcreate -n nomdulv -L taille nomduvg Il reste enfin à monter les partitions sur l'arborescence, comme tout autre partition. fs : mount /dev/nomduvg/nomdulv /pointdemontage Est-il possible de créer des volume groups comportant des physical extents répartis sur plusieurs disques durs ? Oui je pense # Séquence 3 ## 3.2 - La séquence de BIOS Que se passe-t-il si la machine accède d'abord à un support amovible à la place du périphérique prévu ? > Si un support amovible est branché sur l’ordinateur, ce dernier bootera dessus à la place de démarrer sur son disque dur. Cela pose un problème de sécurité : on peut modifier le mot de passe super utilisateur en passant par un support d’installation d’une distribution. Comment éviter une telle attaque sur la séquence de BIOS ? > Désactiver le démarrage par support amovible (CD, USB etc…) ## 3.4 - Diriger le boot loader sur une piste parallèle Est-il possible d'interrompre le boot loader afin de modifier sa configuration avant de lancer le noyau ? Essayez sur votre distribution en ajoutant à la ligne de lancement l'option "single" ou "s" ou "1" (c'est généralement le mode "maintenance"). > Oui c’est pourquoi il faut le sécuriser avec un mot de passe. ## 3.5 - initrd > Le boot loader a chargé le noyau et le lance avec une option spécifiant le fichier contenant initrd (initial ramdisk). > Ce fichier est alors décompressé en mémoire vive, et constitue une première racine contenant les outils nécessaires à lire le reste du système. Ainsi, il est possible avec le même noyau d'accéder à une grande diversité d'architectures, notamment de volumes disques (DD, RAID, LVM,...) et de périphériques variés pour lequels les pilotes (et modules noyau) sont présents dans l'initrd. > Le chargement d'un initrd inattendu peut donc entraîner un comportement anormal du processus de boot. > Il convient donc d'interdire de modifier le nom de fichier passé au noyau (c'est déjà fait avec la sécurisation du boot loader), et de s'assurer que le fichier initrd n'est pas corrompu. ## 3.6 - init Que se passe-t-il si le noyau lance un autre processus que init ? > Par exemple, si on modifie init=… par init=/bin/bash -> aura pour effet de lancer un shell en lieu et place d'init. Cela signifie qu’on pourra exécuter du code (notamment pour réinitialiser mdp super utilisateur) ## 3.12 - protection de la séquence de boot Classez ces mots-de-passe dans l'ordre chronologique des attaques de la séquence d'initialisation : > digicode de l'accès à la salle où se trouve la machine > mot-de-passe protégeant la configuration du BIOS > mot-de-passe GRUB > mot-de-passe root # Séquence 4 TP