slanted W3C logo

Denis Clot, <clot@univ-lyon1.fr>


Linux & sécurité

Linux & sécurité

Interaction et communication

Plan

Présentations

UE Linux & sécurité

Ressources bibliographiques et logicielles

Sujets de TP & décalages

Préparation/Bilan aux TPs

Evaluations : bilan et remarques

Présentations

Coordonnées

Votre profil

UE Linux & sécurité

Objectifs

Abracadabra

Difficultés

UE Linux & sécurité

Contenu sommaire

Partie pratique

Partie théorique

UE Linux & sécurité

Déroulement des séances de travail

Travail personnel

Mode d'évaluation

Ressources bibliographiques et logicielles

Bibliographie

upt cover Unix Power Tools, publié chez O'Reilly

Shell Scripting Primer, guide du développeur Apple

Distribution sans installation

Quelques mots pour finir

Two of the most famous products of Berkeley are LSD and Unix. I don't think that this is a coincidence. - Anonyme

Guerre Unix/Windows - et autres considérations stupides

Quel est le meilleur système? Linux ou Windows? Mac OS X?

Quel est le système le plus sûr?

Quelle est la plus belle voiture…etc

Sujets de TP & décalages

Vous constatez des décalages entre le sujet de TP et l'environnement de votre système:

Les raisons :

Mais comment s'en sortir?

Préparation/Bilan TP : Ignition

sujet1 - logo

Mini-plan

Préparation/Bilan TP : Ignition

representation reseau

Se connecter à …

Trop de logins?

Se connecter :

Préparation/Bilan TP : Ignition

Se connecter à …

Connexion réussie :

Et les fichiers?

Préparation/Bilan TP : Ignition

Accès à un shell

Le shell

Les combinaisons de touche

Gestion des processus

Préparation/Bilan TP : Ignition

Un programme et ses interfaces

Une commande

Qu'est-ce qui alimente l'entrée standard?

Où arrivent les informations en provenance de stdout et stderr?

Préparation/Bilan TP : Ignition

Redirections

Le shell dispose de divers opérateurs de redirection

Linux dispose de quelques fichiers bizarres parmi lesquels

Préparation/Bilan TP : Ignition

Quelques informations concernant les mots de passe

Préparation/Bilan TP : Recherche d'informations

sujet 2 - logo

Mini-plan

Préparation/Bilan TP : Recherche d'informations

Un mot sur les fichiers

Les commandes vues ici procèdent à des recherches sur des fichiers. Quelques remarques s'imposent :

Préparation/Bilan TP : Recherche d'informations

Visualiser des fichiers d'aide ou d'information

Certaines commandes (man, info) sont dédiées à la consultation de fichiers d'aide organisés dans des systèmes d'aide différents. Ces commandes reposent sur l'usage d'un programme permettant de visualiser ces fichiers, i.e. de voir ce qu'ils contiennent.

Visualiseurs classiques:

En pratique, comment les utilise-t-on?

Préparation/Bilan TP : Recherche d'informations

Savoir lire l'aide

Préparation/Bilan TP : Recherche d'informations

Expressions rationnelles/Regular expressions

SymboleSignification - !! tableau imprécis !!Exemple
.correspond à n'importe quel caractère
*indique que ce qui précéde peut être répété 0, 1 ou plusieurs fois^[a-z][a-z]*$
^\([a-z][a-z]\)*$
^indique le debut de ligne - sert à contraindre dès le début de ligne
$indique la fin de ligne
\permet de faire perdre le sens spécial du caractère suivant\.
[…]correspond à un caractère dont la description est donnée entre les crochets[:space:]
[[:space:]]
[[:space:][:alpha:]3-9]
\(…\)la chaîne correspondant au contenu de la i-ème telle paire est mémorisé
\ncorrespond à ce qui a été mis en correspondance avec la i-ème paire du type précédent\([^[:space:]]+\)[[:space:]]+\1

Préparation/Bilan TP : Recherche d'informations

Expressions rationnelles/Regular expressions

SymboleSignificationExemple
{…}permet de définir les répétitions de ce qui précéde^[a-z]{3}[^a-z], ^[a-z]{3,}[^a-z], ^[a-z]{3,7}[^a-z]
\{…\}même sens pour d'autres commandes
\<…\>délimite un mot
+une ou plusieurs fois ce qui précède
?zéro ou une fois ce qui précède
|ou
(…)analogue de \(…\) dans les expressions régulières étendues - permet de grouper également!([a-z])x\1

Expression régulière étendue?

Préparation/Bilan TP : Recherche d'informations

Expressions rationnelles/Regular expressions - exemples

Préparation/Bilan TP : Recherche d'informations

Application des expressions rationnelles - jouons avec les informations!

Avertissement

Les expressions régulières permettent de chercher des motifs d'information. Mais sous quelle forme l'information dans un fichier particulier est-elle stockée?

