Commit 6908b4fc authored by Stephane Bonnet's avatar Stephane Bonnet
Browse files

Merge branch 'adv' into 'master'

Adv

See merge request picasoft/apis/h19/init/linuxadv!7
parents f7904a60 3efe66a0
Pipeline #33813 failed with stages
in 16 seconds
......@@ -5,3 +5,6 @@ all:
presentation:
pdflatex "\def\Release{PRESENTATION}\input{main}"
pdflatex "\def\Release{PRESENTATION}\input{main}"
clean:
rm -f *.nav *.aux *.dvi *.log *.out *.pdf *.snm *.toc *.vrb
\subsection{Permissions}
\subsection{Utilisateurs et groupes}
\begin{frame}{Les permissions}
%% permissions fichiers
\begin{frame}[fragile]{Utilisateurs et groupes}
\framesubtitle{Vocabulaire}
Unix est un système multi-utilisateurs. Les utilisateurs peuvent appartenir à des groupes.
\begin{block}{Utilisateur}
Deux catégories:
\begin{itemize}
\item Utilisateurs \emph{système} utilisés pour la sécurité du système.
\item Utilisateurs \emph{normaux} qui sont voués à se servir du système.
\end{itemize}
Un utilisateur est identifié par un nombre, l'\textbf{uid} (\emph{user id}) auquel est
associé un nom, le \textbf{username} ou \textbf{login}.
\end{block}
\begin{block}{Groupe}
Les utilisateurs appartiennent à un groupe principal et peuvent appartenir
à plusieurs groupes secondaire. Les groupes sont définis par
un numéro, le \textbf{gid} (\emph{group id}) auquel est associé un nom.
\end{block}
\end{frame}
\subsection{Utilisateurs et groupes}
\begin{frame}[fragile]{Utilisateurs et groupes}
\framesubtitle{Fichiers associés}
Les fichiers de gestion des utilisateurs sont stockés dans le répertoire \cmd{/etc}.
\begin{itemize}
\item Le fichier \cmd{/etc/passwd} contient la liste des utilisateurs.
\item Le fichier \cmd{/etc/shadow} contient les mots de passe chiffrés des utilisateurs.
\item Le fichier \cmd{/etc/groups} contient la liste des groupes et de leurs membres.
\end{itemize}
\end{frame}
\begin{frame}[fragile]{Utilisateurs et groupes}
\framesubtitle{Utilisateurs et groupes propriétaires}
Les fichiers et répertoires sont tous la propriété d'utilisateurs variables. L'immense majorité des fichiers
appartient à l'utilisateur \emph{root}.
La commande ``\cmd{ls -l}'' permet d'afficher le propriétaire d'un fichier.
\begin{beamercolorbox}[wd=\linewidth,rounded=true,shadow=true]{terminal}
\begin{Verbatim}
$ ls -l /etc/shadow
-rw-r----- 1 root shadow 1296 janv. 4 12:15 /etc/shadow
\end{Verbatim}
\end{beamercolorbox}
Ici, le fichier \cmd{/etc/shadow} appartient à l'utilisateur \cmd{root} et au groupe \cmd{shadow}.
\end{frame}
\begin{frame}[fragile]{Utilisateurs et groupes}
\framesubtitle{Changement de propriétaire}
\begin{frame}{Qui suis-je?}
%% id
%% whoami
%% groups
Seul le superutilisateur peut changer le propriétaire de fichiers ou de répertoires au moyen
des commandes suivantes:
\begin{itemize}
\item \cmd{chown} change l'utilisateur propriétaire (et éventuellement le groupe)
\item \cmd{chgrp} change le groupe propriétaire
\end{itemize}
\begin{exampleblock}{}
\cmd{chown newuser:newgroup /my/file}
\cmd{chgrp newgroup /my/file}
\end{exampleblock}
\end{frame}
\begin{frame}[fragile]{Qui suis-je?}
Les commandes suivantes permettent d'identifier l'utilisateur courant et les groupes auxquel il est associé.
\begin{description}
\item \cmd{id}
\item \cmd{whoami}
\item \cmd{groups}
\end{description}
\begin{beamercolorbox}[wd=\linewidth,rounded=true,shadow=true]{terminal}
\begin{Verbatim}
$ id
uid=1000(bonnetst) gid=1000(bonnetst) groupes=1000(bonnetst),
4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare)
$ whoami
bonnetst
$ groups
bonnetst adm cdrom sudo dip plugdev lpadmin sambashare
\end{Verbatim}
\end{beamercolorbox}
\end{frame}
\begin{frame}{Devenir grand chef}
%% sudo, su
\framesubtitle{Utilisateurs et processus}
\begin{itemize}
\item Un nouveau processus hérite de l'identité du processus qui l'a lancé.
\item S'il est lancé par le shell d'un utilisateur, il hérite de l'identité de cet utilisateur.
\item Le processus ne peut accéder qu'aux ressources qui sont accessibles à cet utilisateur.
\end{itemize}
\begin{block}{Superutilisateur: \cmd{root}}
Un utilisateur a accès à toutes les ressources du système : l'utilisateur \cmd{root} d'uid 0.
\end{block}
\end{frame}
\begin{frame}{Devenir grand chef}
\framesubtitle{sudo et su}
Sur Ubuntu, \cmd{root} ne peut pas se connecter directement, il faut un moyen pour qu'un utilisateur
normal puisse accéder aux ressources et fichiers protégés.
\begin{block}{\cmd{sudo}}
\begin{itemize}
\item Exécute une commande sous l'identité du superutilisateur.
\item Ne peut être utilisée que par les membres du groupe \cmd{sudo}.
\item ``\cmd{sudo bash}'' lance un shell superutilisateur.
\end{itemize}
\end{block}
\begin{block}{\cmd{su}}
\begin{itemize}
\item Sur d'autres systèmes, la commande \cmd{su} (\emph{Substitute User}) est utilisée.
\item Substitue l'utilisateur \cmd{root} à l'utilisateur courant.
\item Nécessite d'entrer le mot de passe de l'utilisateur root.
\end{itemize}
\end{block}
\end{frame}
\begin{frame}{Création et suppression}
% adduser, deluser
\begin{itemize}
\item \cmd{adduser} Ajoute un utilisateurs
\item \cmd{deluser} Supprime un utilisateur
\item \cmd{addgroup} Ajoute un groupe
\item \cmd{delgroup} Supprime un utilisateur
\end{itemize}
\begin{block}{Ajouter et supprimer des utilisateurs aux groupes}
\begin{itemize}
\item \cmd{adduser user group} ajoute l'utilisateur \cmd{user} au groupe \cmd{group}
\item \cmd{deluser user group} supprime l'utilisateur \cmd{user} du groupe \cmd{group}
\end{itemize}
\end{block}
\end{frame}
\subsection{Variables}
\begin{frame}{Un peu de mémoire : les variables}
%% Définir une variable
%% setenv / export
\begin{frame}{Changer son mot de passe}
La commande ``\cmd{passwd}'' permet de changer son mot de passe.
\begin{alertblock}{Changement pour autrui}
Le superutilisateur peut changer le mot de passe d'autres utilisateurs.
``\cmd{passwd user}'' change le mot de passe de l'utilisateur \cmd{user}.
\end{alertblock}
\end{frame}
\begin{frame}{\cmd{PATH}}
\subsection{Permissions}
\begin{frame}{Les permissions}
Les fichiers et répertoires appartiennent à un utilisateur et à un groupe. Les permissions d'accès sont définies pour:
\begin{itemize}
\item Le propriétaire du fichier (\emph{user}): \textbf(u).
\item Le groupe du fichier: \textbf(g).
\item Le reste du monde (\emph{others}): \textbf(o).
\end{itemize}
Les permissions d'accès peuvent être en:
\begin{itemize}
\item Lecture (\emph{read}): \textbf(r).
\item Écriture (\emph{write}): \textbf(w).
\item Exectution (\emph{eXecute}): \textbf(x).
\end{itemize}
\end{frame}
\begin{frame}{\cmd{PS1}}
\begin{frame}[fragile]{Les permissions}
\frametitle{Visualisation des permissions}
``\cmd{ls -l}'' affiche les permissions d'un fichier ou d'un dossier.
\begin{beamercolorbox}[wd=\linewidth,rounded=true,shadow=true]{terminal}
\begin{Verbatim}
$ cd ~/api
$ ls -l file_1
-rw-r--r-- 1 bonnetst bonnetst 0 janv. 21 14:12 file_1
\end{Verbatim}
\end{beamercolorbox}
\end{frame}
\begin{frame}{Variables de sortie}
\begin{frame}[fragile]{Les permissions}
\frametitle{Interprétation}
\begin{itemize}
\item -\textcolor{blue}{rw-}r-{}-r-{}- indique les permissions pour le propriétaire
\item -rw-\textcolor{blue}{r-{}-}r-{}- indique les permissions pour le groupe
\item -rw-r-{}-\textcolor{blue}{r-{}-} indique les permissions pour les autres
\end{itemize}
\end{frame}
\subsection{Enchaînement de commandes}
\begin{frame}{\&\& et ||}
\subsection{Variables}
\begin{frame}[fragile]{Les variables}
Le shell permet de définir et d'utiliser des variables.
\begin{block}{Variable}
\begin{itemize}
\item Identifiée par son nom
\item Affectée d'une valeur
\item Elle peut être locale au shell
\item Elle peut être exportée. Dans ce cas, on parle de variable d'environnement.
\end{itemize}
\end{block}
\begin{block}{Manipulation des variables}
\begin{itemize}
\item \cmd{myvar="hello"} Crée la variable \cmd{myvar} et y affecte la chaîne "hello".
\item \cmd{export MYVAR="hello"} Crée la variable d'environnement \cmd{MYVAR}.
\item \cmd{unset myvar} Supprime la variable \cmd{myvar}.
\item \cmd{\$myvar} accède à la valeur de la variable \cmd{myvar}.
\end{itemize}
\end{block}
\begin{beamercolorbox}[rounded=true,shadow=true]{terminal}
\begin{Verbatim}
$ myvar="hello"
$ echo $myvar
hello
\end{Verbatim}
\end{beamercolorbox}
\end{frame}
\subsection{Fichiers de configuration}
\begin{frame}[fragile]{Export de variables}
\begin{block}{Export}
Une variable exportée est connue de tous les processus lancés à partir du shell où elle a été définie.
Elle est héritée par tous les processus enfants. Elle fait partie de leur environnement.
\end{block}
\begin{beamercolorbox}[wd=\linewidth,rounded=true,shadow=true]{terminal}
\begin{Verbatim}
$ myvar="hello"
$ export MYVAR="hello export"
$ bash \textcolor{yellow}{<----- A partir de ce point, on est dans un second shell}
$ echo $myvar
$ echo $MYVAR
hello export
\end{Verbatim}
\end{beamercolorbox}
\end{frame}
\begin{frame}[fragile]{Variable PATH}
\begin{itemize}
\item Spécifie les chemins où seront recherchées les commandes
\item Variable extrêmement importante. Si un répertoire qui contient des commandes n'est pas dans le PATH,
il faudra spécifier son chemin complet pour pouvoir la lancer.
\end{itemize}
\begin{beamercolorbox}[rounded=true,shadow=true]{terminal}
\begin{Verbatim}
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
$ which ls
/bin/ls
\end{Verbatim}
\end{beamercolorbox}
\begin{block}{\cmd{which}}
\cmd{which} affiche l'emplacement d'une commande.
Recherche dans tous les répertoires du PATH.
\end{block}
\end{frame}
\begin{frame}{Les différents fichiers de configuration de \cmd{bash}}
\begin{frame}[fragile]{Variable PS1}
\begin{itemize}
\item Spécifie le format du prompt du shell.
\item On peut tenter de la redéfinir pour personnaliser sont shell.
\item RTFM!
\end{itemize}
\end{frame}
\begin{frame}{.bashrc}
\begin{frame}[fragile]{Valeurs de retour}
\begin{block}{Valeur de retour}
\begin{itemize}
\item Toutes les commandes retournent une valeur qui indique qu'elles ont réussi ou échoué.
\item La valeur 0 indique le succès, toutes les autres valeurs l'échec.
\item La variable du shell \cmd{\$?} contient cette valeur à la fin de chaque commande.
\end{itemize}
\end{block}
\begin{beamercolorbox}[rounded=true,shadow=true]{terminal}
\begin{Verbatim}
$ true
$ echo $?
0
$ false
$ echo $?
1
\end{Verbatim}
\end{beamercolorbox}
\end{frame}
\subsection{Fichiers de configuration}
\begin{frame}[fragile]{Les différents fichiers de configuration de \cmd{bash}}
\cmd{bash} exploite plusieurs fichiers de configuration:
\begin{itemize}
\item \cmd{/etc/bash.bashrc} est le fichier de configuration global, commun à tous les utilisateurs
\item \verb+~/.bashrc+ est le fichier de configuration spécifique à l'utilisateur
\end{itemize}
\begin{block}{\cmd{.bashrc}}
Les commandes de ce fichier sont exécutées par \cmd{bash} au démarrage.
Il suffit donc d'y ajouter toute personnalisation pour qu'elle soit prise en compte.
\end{block}
\end{frame}
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment