1:1 INF1070 Utilisation et administration des systèmes informatiques Examen Final — Automne 2018 Samedi 15 décembre — Durée 3 heures Jean Privat & Alexandre Blondin Massé Aucun document ni appareil électronique n’est autorisé. Répondez et rendez seulement le formulaire (dernière page). L’annexe est détachable. Les questions faisant apparaître le symbole ♣ peuvent présenter plusieurs bonnes réponses. Les autres ont une unique bonne réponse. Des points négatifs pourront être affectés à de très mauvaises réponses. 1 Expressions régulières Question 1 Laquelle des expressions régulières étendues (ERE) suivantes reconnaît les adresses IPv6 comme 2001:0db8:0000:85a3:0000:0000:ac1f:8001 ? A ([0-9][a-f]{4}:){7}[0-9][a-f]{4} B ([0-9a-f:]{4}){8} C ([0-9][a-f]{4}:){8} D ([0-9a-f]{4}:){7}[0-9a-f]{4} E ([0-9a-f]{4}:){8} F ([0-2][0-9][0-9]\.){3}[0-2][0-9][0-9] Question 2 ♣ Parmi les expressions régulières étendues (ERE) suivantes, lesquelles trouvent une correspondance dans le mot « prestidigitateur » ? C [^aeiou]{3} D (i[tr]|[ea][ug]){2,} A (.)...\1 B ^[^restidi] G (.)(.).*\1\2 H [aeiou]{2} E (.)\1 F .*..$ Question 3 ♣ Parmi les expressions régulières étendues (ERE) suivantes, lesquelles trouvent une correspondance seulement avec les noms de fichiers qui se terminent par l’une des extensions .txt, .text ou .tex ? A \.te?xt?$ B [.]t(xt|ext|ex)$ C {.tex,.text,.tex}$ D ^.*\.(tex|text|txt)$ E \.te?xt$|\.text?$ F \.txt|\.text|\.tex$ Question 4 ♣ Parmi les mots suivants, lesquels ont une correspondance avec les deux expressions régulières étendues (ERE) « ^[sinus]+(di?|f?or?)*(m[es])?$ » et « ^[a-l]*[p-z]*[^issues]*$ » ? A sud B info C nord D nid E sors F informe 2 Processus Question 5 ♣ Parmi les énoncés suivants, indiquez tous ceux qui sont vrais concernant les processus en Unix. A Les processus sont isolés et ne peuvent pas collaborer ensemble B Tout processus est rattaché à un terminal C Tout processus est associé à un utilisateur D Un démon est un processus qui ne peut pas être interrompu E Tout processus a au moins un processus enfant F Une tâche shell (job) peut regrouper plusieurs processus G Pour un programme donné, il existe au plus un seul processus à la fois H Deux processus qui coexistent ont nécessairement des identifiants (PID) distincts Question 6 Alice a lancé depuis un terminal le programme ./long_calcul, mais il n’est toujours pas terminé. Que devrait-elle faire pour récupérer le contrôle de son terminal sans perdre le travail en cours ? A Appuyer sur Ctrl-C puis taper bg B Appuyer sur Ctrl-C puis taper fg C Maintenir Ctrl et appuyer sur fg D Appuyer sur Ctrl-Z puis taper bg E Taper %bg suivi de la touche Entrée F Appuyer sur Ctrl-Z puis taper fg 1:2 2.1 Les commandes ps et jobs Dans un terminal, j’entre la commande « ps -e -o uid,pid,ppid,c,sz,stime,tty,time,cmd » et j’obtiens le résultat suivant (certaines lignes non pertinentes ont été supprimées par économie d’espace) : UID root root root avahi root avahi root gdm gdm root root whoopsie alice geoclue alice alice alice alice alice alice alice alice alice alice bob bob alice alice alice alice alice PID PPID C SZ 1 0 0 56441 270 1 0 41086 295 1 0 11766 920 1 0 11855 934 1 0 250305 946 920 0 11769 1000 1 0 76552 1151 1 0 19247 1153 1151 0 28079 1476 1 0 72442 1477 1 0 110386 1581 1 0 97146 1589 1 0 19245 1834 1 0 116749 4323 1589 7 193804 4421 4323 0 6075 4496 4421 0 5304 4498 1589 6 8174 4534 4498 0 6251 4568 4498 0 6251 4602 4498 0 6380 4981 4498 0 6252 5019 4534 85 1903 5020 4534 22 1874 5030 4981 0 1877 5031 4568 0 3399 5032 4498 0 6251 5235 4602 0 12182 5236 4602 8 202123 5248 4602 0 9342 5249 4602 0 1871 STIME TTY 16:38 ? 16:38 ? 16:38 ? 16:38 ? 16:38 ? 16:38 ? 16:38 ? 16:38 ? 16:38 ? 16:38 ? 16:38 ? 16:38 ? 16:38 ? 16:38 ? 16:59 ? 16:59 pts /0 16:59 pts /0 16:59 ? 16:59 pts /2 16:59 pts /3 16:59 pts /4 17:07 pts /1 17:07 pts /2 17:07 pts /2 17:07 pts /1 17:08 pts /3 17:08 pts /5 17:10 pts /4 17:10 pts /4 17:10 pts /4 17:10 pts /4 TIME CMD 00:00:02 /sbin/init splash 00:00:01 /lib/ systemd /systemd - journald 00:00:00 /lib/ systemd /systemd - udevd 00:00:00 avahi - daemon : running 00:00:01 /usr/lib/ snapd / snapd 00:00:00 avahi - daemon : chroot helper 00:00:00 /usr/sbin/cups - browsed 00:00:00 /lib/ systemd / systemd --user 00:00:00 (sd -pam) 00:00:00 /usr/lib/x86_64 -linux -gnu/ boltd 00:00:14 /usr/lib/ packagekit / packagekitd 00:00:00 /usr/bin/ whoopsie -f 00:00:00 /lib/ systemd / systemd --user 00:00:00 /usr/lib/geoclue -2.0/ geoclue -t 5 00:00:50 /usr /[...]/ gnome -terminal - server 00:00:00 bash 00:00:00 tmux 00:00:41 tmux 00:00:00 -bash 00:00:00 -bash 00:00:00 -bash 00:00:00 -bash 00:02:39 cat /dev/ urandom 00:00:41 tr -cd ABC 00:00:00 tail -f error .log 00:00:00 nc -l 8888 00:00:00 -bash 00:00:00 xeyes 00:00:00 gnome - calculator 00:00:00 ps -e -o uid ,pid ,ppid ,[...] 00:00:00 tee ps.out suivi de la commande « jobs » : [1] [2]+ Running Running xeyes & gnome - calculator & Question 7 ♣ Parmi les énoncés suivants, indiquez tous ceux qui sont vrais. A Le terminal courant est identifié par pts/0 B L’identifiant du processus parent de xeyes est 5235 C Le processus qui a le plus consommé de temps CPU a le PID 5019 D Je suis l’utilisateur alice E Le PID du processus le plus ancien est 934 F Le processus de PID 5235 a été lancé en arrière-plan Question 8 ♣ Parmi les commandes kill suivantes, lesquelles vont terminer l’exécution d’un processus avec succès ? A kill -9 1581 B kill %1 C kill -s SIGTERM 4602 D kill %2 E kill 1 F kill 5019 1:3 3 Shell avancé Question 9 ♣ A B C D Parmi les commandes suivantes, lesquelles affichent, entre autres, une ligne contenant « toto » ? ( echo toto; echo tata ) | tail -n 1 echo toto | echo tata echo tata > tr o a echo toto 2>/dev/null E echo toto > tata; cat tata F ( echo otot >&2; echo toto ) | rev G echo toto | ( echo tata; tail -n 1 ) H echo to | ( ta="$(cat -)"; echo "$ta$ta" ) Question 10 Alice et Bob souhaitent communiquer. Pour s’amuser, ils s’entendent pour chiffrer leurs messages de façon très simple avec un algorithme non cryptologiquement sécuritaire. Alice procède de la manière suivante pour envoyer un message à Bob : cat message | tr a-z u-zf-ta-e | rev > message.enc Quelle commande, parmi les suivantes, permet à Bob de déchiffrer le message envoyé par Alice ? A tr u-zf-ta-e a-z < message.enc | rev B tac message.enc | tr u-zf-ta-e a-z C cat message.enc | tr a-z u-zf-ta-e | rev Question 11 ♣ D tac message.enc | tr a-z u-zf-ta-e E cat message.enc | rev | untr a-z u-zf-ta-e F rev | tr u-zf-ta-e a-z < message.enc Considérez les cinq lignes de commandes suivantes : echo 1; sleep 2; sleep 3 # C1 sleep 1 & sleep 2 & sleep 3 # C2 sleep 1 && sleep 2 && sleep 3 # C3 sleep 1 || sleep 2 || sleep 3 # C4 sleep 1 | sleep 2 | sleep 4 # C5 Parmi les énoncés suivants, lesquels sont vrais en prenant en compte la durée d’exécution totale de chaque ligne de commande ? A C5 dure 7 secondes B C1 est plus lent que C5 C C1 dure 5 secondes D C4 dure 1 secondes E C2 dure 6 secondes F C3 dure 3 secondes 4 Scripts Question 12 Considérez le script exécutable suivant nommé oui_ou_non : #!/ bin/sh if [ "$#" -ne 1 ]; then exit 1 fi if [ "$1" = oui ]; then echo oui ./ oui_ou_non non elif [ "$1" = non ]; then echo non exit 2 fi Qu’est-ce qui sera affiché sur la sortie standard si on lance la commande « ./oui_ou_non oui; echo $? » A B C D E Seulement « oui » « non », suivi de « oui », suivi de « 1 » « non », suivi de « oui », suivi de « 2 » « non », suivi de « oui », suivi de « 0 » « oui » suivi de « non » F Seulement « non » G « oui », suivi de « non », suivi de « 2 » H « oui », suivi de « non », suivi de « 0 » I « oui », suivi de « non », suivi de « 1 » J « non » suivi de « oui » 1:4 Question 13 ♣ Soit un répertoire /opt/inf1070 accessible à l’utilisateur. $ ls -l /opt/ inf1070 / lrwxrwxrwx 1 inf1070 inf1070 5 dec 15 14:00 exam -> final -rwxr -xr -x 1 inf1070 inf1070 3754 dec 15 14:00 final -rwxr -xr -x 1 inf1070 inf1070 3541 oct 27 14:00 intra $ pwd /home/ etudiant / $ echo $PATH /usr/local/bin :/ usr/bin :/ bin Quelles sont les différentes façons d’exécuter le script shell final à partir du répertoire courant ? C sh /opt/inf1070/final D /bin/sh final A final B /opt/inf1070/exam Question 14 E ./opt/inf1070/final F ./final Considérez le script exécutable suivant nommé subst : #!/ bin/sh a=4 b=" echo $a" a=5 echo "$b" Qu’est-ce qui sera affiché sur la sortie standard si on lance la commande « ./subst » A echo 4 B 4 C echo $a D "$b" E 5 F echo 5 G $b H "echo $a" 4.1 Le script groupes.sh Soit le script shell exécutable groupes.sh suivant : #!/ bin/sh echo " Bonjour $USER " echo "Vos groupes :" id -Gn | grep -Eow $1 echo "Au revoir $(id -un )" Voici un exemple d’utilisation du script : $ id -Gn privat adm cdrom floppy sudo audio dip video plugdev input netdev lpadmin docker $ ./ groupes .sh '\w+o' Bonjour privat Vos groupes : sudo audio video Au revoir privat Question 15 ♣ Lorsque j’exécute la commande « USER=blondin ./groupes.sh '.u\w+' », quelles sont les différences avec l’affichage de l’exemple ? A La ligne ”sudo” n’est plus affichée B Une nouvelle ligne ”plugdev” est affichée C Un message d’erreur est affiché sur la sortie d’erreur D La ligne ”video” n’est plus affichée E La ligne ”Au revoir privat” a changé F La ligne ”Bonjour privat” a changé 1:5 Question 16 ♣ Même question pour la commande « id=blondin ./groupes.sh 'audio video' ». A La ligne ”Bonjour privat” a changé B La ligne ”Au revoir privat” a changé C La ligne ”video” n’est plus affichée D Une nouvelle ligne ”plugdev” est affichée E La ligne ”sudo” n’est plus affichée F Un message d’erreur est affiché sur la sortie d’erreur 5 Réseaux Question 17 ♣ Soit l’URL https://www.info.uqam.ca/~privat/inf1070/ de la page web du cours. Lesquelles des affirmations suivantes sont vraies ? A uqam.ca est un TLD (top level domain) B Le navigateur web doit déterminer l’adresse MAC du serveur pour accéder à la page web C www.info.uqam.ca est un nom d’hôte (hostname) D Le protocole utilisé est HTTP sur TLS E privat est l’utilisateur du serveur qui a démarré le processus du démon web (httpd) Question 18 Que signifie le I de IP ? A Implicit B 1 (en chiffre romain) C Information D Interface E Internet F Intermediate G Intranet H Infrastructure Question 19 ♣ Lesquelles des affirmations suivantes sur la cybersécurité sont vraies ? A Pour héberger un serveur web, il faut acheter un certificat cryptographique B Les pages web en HTTPS garantissent la confidentialité du contenu des messages C ssh est une version sécurisée de sh (le shell POSIX) D Le chiffrement symétrique n’est pratiquement plus utilisé (pas assez sécuritaire) E Les pages web en HTTPS garantissent l’anonymat de l’adresse IP du client Question 20 ♣ À l’instar de la commande nc, la commande socat, que nous n’avons pas vue en classe, permet d’ouvrir et de se connecter aux sockets (voir l’annexe pour consulter le manuel expliquant son utilisation). Sur la machine locale ying (d’adresse IP 132.208.138.246), on exécute les commandes suivantes echo toto | nc -l 8881 & echo toto | nc -l 8882 & echo tata | nc -l 8883 & socat tcp - listen :8884 exec:cat & socat tcp - listen :8885 exec :" nc yang 8886" & Sur la machine distante yang (d’adresse IP 132.208.132.48), on se connecte par SSH puis, on exécute les commandes suivantes echo tata | nc -l 8881 & echo otot | nc -l 8882 & echo toto | nc -l 8883 & socat tcp - listen :8884 exec:rev & socat tcp - listen :8885 exec :" tr a o" & socat tcp - listen :8886 exec :" nc localhost 8883" & Parmi les commandes suivantes, lesquelles lorsqu’exécutées sur la machine locale ying affichent le message toto sur leurs sorties standard ? A nc yang 8882 B nc localhost 8885 C nc localhost 8881 D echo toto | nc ying 8883 E echo otot | nc 132.208.132.48 8884 Annexe détachable cat Concatène des fichiers et les affiche sur la sortie standard. Si aucun fichier n’est fourni, ou si le fichier est « - », cat lit l’entrée standard. echo Affiche une ligne de texte. grep Recherche les lignes correspondant à un motif donné. Par défaut, grep affiche les lignes qui contiennent une correspondance au motif. -E, --extended-regexp Interpréter le motif comme une expression régulière étendue (ERE). -w, --word-regexp Sélectionner seulement les lignes contenant les correspondances qui forment des mots entiers. La sous-chaîne correspondante doit donc soit se trouver au début de la ligne, soit être précédée d’un caractère ne pouvant entrer dans la constitution d’un mot. De même, elle doit soit se trouver à la fin de la ligne, soit être suivie par un caractère ne pouvant entrer dans la constitution d’un mot. Les caractères composant les mots sont les lettres, les chiffres et le souligné « _ ». -o, --only-matching Afficher seulement les parties (non vides) correspondantes d’une ligne correspondant, avec chaque partie correspondante sur une ligne séparée. id Affiche les UIDs et GIDs effectifs et réels. -G, --groups N’afficher que les groupes. -n, --name Afficher les noms de groupe ou d’utilisateur à la place du numéro d’ID. Nécessite -u, -g, ou -G. -u, --user N’afficher que l’UID. jobs Affiche les tâches du shell courantes et leur état. kill Envoie un signal à des processus. Les processus sont identifié par leurs PID ou par des spécifications de tâches (préfixées par %). Si on ne précise pas de signal, TERM est envoyé, qui demande au processus de se terminer. -9 Envoie le signal KILL (qui ne peut pas être intercepté par le processus). -s Indique le signal à envoyer. Celui-ci peut être spécifié par son nom ou par son numéro. ls Affiche le contenu de répertoires. -l Utilise un format d’affichage long. nc Établit des connexions TCP et UDP avec un hôte distant. Une fois la connexion établie, l’entrée standard est envoyée a l’hôte distant et les données reçues de l’hôte distant sont écrites sur la sortie standard. -l Spécifie que nc doit écouter une connexion entrante. Un numéro de port local doit être fourni en argument. nc attend alors qu’un hôte distant se connecte. Autrement une connexion à un hôte distant est établie. Un hôte distant et numéro de port distant doivent être fournis en argument. nc échoue si la connexion ne peut être établie. pwd Affiche le chemin complet du répertoire courant. ps Affiche un instantané des processus en cours. -e Sélectionner tous les processus -o Format défini par l’utilisateur. Le format est un argument unique sous la forme liste vide ou séparée par des virgules, qui offre une façon de spécifier des colonnes de sortie individuelles. Des mots clés reconnus sont les suivants : c (C) : Utilisation du processeur. Actuellement, c’est la valeur entière du pourcentage d’utilisation sur la durée de vie du processus. cmd (CMD) : commande avec tous ses arguments sous forme de chaîne. Des modifications aux arguments peuvent être affichées. La sortie dans cette colonne peut contenir des espaces. Parfois, les arguments de processus ne seront pas disponibles ; lorsque cela se produit, ps affiche à la place le nom de l’exécutable entre parenthèses. pid (PID) : Un nombre représentant l’ID de processus ppid (PPID) : ID du processus parent stime (STIME) : Heure du démarrage du processus sz (SZ) : Taille en pages physiques de l’image mémoire du processus. Cela inclut le texte, les données et la pile time (TIME) : Temps de calcul cumulé (utilisation du processeur) au format "[JJ-]HH:MM:SS". tty (TTY) : Terminal qui contrôle le processus uid (UID) : Identifiant de l’utilisateur rev Inverse l’ordre des caractères de chaque lignes des fichiers ou de l’entrée standard. sleep Attend une durée déterminée (en secondes). socat Établit un relais multifonction (SOcket CAT). Socat est un utilitaire en ligne de commande qui établit deux flux d’octets bidirectionnels et transfère des données entre eux. Comme les flux peuvent être construits à partir d’un grand ensemble de types de puits et de sources de données et que de nombreuses options d’adresse peuvent être appliquées aux flux, socat peut être utilisé à différentes fins. tcp-listen:port : Écoute sur port et accepte une connexion TCP. Notez que l’ouverture de cette adresse bloque jusqu’à ce qu’un client se connecte. exec:commande : commande est une commande simple avec des arguments séparés par des espaces simples. Après avoir exécuté la commande avec succès, socat écrit les données sur l’entrée standard du processus et lit à partir de sa sortie standard. tac Concatène et affiche des fichiers à l’envers (la dernière ligne en premier). tail Affiche la dernière partie de fichiers. -n, --lines=K afficher les K dernières lignes, au lieu des 10 dernières. tr Convertit ou élimine des caractères de l’entrée standard. Par défaut, tr convertit le caractère du premier ensemble de caractères vers le caractère correspondant dans le second ensemble de caractères. Les ensembles sont indiqués sous forme de chaînes de caractères. La plupart se représentent eux-mêmes ; autrement, des séquences interprétées sont : CAR1-CAR2 : tous les caractères de CAR1 à CAR2, dans l’ordre croissant \\ : contre-oblique (« backslash ») +1/8/53+ y 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5 6 6 6 6 6 6 6 6 7 7 7 7 7 7 7 7 8 8 8 8 8 8 8 8 9 9 9 9 9 9 9 9 y ←− Codez les 8 chiffres de votre code permanent ci-contre, et inscrivez-le à nouveau ci-dessous avec vos nom et prénom. Code permanent : ...................................................... Prénom : ...................................................... Nom : ...................................................... Les réponses aux questions sont à donner exclusivement sur cette feuille : les réponses données sur les feuilles précédentes ne seront pas prises en compte. Important : noircissez complètement l’intérieur de chaque case (pas de croix, pas de cercles). y Question 1 : A B C D E F Question 2 : A B C D E F Question 3 : A B C D E F Question 4 : A B C D E F Question 5 : A B C D E F Question 6 : A B C D E F Question 7 : A B C D E F Question 8 : A B C D E F Question 9 : A B C D E F Question 10 : A B C D E F Question 11 : A B C D E F Question 12 : A B C D E F Question 13 : A B C D E F Question 14 : A B C D E F Question 15 : A B C D E F Question 16 : A B C D E F Question 17 : A B C D E Question 18 : A B C D E Question 19 : A B C D E Question 20 : A B C D E F G H G H G H G H G H G H I J y