Mais à quel niveau d'information vous placez-vous? A celui de l'information initiale, au niveau d'un format particulier (peut-être celui de la compression…)

Entrainez-vous

Si vous avez un doute sur la possibilité de faire intervenir les expressions régulières dans vos différents projets informatiques, consultez http://www.regular-expressions.info/tools.html

Préparation/Bilan TP : Recherche d'informations

Application des expressions rationnelles - jouons avec les informations!

Pensez à toujours protéger vos expressions régulières du shell!

Placez-les entre simples quotes ('') sauf si vous savez ce que vous faites.

grep ? Remember : get RegExpr print

Permet de chercher un motif (ou patron ou expression régulière) et de produire divers résultats en fonction de l'information trouvée. Ci-dessous, une liste de quelques options intéressantes:

Préparation/Bilan TP : Recherche d'informations

Application des expressions rationnelles - jouons avec les informations!

sed ? Remember : String Editor

Permet d'appliquer des commandes d'édition aux lignes lues. Pour indiquer directement les opérations sur la ligne de commande, la syntaxe est la suivante : sed [option] [-e ¿command¿] [file(s)] où la partie command est de la forme : [address[,address]][!]command [arguments]. Les différents élements sont décrits ci-après :

Quelques remarques :

sed mis à profit pour fabriquer des commandes…

On ne retrouve pas partout les commandes que l'on affectionne.

Préparation/Bilan TP : Recherche d'informations

Application des expressions rationnelles - jouons avec les informations!

awk ? Remember : heu…

Préparation/Bilan TP : Recherche d'informations

Trouver les fichiers qui…

find ? Remember : Trouver

Préparation/Bilan TP : Recherche d'informations

Petite digression sur tar

tar ? Remember : Tape Archiver

Préparation/Bilan TP : Recherche d'informations

U've got superpowers now!!

regexp superhero

Préparation/Bilan TP : Organisation du partage

sujet 3 - logo

Mini-plan

Préparation/Bilan TP : Organisation du partage

Fichiers - Généralités

Principe de base : tout est fichier!

Qu'est ce qu'un fichier?

D'un point de vue abstrait, un fichier est l'entité qui associe un contenu et des attributs.

Différents types de fichier :

Attributs :

Et le nom? Ce n'est pas un attribut! Voir la description d'un répertoire.

Préparation/Bilan TP : Organisation du partage

Fichiers - Généralités

D'un point de vue physique, le concept de fichier est projetté sur une structure d'«i-nœud» (i-node).

Un support physique de stockage doit être structuré pour permettre l'écriture et la restitution des données. L'organisation est basée sur un système de fichiers qui définit les structures qui seront utilisées à cette fin. Il existe de nombreux systèmes de fichiers :

Dans le contexte des Unices, l'i-node est la structure qui soustend l'organisation des fichiers. Elle rassemble les attributs et des pointeurs vers les blocs contenant le contenu. Chaque i-node est numéroté et le système sait lire les informations d'un i-node de numéro donné.

Préparation/Bilan TP : Organisation du partage

Fichiers - Généralités

Qu'est-ce qu'un répertoire?

C'est un fichier établissant une correspondance entre des noms et des numéros d'i-nœud.

Ajouter un fichier dans un répertoire, c'est ajouter une telle correspondance. Dans l'i-node pointé, le nombre de liens est incrémenté.

Supprimer un fichier revient à retirer la correspondance associée. Le nombre de lien pointé est décrémenté et s'il tombe à zero, les blocs de données sont libérés ainsi que la structure d'i-node.

Le nombre de lien peut-il être supérieur à 1?

Oui. Il est possible de créer un lien vers un fichier existant (et donc vers l'i-node correspondant). Il y a ainsi plusieurs noms qui pointent vers le même i-node.

A sa création, chaque répertoire contient un lien vers lui-même et un lien vers son répertoire parent. Le premier de ces deux liens implique un compteur de liens au moins égal à 2 pour tout répertoire, nombre auquel s'ajoute le nombre de sous-répertoires (et d'enventuels autres liens).

Lorsqu'un fichier est retiré d'un répertoire, il n'est pas forcément effacé!

Préparation/Bilan TP : Organisation du partage

Fichiers - Généralités

Qu'est-ce qu'un lien?

On distingue les liens physiques des liens symboliques :

Les liens se font à l'aide de la commande ln :

Préparation/Bilan TP : Organisation du partage

Fichiers - Généralités

Les permissions standards

La lecture, l'écriture et l'exécution sont les permissions standards. Selon le type de fichier, la sémantique des opérations est adaptée :

Rien n'est dit sur la modification des attributs de fichiers! Seul le propriétaire (et root) peut les ajuster. Cette opération n'est pas sujette à une permission particulière, mais conditionnée par la possibilité d'accéder au fichier visé.

Ces permissions sont déclinées à trois entités :

Comment ces permissions sont-elles appliquées?

