\documentclass[a4paper,10pt]{article}
\usepackage{myXsim}
\usepackage{minted}

\author{Bertrand Benjamin}
\title{Système d'exploitation - Cours}
\date{octobre 2022}

\pagestyle{empty}

\begin{document}

\maketitle

\setcounter{section}{2}

\section{Système de fichiers}

\subsection{Arborescence et chemin}

Sous les systèmes Linux les fichiers sont représentés sous forme d'arborescence dont voici un exemple ci-dessous.
\begin{center}
    \includegraphics[scale=0.7]{./fig/linux-fs}
\end{center}

Les fichiers sont repérés par leur \textbf{chemin}:
\begin{itemize}
    \item \textbf{absolu}: c'est à dire depuis la racine.
    \item \textbf{relatif}: c'est à dire depuis le répertoire courant.
\end{itemize}

\paragraph{Exemple:}
Supposons que l'on soit dans le répertoire \texttt{/home/user-1} de l'exemple précédent.

\afaire{Donner le chemin relatif et absolu des fichiers \texttt{image.png} puis \texttt{fstab}}

\paragraph{Exemple - correspondance URL et chemin de fichier:}
Dans le configuration du serveur NSI, il y a une correspondance entre le chemin relatif des fichiers à partir de \texttt{public\_html} et l'url d'accès \url{http//192.168.221.206/~USER/}.

Correspondance

\begin{center}
    \begin{tabular}{p{0.45\textwidth}|p{0.45\textwidth}}
        Système de fichier & Url \\
        \hline
        \url{/home/USER/public_html/mapage.html} & \\
        \hline
                                                 & \url{http//192.168.221.206/~USER/asset/image.jpg} \\
        \hline
        \url{/home/USER/mapage.html} & \\
        \hline
                                                 & \url{http//192.168.221.206/~USER/../password} \\
        \hline
    \end{tabular}
\end{center}

\afaire{Compléter le tableau}

\pagebreak

\subsection{Droits et permissions}

\begin{definition}[ Utilisateur et groupe ]
    Linux est un système d'exploitation multi-utilisateur. C'est à dire qu'il est capable de faire cohabiter plusieurs utilisateurs et de leur donner des droits appropriés.

    L'utilisateur \textbf{root} est le superutilisateur, il peut faire absolument tout ce qu'il veux sur le système. Les autres utilisateurs sont définis dans le fichier \url{/etc/passwd}.

    Chaque utilisateur est membre d'un groupe. La liste des groupes est définis dans le fichier \url{/etc/group}. Pour connaître les groupes auquel on appartient, on peut utiliser la commande \mintinline{bash}{groups}.
\end{definition}

\begin{definition}[ Droits et permissions ]
    Sur les systèmes linux, tout est fichier. L'accès aux fichiers permet de définir ce que l'utilisateur ou le groupe aura le droit de faire.

    À chaque fichier est attribué les éléments suivants
    \begin{multicols}{2}
        Trois catégories d'accès

        \begin{itemize}
            \item le propriétaire (ou \textit{owner}) noté \texttt{u}
            \item le group (ou \textit{group}) noté \texttt{g}
            \item les autres (ou \textit{other}) noté \texttt{o}
        \end{itemize}

        Trois niveaux d'accès
        \begin{itemize}
            \item lecture noté \texttt{r} (read)
            \item écriture noté \texttt{w} (write)
            \item exécution noté \texttt{x} (execute)
        \end{itemize}
    \end{multicols}

    Ces attributs sont accessibles par la commande \mintinline{bash}{ls -l}.

\end{definition}

\paragraph{Exemple}

    \begin{center}
        \begin{minipage}{0.8\linewidth}
            \inputminted[bgcolor=base3]{bash}{./annexes/3B_ls.shell}
        \end{minipage}
    \end{center}

    \begin{multicols}{2}
        Pour le fichier \texttt{config.yml}

        \begin{center}
            \begin{tabular}{|c|p{1cm}|c|c|c|}
                \hline
                & Qui & Lecture & Écriture & Execution \\
                \hline
                propriétaire & & & & \\
                \hline
                groupe & & & & \\
                \hline
                autres & & & & \\
                \hline
            \end{tabular}
        \end{center}

        Pour le fichier \texttt{script.sh}

        \begin{center}
            \begin{tabular}{|c|p{1cm}|c|c|c|}
                \hline
                & Qui & Lecture & Écriture & Exécution \\
                \hline
                propriétaire & & & & \\
                \hline
                groupe & & & & \\
                \hline
                autres & & & & \\
                \hline
            \end{tabular}
        \end{center}
    \end{multicols}

    \afaire{compléter les tableaux}

\paragraph{Remarque:} l'utilisateur \texttt{root} pourra toujours faire tout ce qu'il veut sur tous les fichiers.

\subsection{Changer les droits}

Pour changer le propriétaire d'un fichier, on utilise la commande

    \begin{center}
        \begin{minipage}{0.8\linewidth}
            \inputminted[bgcolor=base3]{bash}{./annexes/3B_chown.shell}
        \end{minipage}
    \end{center}


Pour changer les droits d'un fichier, on utilise la commande

    \begin{center}
        \begin{minipage}{0.8\linewidth}
            \inputminted[bgcolor=base3]{bash}{./annexes/3B_chmod.shell}
        \end{minipage}
    \end{center}

\paragraph{Exemples}
\begin{enumerate}
    \item Commande ajoutant les droits d'écriture au groupe. \\

    \item Commande enlevant les droits d'écriture et de lecture aux autres. \\

    \item Commande enlevant les droits de lecture au groupe et aux autres. \\
\end{enumerate}

\afaire{Proposer une commande}

\paragraph{Remarque:} l'option \texttt{-R} permet d'appliquer la règle à tous les fichiers contenus dans un répertoire.



\end{document}
