2022-2023/1NSI/03_Systeme_dexploitation/exercises.tex
Bertrand Benjamin 5a5386d980
All checks were successful
continuous-integration/drone/push Build is passing
Feat: fin du chapitre sur la ligne de commande
2022-11-04 06:10:31 +01:00

368 lines
18 KiB
TeX
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

\begin{exercise}[subtitle={Classe renversée}, step={1}, origin={Ma tête}, topics={ Système d'exploitation }, tags={ Linux }, mode={\groupMode}]
Faire des recherches, préparer une diapositive puis faire la présentation de votre réponse à une des questions suivantes
\begin{multicols}{2}
\begin{enumerate}
\item À quoi sert un système d'exploitation ?
\item Quels sont les principaux systèmes d'exploitations et quels sont les liens historiques entre eux?
\item Expliquer ce qu'est un logiciel libre, un logiciel propriétaire et un logiciel gratuit.
\item Comment sont organisés les fichiers sous Linux?
\end{enumerate}
\end{multicols}
\end{exercise}
% ----------
% Étape 2
\begin{exercise}[subtitle={TP - navigation}, step={2}, origin={<++>}, topics={ Système d'exploitation }, tags={ Linux }, mode={\infoMode}]
Dans ce TP, nous allons nous déplacer et explorer le serveur où vous aviez déposé vos pages webs. Vous profiterez de ce TP pour compléter le mémo du cours.
\begin{enumerate}
\item \textbf{Connexion au serveur}
\item \textbf{Où suis-je ?} La commande \mintinline{bash}{pwd} permet de savoir quel est répertoire nous sommes. Exécuter cette commande, noter le résultat et reconnaître les différents éléments qui le composent.
\item \textbf{Que fais-je ?} Pour obtenir de l'aide, vous pouvez accéder au manuel des commandes. Pour cela, vous avez deux possibilités (qui dépendent de l'environnement Linux) :
\begin{itemize}
\item Exécuter \mintinline{bash}{man command}.
\item Exécuter \mintinline{bash}{command --help}.
\end{itemize}
Aller chercher l'aide de la commande \mintinline{bash}{pwd} pour compléter le mémo. Vous devrez par la suite explorer le manuel des commandes pour chercher le comportement voulu.
\item \textbf{Qu'y a-t-il ?} Pour lister les fichiers et dossiers du répertoire d'un répertoire, on utilise la commande \mintinline{bash}{ls}.
\begin{enumerate}
\item Lister le contenu du répertoire.
\item Lister le contenu du répertoire avec l'option \mintinline{bash}{-a}. Quel différence y a-t-il avec le résultat sans cette option?
\item Lister le contenu du répertoire avec l'option \mintinline{bash}{-l}. Noter les informations obtenus.
\item Lister le contenu du répertoire \texttt{public\_html}.
\end{enumerate}
On peut aussi utiliser la commande \mintinline{bash}{tree} qui liste les fichiers et dossiers sous forme d'arbre.
\begin{enumerate}
\setcounter{enumi}{4}
\item Exécuter la commande \mintinline{bash}{tree}.
\item Exécuter la commande \mintinline{bash}{tree} avec l'option \mintinline{bash}{-L 1} puis \mintinline{bash}{-L 2}. Que permet de faire cette option?
\end{enumerate}
\item \textbf{Où vais-je ?} Pour se déplacer, on utilisera la commande \mintinline{bash}{cd}.
\begin{enumerate}
\item Afficher le répertoire courant. Se déplacer dans le répertoire \texttt{public\_html}. Puis afficher à nouveau le répertoire courant.
\item Exécuter \mintinline{bash}{cd ../} puis afficher le répertoire courant. Que s'est-il passé ?
\item Recommencer l'opération. Afficher le répertoire courant et lister le contenu du répertoire. Que voyez-vous?
\item Recommencer encore une fois l'opération.
\item Exécuter \mintinline{bash}{cd ~}. Où êtes vous?
\item Exécuter \mintinline{bash}{cd ../../}. Où êtes vous?
\end{enumerate}
\end{enumerate}
\end{exercise}
\begin{exercise}[subtitle={Navigation virtuelle}, step={2}, origin={<++>}, topics={ Système d'exploitation }, tags={ Linux }, mode={\paperMode}]
Ci-dessous, vous trouverez un enchainement de commandes shells avec les sorties. Vous devrez dessiner l'arborescence correspondante (les dossiers seront dans des rectangles et les fichiers dans des ovales) et indiquer en bleu les déplacements réalisés.
\begin{center}
\begin{minipage}{0.8\linewidth}
\inputminted[bgcolor=base3]{bash}{./annexes/nav_virtu.shell}
\end{minipage}
\end{center}
\end{exercise}
% ----------
% Étape 3
\begin{exercise}[subtitle={TP - interaction}, step={3}, origin={<++>}, topics={ Système d'exploitation }, tags={ Linux }, mode={\computerMode}]
Dans ce TP, nous allons nous interagir avec le système de fichier. Vous profiterez de ce TP pour compléter le mémo du cours.
\begin{enumerate}
\item Connecter vous au serveur et assurez vous que vous êtes bien dans votre répertoire personnel.
\item \textbf{Créer des dossiers} avec la commande \mintinline{bash}{mkdir}
\begin{enumerate}
\item Créer un dossier \texttt{TP\_interaction} puis se déplacer dedans.
\item Créer les dossiers \texttt{boulot} \texttt{trash} et \texttt{sauvegarde}.
\end{enumerate}
\item \textbf{Créer un fichier (vide)} avec la commande \mintinline{bash}{touch}
\begin{enumerate}
\item Dans le répertoire \texttt{boulot} créer les fichiers vides suivants
\begin{center}
\texttt{ex1.py} \qquad \texttt{index.html} \qquad \texttt{style.css} \qquad ex2.py
\end{center}
\item Dans ce même répertoire, créer un dossier \texttt{assets} pour y placer un fichier nommé \texttt{image.png}
\item Pour vérifier que tout a été bien fait, en exécutant ces deux commandes, vous devriez avoir le résultat suivant:
\begin{center}
\begin{minipage}{0.8\linewidth}
\VerbatimInput{annexes/TP_inter1.shell}
\includegraphics[scale=0.6]{./fig/TP_interaction_tree1}
\end{minipage}
\end{center}
\end{enumerate}
\item \textbf{Supprimer des fichiers} avec la commande \mintinline{bash}{rm}
\begin{enumerate}
\item Supprimer les fichiers \texttt{ex1.py} et \texttt{ex2.py}
\item Supprimer le dossier \texttt{trash}. Pour cela vous aurez besoin de passer l'option \texttt{-r} pour autoriser la suppression de dossiers.
\end{enumerate}
\item \textbf{Copier des fichiers} avec la commande \mintinline{bash}{cp}
\begin{enumerate}
\item Copier le fichier \texttt{index.html} dans le même répertoire avec le nom \texttt{page1.html}
\item Copier le fichier \texttt{index.html} dans le répertoire \texttt{sauvegarde} en conservant le même nom.
\item Copier tout le dossier \texttt{boulot} dans le répertoire \texttt{sauvegarde}. Vous aurez besoin d'ajouter l'option \texttt{-r} pour autoriser la copie de dossier de façon récursive.
\item Pour vérifier que tout a été bien fait, en exécutant ces deux commandes, vous devriez avoir le résultat suivant:
\begin{center}
\begin{minipage}{0.8\linewidth}
\VerbatimInput{annexes/TP_inter1.shell}
\includegraphics[scale=0.6]{./fig/TP_interaction_tree2}
\end{minipage}
\end{center}
\end{enumerate}
\item \textbf{Renommer/déplacer des fichiers} avec la commande \mintinline{bash}{mv}
\begin{enumerate}
\item Déplacer le fichier \texttt{page1.html} vers \texttt{home.html}
\item Renommer le dossier \texttt{boulot} en \texttt{pageweb}
\item Pour vérifier que tout a été bien fait, en exécutant ces deux commandes, vous devriez avoir le résultat suivant:
\begin{center}
\begin{minipage}{0.8\linewidth}
\VerbatimInput{annexes/TP_inter1.shell}
\includegraphics[scale=0.6]{./fig/TP_interaction_tree3}
\end{minipage}
\end{center}
\end{enumerate}
\item \textbf{Éditer un fichier} avec la commande \mintinline{bash}{nano}.
Mettre une balise \texttt{h1} avec le titre de votre choix dans le fichier \texttt{index.html}
\end{enumerate}
\end{exercise}
\begin{exercise}[subtitle={Europe}, step={3}, origin={Parlez-vous Shell ? de Thomas Hugel chez Ellipses}, topics={ Système d'exploitation }, tags={ Linux }, mode={\computerMode}]
On se place dans le répertoire personnel de l'utilisateur représenté par le raccourci ~.
\begin{enumerate}
\item Dans son répertoire personnel, créer le répertoire ̀̀TP-SHELL puis entrer dans ce répertoire.
\item Créer le répertoire Europe et changer de répertoire courant pour Europe.
\item Écrire une suite de commandes qui permet de construire l'arborescence ci-dessous sans quitter le répertoire Europe. Les fichiers apparaissant avec des rectangles sont des répertoires et les autres sont des fichiers.
\begin{center}
\includegraphics[scale=0.4]{./fig/graphe-europe}
\end{center}
\item Créer dans ~/TP-SHELL une copie de tout le répertoire Europe avec ses sous-répertoires et nommer cette copie Vieille-Europe. Les modifications qui suivent devront être faites dans Europe.
\item Appliquons le traité de Francfort de 1871. Se placer dans le répertoire Prusse et déplacer Belfort dans France puis déplacer Alsace dans Prusse. Revenir dans Europe et renommer Prusseen Allemagne.
\item Depuis Europe, afficher le contenu de Bordeaux puis détruire ce fichier.
\item Appliquons le traité de Versailles de 1919. Depuis France, ramener Alsace en France puis détruire Vieille-Europe.
\end{enumerate}
\end{exercise}
\begin{exercise}[subtitle={Expansion des nom, globbing}, step={3}, origin={<++>}, topics={ Système d'exploitation }, tags={ Linux }, mode={\computerMode}]
\begin{enumerate}
\item \textbf{Mise en place} créer un dossier \texttt{globbing}, exécuter la commande suivante (vous n'avez pas à la comprendre) puis afficher la liste des fichiers :
\begin{center}
\begin{minipage}{0.8\linewidth}
\inputminted[bgcolor=base3]{bash}{./annexes/globbing_consigne.shell}
\end{minipage}
\end{center}
\item Exécuter les commandes suivantes et noter le résultat.
\begin{center}
\begin{minipage}{0.8\linewidth}
\inputminted[bgcolor=base3]{bash}{./annexes/globbing.shell}
\end{minipage}
\end{center}
\item Que représente l'opérateur \texttt{*} ?
\item Écrire une commande qui affiche les éléments suivants
\begin{multicols}{2}
\begin{enumerate}[leftmargin=*]
\item Tous les fichiers qui se terminent pas la lettre g.
\item Tous les fichiers jpg et jpeg.
\item Tous les fichiers avec un 1 dans le nom.
\item Tous les fichiers qui commencent par la lettre p.
\end{enumerate}
\end{multicols}
\end{enumerate}
\end{exercise}
% ----------
% Étape 4
\begin{exercise}[subtitle={Lecture des droits}, step={4}, origin={<++>}, topics={ Système d'exploitation }, tags={ Linux }, mode={\paperMode}]
Décrire les droits des fichiers listés par la commande \mintinline{bash}{ls -l} sous forme d'un tableau.
\begin{center}
\begin{minipage}{0.8\linewidth}
\inputminted[bgcolor=base3]{bash}{./annexes/droit-ls.shell}
\end{minipage}
\end{center}
\end{exercise}
\begin{exercise}[subtitle={Attribution des droits}, step={4}, origin={<++>}, topics={ Système d'exploitation }, tags={ Linux }, mode={\paperMode}]
L'utilisateur \textbf{root} a créé un fichier \url{monscript.py}. Il veut attribuer des droits sur ce fichier. Quel commande doit-il taper pour attribuer les droits dans l'ordre suivant:
\begin{enumerate}
\item Le fichier doit appartenir à l'utilisateur \textbf{admin} et au groupe \textbf{wheel}.
\item L'utilisateur a le droit de lire, écrire et exécuter le fichier.
\item Le groupe a le droit de lire et écrire sur le fichier mais pas de l'exécuter.
\item Les autres auront juste le droit de le lire.
\end{enumerate}
\end{exercise}
% ----------
% Étape 4
\begin{exercise}[subtitle={QCM type E3C}, step={5}, origin={https://gitlab.com/frederic-junier/parc-nsi/-/blob/master/docs/chapitre9/TP2/NSI-TP2-systeme-git.md}, topics={ Système d'exploitation }, tags={ Linux }, mode={\trainMode}]
\begin{multicols}{2}
\begin{enumerate}[leftmargin=*]
\item Dans un système Linux, on dispose d'un répertoire racine contenant deux répertoires \url{documents` et `sauvegardes}. On se trouve dans le répertoire documents où figure un fichier \url{NSI.txt}.
Quelle commande permet de créer une copie nommée \url{NSI2.txt} de ce fichier dans le répertoire sauvegardes ?
\textbf{Réponses}
\begin{enumerate}
\item \mintinline{bash}{cp NSI.txt NSI2.txt}
\item \mintinline{bash}{cp NSI.txt sauvegardes/NSI2.txt}
\item \mintinline{bash}{cp NSI.txt ../NSI2.txt}
\item \mintinline{bash}{cp NSI.txt ../sauvegardes/NSI2.txt}
\end{enumerate}
\item À partir du dossier \url{~/Doc/QCM}, quelle commande permet de rejoindre le
dossier \url{~/Hack/Reponses} ?
\textbf{Réponses}
\begin{enumerate}
\item \mintinline{bash}{cd Hack/Reponses}
\item \mintinline{bash}{cd /Hack/Reponses}
\item \mintinline{bash}{cd ~/Hack/Reponses}
\item \mintinline{bash}{cd ../../Hack/Reponses}
\end{enumerate}
\item Sous Linux, les droits d'accès à un fichier dont le propriétaire est
Joseph sont les suivants : \mintinline{bash}{-rwxr-xr--}
Laquelle des affirmations suivantes est **fausse** ?
\textbf{Réponses}
\begin{enumerate}
\item Joseph a l'autorisation de lire ce fichier
\item les membres du groupe de Joseph ont l'autorisation de lire ce fichier
\item tous les utilisateurs ont l'autorisation de lire ce fichier
\item les membres du groupe de Joseph ont l'autorisation de modifier ce
fichier
\end{enumerate}
\item Dans la console Linux, quelle commande faut-il exécuter pour effacer le
fichier \url{test0.csv} ?
\textbf{Réponses}
\begin{enumerate}
\item \mintinline{bash}{rm test0.csv}
\item \mintinline{bash}{cp test0.csv}
\item \mintinline{bash}{ls test0.csv}
\item \mintinline{bash}{mv test0.csv}
\end{enumerate}
\item Dans un terminal, on exécute la suite de commandes système suivante :
\inputminted[bgcolor=base3]{bash}{./annexes/qcm-5.shell}
Où se trouve finalement placé le fichier exercice.txt ?
\textbf{Réponses}
\begin{enumerate}
\item dans le répertoire \mintinline{bash}{~/seance/tp}
\item dans le répertoire \mintinline{bash}{~/seance}
\item dans le répertoire \mintinline{bash}{~}
\item dans le répertoire \mintinline{bash}{/home}
\end{enumerate}
\item Pour renommer un fichier \url{text1.txt} en \url{text1.old} dans un même répertoire,
quelle commande faut-il utiliser ?
\textbf{Réponses}
\begin{enumerate}
\item \mintinline{bash}{mv text1.txt ../text1.old}
\item \mintinline{bash}{mv text1.txt text1.old}
\item \mintinline{bash}{cp text1.txt text1.old}
\item \mintinline{bash}{lns text1.txt text1.old}
\end{enumerate}
\item Sous Unix, que fait la commande suivante ? \mintinline{bash}{ls --a /home/pi >> toto.txt}
\textbf{Réponses}
\begin{enumerate}
\item elle liste uniquement les répertoires cachés du répertoire /home/pi
\item elle liste tous les fichiers du répertoire /home/pi et enregistre le
résultat dans un fichier toto.txt
\item elle liste tous les fichiers des répertoires de /home/pi et de
toto.txt
\item elle liste tous les fichiers du répertoire courant et enregistre le
résultat dans un fichier /home/pi/toto.txt
\end{enumerate}
\item Par quelle ligne de commande peut-on créer, sous le système
d'exploitation Linux, trois répertoires nommés : JAVA, PYTHON et PHP ?
\textbf{Réponses}
\begin{enumerate}
\item \mintinline{bash}{mkdir JAVA, PYTHON, PHP}
\item \mintinline{bash}{mk -dir JAVA PYTHON PHP}
\item \mintinline{bash}{mkdir JAVA PYTHON PHP}
\item \mintinline{bash}{mk dir JAVA PYTHON PHP}
\end{enumerate}
\item À partir du répertoire \url{~/Perso/Doc} quelle commande permet de rejoindre
le répertoire \url{~/Public} ?
\textbf{Réponses}
\begin{enumerate}
\item \mintinline{bash}{cd ./Public}
\item \mintinline{bash}{cd ../Public}
\item \mintinline{bash}{cd ././Public}
\item \mintinline{bash}{cd ../../Public}
\end{enumerate}
\item Dans la console Linux, quelle commande faut-il exécuter pour obtenir la
documentation sur la commande \mintinline{bash}{pwd} ?
\textbf{Réponses}
\begin{enumerate}
\item \mintinline{bash}{pwd}
\item \mintinline{bash}{cd pwd}
\item \mintinline{bash}{mkdir pwd}
\item \mintinline{bash}{pwd --help}
\end{enumerate}
\end{enumerate}
\end{multicols}
\end{exercise}
\begin{exercise}[subtitle={Hacking}, step={5}, origin={<++>}, topics={ Système d'exploitation }, tags={ Linux }, mode={\groupMode}]
Surprise si j'y arrive!
\end{exercise}