Pour que votre commande puisse réaliser une opération sur un fichier, il est important de comprendre que le processus est associé à votre login et votre groupe. Ces informations sont utilisées comme suit :

Préparation/Bilan TP : Organisation du partage

Fichiers - Généralités

Les permissions additionnelles

Trois permissions supplémentaires existent dont le sémantique est déclinée selon la nature du fichier :

SUID et SGID ne sont pas exploitables directement par les scripts!

Ci-dessus, il est indiqué …il est possible de prendre les droits du…. Pour effectivement prendre ces droits, il faut utiliser des outils permettant de d'ajuster les identifiants utilisés par un processus. Les mises en œuvre ne seront pas considérés (c'est plus l'objet de programmation système). Les curieux pourront consulter ça, qui présente une solution basée sur l'utilisation d'un programme écrit en C!

Préparation/Bilan TP : Organisation du partage

Fichiers - Généralités

Les permissions exceptionnelles : ACL

Les permissions standards et additionnelles sont les permissions POSIX. Certains systèmes permettent d'utiliser en parallèle des ACLs (Access Control List) permettant de définir d'une façon plus ponctuelle des permissions. Pour l'instant, ce mécanisme ne sera pas considéré. Toutefois, sa présence, notamment sur 195.220.111.226, se manifeste dans les sorties de certaines commandes. Plus de détails plus loin, un jour :o(

Préparation/Bilan TP : Organisation du partage

Observation des attributs

Observation des permissions

La commande ls permet d'observer les permissions d'un fichier ou d'un répertoire :

ls -l .ssh/known_hosts
-rw-r--r-- 1 denis users 2052 jun 25 14:59 .ssh/known_hosts 
ls -l .ssh/
total 24
-rw-r--r-- 1 denis users  398 mar  3  2008 authorized_keys
-rw------- 1 denis users  672 mai 13  2007 id_dsa
-rw-r--r-- 1 denis users  617 mai 13  2007 id_dsa.pub 
ls -ld .ssh/
drwx------ 2 denis users 4096 jun 25 14:59 .ssh/

L'option -l permet d'afficher les principaux attributs associés au fichier :

L'option -i permet d'afficher le numéro d'i-node.

ls  .ssh/ -ila
total 40
2452883 drwx------   2 denis users  4096 jun 25 14:59 .
3891777 drwxr-xr-x 133 denis users 12288 oct 23 16:16 ..
2453089 -rw-r--r--   1 denis users   398 mar  3  2008 authorized_keys
2453581 -rw-------   1 denis users   672 mai 13  2007 id_dsa
ls  .ssh/ -ild
2452883 drwx------ 2 denis users 4096 jun 25 14:59 .ssh/

Préparation/Bilan TP : Organisation du partage

Ajustement des permissions et autres attributs

Le propriétaire d'un fichier peut toujours(*) redéfinir les permissions sur son fichier, dans la mesure où il dispose d'un chemin pour accéder à son fichier.

Ajustement des permissions

La commande chmod permet d'ajuster les permissions d'un fichier :

Préparation/Bilan TP : Organisation du partage

Ajustement des permissions et autres attributs

Permissions implicites - Quelles permissions sont données lors de la création d'un fichier (resp. répertoire)?

La commande umask permet d'ajuster les permissions positionnées lors de la création d'un fichier ou d'un répertoire.

Préparation/Bilan TP : Organisation du partage

Ajustement des permissions et autres attributs

Ajustement des dates

La commande touch permet d'ajuster les différentes dates associées à un fichier.

Changement de propriétaire/groupe

Il est possible de changer le propriétaire (et le groupe) attaché à un fichier à l'aide de la commande chown, mais cette commande nécessite des privilèges particuliers. Il est possible de changer seulement le groupe avec la commande chgrp.

Pourquoi je peux pas chowner?

Considérez le scénario suivant :

  1. J'écris un programme qui essaye de lister le contenu d'un répertoire qui ne m'appartient pas.
  2. Je donne à tout le monde le droit d'exécuter ce programme.
  3. Je désigne comme nouveau propriétaire root.
  4. J'exécute le programme : les permissions de root sont assez élevées pour permettre d'exécuter à peu près n'importe quoi sur le système.

Ouf, ce n'est pas possible!

Préparation/Bilan TP : Organisation du partage

Créer/supprimer des fichiers et des répertoires

Commandes usuelles de manipulation de fichiers

nom de commandeopération réalisée fichierrépertoire
mkdir (make directory)créer un répertoire vide - ok
rmdir (remove directory)effacer un répertoire vide - ok
cp (copy)copier okok
mv (move)déplacer/renommer okok
touch créer un fichier/ajuster une dateokok
rm (remove)supprimer okok

Dans la table ci-dessus, la colonne intitulée «opération réalisée» décrit naïvement l'opération. Il est nécessaire de consulter le manuel pour connaître avec précision l'opération lorsqu'elle est appliquée à un fichier ou à un répertoire. L'implication d'un répertoire sous-entend souvent la prise en charge d'une arborescence complète.

> mkdir rep1;mkdir rep1/rep2; 
> cd rep1;touch F1 F2 rep2/F3;
> cd ..;
> ls -R rep1
rep1/:
F1  F2  rep2

rep1/rep2:
F3
> cp rep1 rep3
cp: omission du répertoire `rep1/'
> cp -R rep1 rep3
> ls -R rep3
rep3/:
F1  F2  rep2

rep3/rep2:
F3

> cp -R rep1 rep3
> ls -R rep3
rep3/:
F1  F2  rep1  rep2

rep3/rep1:
F1  F2  rep2

rep3/rep1/rep2:
F3

rep3/rep2:
F3
> rmdir rep3
rmdir: rep3: Le répertoire n'est pas vide.
> rm -rf rep3
> ls rep3
ls: ne peut accéder rep3: Aucun fichier ou répertoire de ce type 
> mkdir -p rep1/rep2; 
> cd rep1;touch F1 F2 rep2/F3;
> cd ..;
> tree rep1
rep1/
|-- F1
|-- F2
`-- rep2
    `-- F3

1 directory, 3 files
> cp -R rep1 rep3
> cp -R rep1 rep3
> tree rep3
rep3
|-- F1
|-- F2
|-- rep1
|   |-- F1
|   |-- F2
|   `-- rep2
|       `-- F3
`-- rep2
    `-- F3

3 directories, 6 files
> rm -rf rep3 

Attention!!

> rm FichierImportant;
> unrm FichierImportant
-bash: unrm: command not found
> undelete FichierImportant
-bash: undelete: command not found
(x_X)....

> tree 
.
|-- Fichier
`-- FichierSuperMegaImportant

0 directories, 2 files
> cat Fichier
> mv Fichier FichierSuperMegaImportant 
(x_X)....  

Un fichier effacé est effacé. Pas de seconde chance!

Préparation/Bilan TP : Organisation du partage

Créer/supprimer des fichiers et des répertoires

Et les permissions dans tout ça?

Lors d'une manipulation portant sur un fichier existant, qu'advient-il des permissions? Plus précisément :

Préparation/Bilan TP : Organisation du partage

Ecrire dans un fichier

Par le biais d'astuces reposant sur des redirections :

echo Texte > Fichier
echo plus long  >> Fichier
echo -e "Texte\nplus long" > Fichier
cat > Fichier
Texte 
plus long
que le precedent
<Ctrl+D>

Toutefois, cette solution ne permet pas les modifications facilement! Comment modifier l'une des lignes sans lourdeur?

Par le biais d'un éditeur de texte non graphique :

Par le biais d'un éditeur de texte graphique : débrouillez-vous.

Préparation/Bilan TP : Organisation du partage

Vos fichiers

Vos fichiers

…dans le titre précédent, un amalgame courant est commis : un login et la personne qui l'utilise. Un login est plutot à associer à un rôle ou un niveau de permissions - il n'est pas rare de jongler avec plusieurs logins! Les groupes aident à éviter la multiplication des logins, mais en fonction des besoins en sécurité, il est préférable d'utiliser différents logins.

Les fichiers associés à un login

Dans le fichier /etc/passwd, chaque login est associé à un répertoire (sixième champ), son «home directory» ou «home». Ce répertoire appartient au login et est voué à abriter de façon pérenne les fichiers associés au login. Il est courant d'utiliser le répertoire /tmp pour placer de façon provisoire des fichiers. Dans ce répertoire au nom évocateur (tmp pour temporaire), il n'est pas assuré de retrouver les fichiers placés la veille par exemple.

Certains raccourcis existent pour faciliter les déplacements/copies vers/depuis le home :

> whoami	
denis
> cd /usr/share/doc/rfc	
> pwd
/usr/share/doc/rfc
> cd
> pwd
/home/denis
> cat /etc/passwd | awk -F ":" '/denis/{print $6}'
/home/denis
> echo ~ ~denis ~root
/home/denis /home/denis /root
> cd ~root
bash: line 1: cd: /root: Permission non accordée
> cp -r /usr/share/doc/rfc/ ~/rfc -v 
`/usr/share/doc/rfc/rfc1809.txt.gz' -> `/home/denis/rfc/rfc1809.txt.gz'
`/usr/share/doc/rfc/rfc2479.txt.gz' -> `/home/denis/rfc/rfc2479.txt.gz'
`/usr/share/doc/rfc/rfc855.txt.gz' -> `/home/denis/rfc/rfc855.txt.gz'
… 

Préparation/Bilan TP : Organisation du partage

Erratum / Gare aux ambiguïtés

TP recherche d'informations

Le sujet comporte des imprécisions, la correction présente des erreurs : comment caractérise-t-on les fichiers que vous avez le droit d'exécuter? Que veut dire «les fichiers exécutables»? Pour les deux questions, des réponses naïves et fausses peuvent être données!

Outils de démonstration et exemples de sessions

Outils de démonstration

Divers outils existent pour enregistrer et rejouer une partie d'une interaction avec le systéme. Certains outils permettent d'enregistrer une interaction avec le terminal, d'autres permettent de capturer une interaction graphique portant sur une fenêtre ou la totalité de l'environnement graphique.

Vous pouvez enregistrer une session de console avec script (commande existante sur 195.220.111.226).

> script -t DemoScript 2> DemoScriptTime 
Le script a débuté, le fichier est DemoScript
not in a login shell
reading ~.bashrc
> echo salut 
salut
> umask
0022
> <Ctrl+D>
exit
Script complélé, le fichier est DemoScript
> script -a -t DemoScript 2>> DemoScriptTime
Le script a débuté, le fichier est DemoScript
not in a login shell
reading ~.bashrc
> whoami
… 

Vous pouvez rejouer une session avec la commande scriptreplay si vous disposez du fichier contenant l'output de la console ET le fichier contenant le timing de cet output.

> scriptreplay DemoScriptTime DemoScript
> echo salut
salut
> umask… 

Vous pouvez même la rejouer en modifiant la vitesse de lecture!

> scriptreplay  DemoScriptTime DemoScript 4

Outils de démonstration et exemples de sessions

Exemples de session

Quelques sessions ont été enregistrées et placées sur le site dans le but de donner des exemples concrets d'usage des commandes vues en cours

Préparation/Bilan TP : Shell

sujet 4 - logo

Mini-plan

Préparation/Bilan TP : Shell

Processus

Exécution de programme

Il existe différentes façons de lancer un programme :

Chaque lancement de programme engendre un processus qui est une instance du programme. Un programme peut être exécuté plusieurs fois en parallèle, ce qui conduit à différents processus.

Organisation des processus

Comme les fichiers, les processus sont organisés en arborescence :

mai12345@195.220.111.226:~> pstree -p
init(1)-+-NetworkManager(5149)-+-dhclient(5377)
        |                      `-{NetworkManager}(5378)
        ......
        |-acpid(4515)
        |-atd(5264)
        |-avahi-daemon(4724)---avahi-daemon(4725)
        |-evolution-data-(6178)-+-{evolution-data-}(6183)
        |                       `-{evolution-data-}(6190)
        |-firefox(11881)-+-{firefox}(11883)
        |                |-{firefox}(11893)
        |                `-{firefox}(11899)
        |-klogd(4679)
        |-master(4881)-+-pickup(11331)
        |              `-qmgr(5466)
        |-mixer_applet2(6226)---{mixer_applet2}(6256)
        |-pulseaudio(6044)-+-gconf-helper(6047)
        |                  |-{pulseaudio}(6045)
        |                  `-{pulseaudio}(6046)
        |-syslogd(4625)
        |-system-tools-ba(5229)
        |-trashapplet(6212)
        |-udevd(2284)
        |-wpa_supplicant(5153)
        `-xterm(8745)---bash(8746)

Préparation/Bilan TP : Shell

Processus

Structure d'un processus

Un processus est un objet géré en mémoire. L'espace mémoire qu'il occupe est structuré pour contenir :

On appelle «contexte d'un processus» l'ensemble des informations qui permettront au système d'arrêter le processus à un instant et le redemarrer plus tard sans qu'il soit perturbé par cet arrêt :

Préparation/Bilan TP : Shell

Processus

Création d'un nouveau processus : fork et exec

Un processus peut créer un nouveau processus, ce qui implique les étapes suivantes :

ZZZzzz (-_-)

Ces détails sont utiles à une meilleure compréhension des mécanismes du shell tels que la communication entre processus et les redirections.

Préparation/Bilan TP : Shell

Les shells

Shells

Un shell est un interpréteur de commande - une interface entre l'utilisateur et le système!

Deux familles de shells

Le premier shell, le Thompson shell (sh), très rudimentaire, a donné deux variantes majeures par les caractéristiques qu'elles ont apportées :

Ces deux shells ont donné lieu à diverses évolutions rassemblées en deux familles

Préparation/Bilan TP : Shell

Les shells

Mécanisme fondamental

Tout shell procède selon le même schéma pour traiter les commandes :

  1. lecture et analyse lexicale
  2. interprétation
  3. exécution

Toutefois, chaque shell peut présenter des spécificités pour ces étapes. Nous nous intéresserons au Bourne shell et plus particulièrement au bash.

Préparation/Bilan TP : Shell

Les shells

Ce qui suit est un résumé (et probablement une déformation) des informations données par le manuel de la commande bash!

Lecture et analyse lexicale

Dans le cas général, l'objectif de la phase de lecture et d'analyse lexicale est de découper la ou les lignes lues pour d'identifier le type de commande et lire tous les éléments la constituant. Dans le cas particulier des «dot script», tout le script est lu, mais dans le cas général, le minimum est lu pour identifier la première commande. Une fois cette épape réalisée, le shell passe à la phase d'interprétation.

Le découpage et l'analyse prennent sens autour des éléments suivants :

Il existe différents types de commande :

A quoi ressemble une expression?

Ceci est incomplet…! Se reporter au manuel ou à la documentation complète du shell concerné pour plus de détails.

Préparation/Bilan TP : Shell

Les shells

Interprétation

La phase d'interprétation (expansion dans le manuel original) est faite d'une suite ordonnée d'opérations :

  1. remplacement des alias
  2. développement des accolades (brace expansion)
  3. développement des caractères tildes (~) (tilde expansion)
  4. développement des variables (parameter expansion)
  5. substitution des commandes (command substitution)
  6. développement arithmétiques (arithmetic expansion)
  7. substitution de processus (process substitution) - sur les systèmes qui supportent les FIFO nommés
  8. découpage en champs (world splitting)
  9. développement des noms de fichiers (pathname expansion)
  10. traitement des quotes (quote removal)

Chacune de ces étapes est décrite dans le support relatif au shell.

Un mot sur les redirections - mises en place avant l'exécution des commandes…

La commande eval précédant une commande permet de provoquer un nouveau cycle d'interprétation avant exécution.

Préparation/Bilan TP : Shell

Les shells

Quelques eclaircissements

Préparation/Bilan TP : Shell

Les shells

Exécution

Lorsque le processus d'interprétation prend fin, si la commande construite est une commande simple, alors l'exécution dépend du premier mot de cette ligne :

Si la recherche aboutit, le reste des mots est passé comme ensemble d'arguments à la commande et le programme est exécuté après que l'interpréteur est «forqué» (sauf s'il s'agit d'une fonction!). Si l'exécution échoue parce que le programme n'est pas dans un format exécutable connu par le système et s'il ne s'agit pas d'un répertoire, il est traité comme un script shell : un sous-shell est exécuté pour le traiter. Si la première ligne est de la forme #!/CHEMIN/VERS/UN/PROGRAMME, ce programme est utilisé comme interpréteur des commandes qui sont données dans la suite du fichier, sinon, le sous-shell les exécute directement.

Je trouve pas le manuel pour la commande alias!

Les commandes que vous manipulez peuvent être des commandes intégrées du shell ou des fonctions définies dans cet environnement. Comment repérer que la commande que vous manipulez est interne ou externe au shell? La commande intégrée declare sans argument fournit la liste des fonctions (et leurs définitions). La commande intégrée enable -p fournit la liste des fonctions intégrées du bash. La commande which permet de connaître le chemin absolu vers un programme externe au shell que la variable PATH permet d'atteindre.

Les fonctions intégrées du shell sont documentées dans le manuel du shell! C'est le cas des commandes alias, echo, cd etc.

~> enable | grep alias	
enable alias
enable unalias
~> which alias	
~> declare | grep alias
_alias () 
            COMPREPLY=($( compgen -A alias -S '=' -- $cur ))
            COMPREPLY=("$( alias ${cur%=} 2>/dev/null | 			     sed -e 's|^alias '$cur'\(.*\)$|\1|' )")
    COMPREPLY=($( command ls $datadir/*.@(multi|alias) ));
    COMPREPLY=(${COMPREPLY[@]%.@(multi|alias)});
            COMPREPLY=($( compgen -W 'alias arrayvar binding 
........
~> which kill
/bin/kill
~> enable | grep kill	
enable kill
~> declare | grep kill
_kill () 
_killall () 
	    alarm exec fork getpgrp getppid getpriority kill pipe qx \
	

Préparation/Bilan TP : Shell

Les shells

Exemples de commandes

Ci-dessous, quelques exemples de pièges

Pour finir, un exemple de commande permettant de lancer un traitement sans l'obligation de rester connecter jusqu'à la fin de ce traitement!

Préparation/Bilan TP : Shell

Les shells

Scripts

Un ensemble de commandes peut être enregistré dans un fichier afin de pouvoir être ré-exécuté plus tard. Un tel fichier est un script. Il existe deux façons d'utiliser un script :

Dans le second cas, il est préférable que la première ligne soit de la forme #!/CHEMIN/VERS/INTERPRETEUR afin d'indiquer clairement l'interpréteur des commandes à utiliser pour exécuter les lignes suivantes. Sinon, c'est le shell en cours qui sera utilisé d'office comme interpréteur.

Certains paramètres du shell prennent un intérêt particulier dans le contexte des scripts, notamment pour la mise au point de script pouvant gérer différentes options :

Ces paramètres existent en permanence dans l'environnement du shell.

D'autres paramètres existent et peuvent trouver une utilité dans un contexte particulier…

Préparation/Bilan TP : Shell

Les shells

Scripts - Exemples

Préparation/Bilan TP : Shell

Retour sur les aspects «système» du shell

Pour une commande simple

Dans le cas d'une commande simple exécutée par le shell sans redirection : echo toto

Dans le cas d'une commande simple exécutée par le shell avec redirection : echo toto > /tmp/toto

Pour une commande composée

Dans le cas d'un pipeline de commandes : echo toto | wc -c

Préparation/Bilan TP : Connexions et Transferts

sujet 5 -logo

Mini-plan

Préparation/Bilan TP : Connexions et Transferts

Connexions locales

Initialisation d'une session locale

La connexion d'un utilisateur passe par un processus d'initialisation. Cette initialisation varie en fonction du contexte de la connexion (graphique ou console). Il est important de noter qu'un shell est initialisé différemment dans ces deux contextes.


Préparation/Bilan TP : Connexions et Transferts

Connexions locales

Initialisation d'une session locale

Interface de connexion - Ubuntu Gnome KDE Fluxbox WindowMaker Leopard enlightenment openbox metacity
vt100

Préparation/Bilan TP : Connexions et Transferts

Connexions distantes

Services de connexions à distance


Préparation/Bilan TP : Connexions et Transferts

Connexions distantes

Architecture client/serveur

Préparation/Bilan TP : Connexions et Transferts

Connexions distantes

Outils de connexions à distance


Préparation/Bilan TP : Connexions et Transferts

Concepts fondamentaux des réseaux

Modèles en couches

Principe du modèle en couches

Exemple

  1. Cabinet d'un Chef d'état
  2. Département de traduction
  3. Département de chiffrement
  4. Service de transmission
  1. Cabinet d'un Chef d'etat
  2. Département de traduction
  3. Département de chiffrement
  4. Service de transmission

Préparation/Bilan TP : Connexions et Transferts

Concepts fondamentaux des réseaux

Modèle OSI

Fonctions isolées dans le modèle OSI, en partant du niveau matériel et en remontant vers les niveaux d'abstraction plus hauts

Préparation/Bilan TP : Connexions et Transferts

Concepts fondamentaux des réseaux

TCP-IP

Le modèle TCP-IP visait différents objectifs :

Le modèle TCP-IP définit quatre couches

Préparation/Bilan TP : Connexions et Transferts

Concepts fondamentaux des réseaux

TCP-IP - Concepts fondateurs


Préparation/Bilan TP : Connexions et Transferts

Concepts fondamentaux des réseaux

TCP-IP - Concepts fondateurs


Préparation/Bilan TP : Connexions et Transferts

Concepts fondamentaux des réseaux

TCP-IP - Mécanismes


Préparation/Bilan TP : Connexions et Transferts

Concepts fondamentaux des réseaux

TCP-IP - Mécanismes


Préparation/Bilan TP : Connexions et Transferts

Concepts fondamentaux des réseaux

TCP-IP - Mécanismes


Préparation/Bilan TP : Connexions et Transferts

Concepts fondamentaux des réseaux

TCP-IP - Exemple de communication simple

Pour mettre en évidence les informations utiles aux différentes protocoles et les resituer dans les couches de la pile TCP IP, des couleurs sont utilisées ci-desous: couche application, couche transport, couche réseau, couche liaison.

La réalité est légèrement plus complexe à déchiffrer car les détails sont plus nombreux, mais la pratique de l'observation des échanges permet de comprendre rapidement l'imbrication et les successions des échanges. Il est important de comprendre, pour bien débuter, que chaque couche a besoin de certaines informations: adresse IP et numéro de port pour le client et pour le serveur, ainsi que des adresses matérielles pour la transmission des paquets.
Ici, seuls les échanges au niveau applicatifs sont illustrés, mais on pourrait s'intéresser à plus de détails.


Préparation/Bilan TP : Connexions et Transferts

Concepts fondamentaux des réseaux

TCP-IP - Exemple de communication classique - l'envoi de mail

L'envoi de mail repose dans une majorité de cas sur le protocole SMTP (Simple Mail Transfert Protocol). Il reste très simple, au point qu'il peut être réalisé « à la main» comme la session ci-dessous le montre:

telnet smtp.univ-lyon1.fr 25 
Trying 134.214.100.11...
Connected to smtprocad.univ-lyon1.fr.
Escape character is '^]'.
220 cisrsmtp4.univ-lyon1.fr ESMTP Postfix (Debian/GNU) 
HELO TestTelnet 
250 cisrsmtp4.univ-lyon1.fr
MAIL FROM: <denis@is2ifa-01.univ-lyon1.fr>
250 2.1.0 Ok 

Tiens, tiens, je n'ai pas à justifier de l'utilisation de cette adresse…

RCPT TO: denis.clot@gmail.com 
250 2.1.5 Ok 
DATA 
354 End data with <CR><LF>.<CR><LF> 
Subject: evidemment test
J'ecris des choses
tout a fait
passionnantes

.  
250 2.0.0 Ok: queued as C8EABE0072 
QUIT 
221 2.0.0 Bye
Connection closed by foreign host.  

SMTP présente une limitation importante: comme le protocole TELNET, il a été écrit pour permettre des échanges entre des terminaux utilisant le NVT ASCII comme encodage, une variante de l'US ASCII utilisant les 7 bits de poids faible pour le codage d'un caractère (le bit de poids fort de l'octet étant mis à 0). En d'autres termes, seuls les caractères ci-dessous peuvent être transmis sans perte (lorsqu'un octet est transmis, le bit de poids fort est positionné à zéro).

|  0 nul|  1 soh|  2 stx|  3 etx|  4 eot|  5 enq|  6 ack|  7 bel|
|  8 bs |  9 ht | 10 nl | 11 vt | 12 np | 13 cr | 14 so | 15 si |
| 16 dle| 17 dc1| 18 dc2| 19 dc3| 20 dc4| 21 nak| 22 syn| 23 etb|
| 24 can| 25 em | 26 sub| 27 esc| 28 fs | 29 gs | 30 rs | 31 us |
| 32 sp | 33  ! | 34  " | 35  # | 36  $ | 37  % | 38  & | 39  ' |
| 40  ( | 41  ) | 42  * | 43  + | 44  , | 45  - | 46  . | 47  / |
| 48  0 | 49  1 | 50  2 | 51  3 | 52  4 | 53  5 | 54  6 | 55  7 |
| 56  8 | 57  9 | 58  : | 59  ; | 60  < | 61  = | 62  > | 63  ? |
| 64  @ | 65  A | 66  B | 67  C | 68  D | 69  E | 70  F | 71  G |
| 72  H | 73  I | 74  J | 75  K | 76  L | 77  M | 78  N | 79  O |
| 80  P | 81  Q | 82  R | 83  S | 84  T | 85  U | 86  V | 87  W |
| 88  X | 89  Y | 90  Z | 91  [ | 92  \ | 93  ] | 94  ^ | 95  _ |
| 96  ` | 97  a | 98  b | 99  c |100  d |101  e |102  f |103  g |
|104  h |105  i |106  j |107  k |108  l |109  m |110  n |111  o |
|112  p |113  q |114  r |115  s |116  t |117  u |118  v |119  w |
|120  x |121  y |122  z |123  { |124  | |125  } |126  ~ |127 del|

Pour permettre l'utilisation de caractères ne figurant pas dans ce jeu (e.g. des caractères accentués) ou l'envoi de fichiers binaires (i.e. pouvant comporter n'importe quel type de caractères), le standard MIME (Multipurpose Internet Mail Extensions), conçu en réponse à cette limitation, prévoit plusieurs représentations possibles pour des données binaires et respectant la contrainte de n'utiliser que les 128 caractères ASCII, parmi lesquelles:

Le standard MIME prévoit comment indiquer dans un mail si ces représentations sont utilisées de façon à permettre la restitution du contenu original.

Préparation/Bilan TP : Connexions et Transferts

Concepts fondamentaux des réseaux

TCP-IP - Exemple de communication via msn

Cette capture donne un petit aperçu sur le protocole MSN dans une version actuelle et laisse songeur sur les efforts consentis à la protection des données échangées par les utilisateurs. De la même manière, les émoticônes sont interceptables. Il est plus difficile de reconstruire les flux audio et video, mais nul doute qu'avec un peu de persevérance leur décodage serait également réalisable.

A titre d'exemple, il est facile de vérifier les hypothèses suivantes au sujet du protocole:


Préparation/Bilan TP : Connexions et Transferts

Concepts fondamentaux des réseaux

TCP-IP - Exemple de communication avec Facebook

On suppose que l'utilisateur veut se connecter à Facebook pour partager le meilleur de sa vie avec ses 357 amis qui s'impatientent d'un quart d'heure de silence…Nous considérons divers contextes dans lequels l'information échangée est exposée à des degrés divers:


Préparation/Bilan TP : Connexions et Transferts

Concepts fondamentaux des réseaux

TCP-IP - Exemple de communication avec DropBox, EverNote

On suppose que l'utilisateur utilise des applications reposant sur un stockage des données dans le «nuage» (Cloud :o). Cela implique-t-il une protection quelconque des données stockées?

Evaluations : bilan et remarques

Savoir mettre en forme ses réponses

Pourquoi faire cet effort?

tracer un trait

Evaluations : bilan et remarques

Savoir répondre aux questions

ane

Réclamation et gestion des âneries

  • La consultation des copies, c'est possible. Remonter sa note aussi. La faire baisser, aussi!
  • J'ai donné la bonne réponse mais j'ai aussi dit des âneries : pénalisation
  • C'est ce que je voulais dire...oui, mais c'est incomprehensible ou ambiguë ou illisible : pénalisation

Evaluations : bilan et remarques

Principe #1 : pas d'utilisation d'outils de communication active permettant d'échanger avec des tiers

Principe #2 : placement aléatoire

Principe #3 : imitation du caméléon interdite

ane
tracer un trait