Structure du réseau local

La compréhension de la structure de votre réseau et du lien avec l'Internet est essentielle. Les "box" utilisées par les FAI contiennent plusieurs éléments. Elles sont un condensé de plusieurs machines réalisant plusieurs fonctions et il n'est pas nécessaire d'avoir une box pour aller sur Internet !

Typiquement l'accès à Internet se compose ainsi :

Ordinateur <---> Modem <---> Internet

Le modem est l'outil permettant de vous authentifier sur votre FAI et de pouvoir aller sur Internet. Le modem traduit des informations provenant du réseau télécom en informations interprétables par votre ordinateur. Le soucis de ce montage est que l'on ne peut pas avoir plus d'un ordinateur chez soi. De ce fait, on ajoute une machine, le routeur

                    _________  
Ordinateur 1 <---> |         | 
                   |         |
Ordinateur 2 <---> | Routeur | <---> Modem <---> Internet
                   |         |
Ordinateur 3 <---> |_________|

Le serveur DHCP permet d'attribuer différentes adresses IP privées (souvent sous la forme 192.168.xxx.xxx) aux machines se trouvant chez vous. Ce serveur DHCP est souvent présent dans le routeur qui a pour fonction d'envoyer les bons paquets aux bonnes machines mais ces deux fonctions peuvent être physiquement séparées. Enfin, le firewall est un logiciel permettant de gérer l'ouverture/fermeture des ports. On peut avoir un firewall installé sur chaque machine, ou un firewall installé entre vos machines et le modem. Il peut donc être installé sur votre machine-serveur si celle-ci possède 2 prises réseau (1 vers le modem, l'autre vers le routeur)

Si l'on possède une box, il y a souvent ces différents éléments "à l'interieur". De ce fait, la structure typique d'un réseau local actuellement est la suivante :

                    _________  
Ordinateur 1 <---> |         | 
                   |         |
Ordinateur 2 <---> |   Box   | <---> Internet
                   |         |
Ordinateur 3 <---> |_________|

Redirection des ports

C'est une partie essentielle si votre machine-serveur se trouve derrière un routeur (fonction présente dans toutes les "box" vous donnant accès à Internet) (voir la section structure du réseau local).

Imaginons que votre machine-serveur soit connectée derrière votre box et que vous avez un serveur web qui tourne dessus. Il faudra dire au pare-feu de la box de rediriger les connections entrante sur le port 80 vers votre serveur ce qui donnera :

Internet -> port 80 box -> port 80 machine-serveur

De même si vous avez un serveur de torrents, vous allez devoir rediriger le port 51413 vers votre serveur. Si vous voulez accéder en ssh à votre serveur depuis l'extérieur, il faut ouvrir et rediriger le port 22. Ce sont des ports standards évoqués ici mais vous pouvez très bien rediriger le port 45 vers le port 80 de la machine-serveur. Le correspondant devra juste savoir qu'il faut accéder au port 45 pour les sevices web et non 80 (ce qui, en pratique, se fait presque jamais)


ssh et sshfs

SSH est un logiciel permettant de se connecter à une machine de manière sécurisée. Une fois connecté, c'est comme si vous contrôliez cette machine avec un clavier et un écran branché dessus sauf que ces derniers sont branchés sur un autre ordinateur. Ssh fonctionne avec un système de clés. Votre client (machine qui contrôle) possède une clé publique et une clé privée. Cette clé privée ne doit JAMAIS être divulguée et doit rester sur votre machine cliente. Ces clés sont situées dans votre dossier personnel à cet endroit : /home/user/.ssh/ Ssh possède différentes fonctions. On peut rediriger l'affichage graphique et avoir le contrôle du bureau de la machine distante sur sa machine cliente. On peut aussi copier des fichiers sur une machine distante par ssh en utilisant la commande scp qui correspond un peu à un "cp over ssh". On peut monter un répertoire distant sur sa machine cliente en utilisant sshfs (de ce fait, on pourra, par un navigateur de fichier manipuler des éléments se trouvant sur la machine-serveur).

Installation

Pour utiliser ssh, il faut installer le serveur ssh sur la machine à contrôler et un client ssh sur la machine qui contrôle.

Pour installer le service, suivez les instruction de cette page (partie 1 et 2)

Par la suite, il peut être intéressant de ne pas avoir à taper son mot de passe à chaque connexion. Cela est possible en utilisant le système de clés publiques/privées. Il suffit pour cela de suivre ces infos

SSHFS

Pour utiliser sshfs afin de monter des répertoires distants sur notre machine cliente, voire cette page mais aussi la section suivante sur cette page

Permettre l'utilisation de la corbeille depuis un client linux avec Sshfs

Il n'est pas possible de supprimer des fichiers sous Nautilus (le navigateur de fichier) car l'absence de corbeille l'en empêche. Dans le cas d'un support externe, Nautilus crée un répertoire nommé .Trash à la racine de ce support. Cependant, si il n'a pas les droits pour le faire, ça coince ! Dans ce cas, il faut donc créer ces dossiers de corbeille à la racine du répertoire monté par sshfs.

Prenons l'exemple suivant : vous faites un montage du répertoire /media/data/musique situé sur le serveur dans le répertoire /home/user/musique situé sur votre machine cliente. La manipulation se fait donc sur le serveur de cette manière :

Créer le répertoire :

mkdir /media/data/musique/.Trash

Donner les bons droits :

chmod -R 777 /media/data/musique/.Trash

Montage des disques

Le montage permet d'utiliser un support de stockage sur sa machine et de pouvoir naviguer dedans. Par exemple, lorsque vous insérez une cléUSB dans votre machine, un programme se charge de monter la clé dans un répertoire. Par exemple, sous windows, on trouvera la racine de la cléUSB dans un lecteur (nommé D: par exemple). Sous linux, la racine de la cléUSB pourra être accessible dans /media/nom-du-support ou parfois dans /media//nom-du-support. Le montage peut aussi se faire par le réseau en utilisant nfs ou sshfs. On peut, par une commande ou en ayant indiqué ce montage au démarrage de notre machine, accéder à un répertoire se trouvant sur le disque dur de notre machine-serveur.

Exemple :

sshfs machin@example.org:Documents/truc /media/montage

Ici, par sshfs, on va monter le répertoire truc se trouvant dans le répertoire Document du dossier personnel de machin de la machine accessible par ssh via l'adresse example.org. On peut accéder à la machine-serveur en remplaçant par son adresse IP du réseau local si vous êtes chez vous :

sshfs machin@192.168.1.2:Documents/truc /media/montage

On peut monter ainsi n'importe quel répertoire du moment où on a les droits dessus en temps qu'utilisateur machin

sshfs machin@example.org:/media/data/films/ /home/machin/videos

Ici on monte le répertoire /media/data/films situé sur le serveur sur le répertoire vidéo situé dans le dossier personnel de l'utilisateur machin sur la machine cliente. On notera la différence avec ce qui précède : après les deux points séparant le nom de domaine et le répertoire, il y a directement un slash ce qui indique que l'on commence à la raçine. Sans ce slash, cela indique que l'on commence dans le répertoire personnel de l'utilisateur indiqué avant le '@'.


Droits et permissions

TODO


Configurer son .bashrc

Le fichier .bashrc se trouvant dans votre Home est un fichier contenant les configurations de votre shell… mais qu'est-ce donc tout cela ? Tout d'abord, tout fichier commençant par un point (.bashrc) est défini comme un fichier caché. Cela veut dire que dans un navigateur de fichier, il faut faire Ctrl+H pour faire apparaître ces fichiers. Dans un terminal, la commande "ls" ne liste que les fichiers et répertoires se trouvant dans le répertoire courant. Si l'on veut faire apparaître ces fichiers il faut utiliser "ls -a". Ensuite, le shell est votre environnement lorsque vous utilisez le terminal en ligne de commande. Vous pouvez donc définir des aliases (raccourcis de commandes souvent utilisées) ou ajouter des fonction (esthétique du shell, complétion (recherche automatique de la saisie)…)

Ajouter des aliases

Les aliases sont des sortes de raccourcis pour les commandes fréquemment utilisées. Pour en créer il faut ajouter dans votre .bashrc des lignes du type :

alias <nom-de-l'alias>='<commande>'

Quelques exemples :

  • la : on est souvent amené à vouloir lister tous les fichiers d'un répertoire tout en ayant les permissions de chaque fichier. Cela se fait par la commande "ls -al répertoire". On utilise généralement l'aliase la qui fera la même action :

    alias la='ls -al' 
    
  • ll : dans la même veine que ci-dessus mais sans lister les fichiers cachés :

    alias ll='ls -l'
    
  • nano -c : pour constamment ouvrir nano avec son option -c qui affiche le numéro de la ligne courante. Ajouter dans le .bashrc :

    alias nano='nano -c'
    

Ajouter des fonctions à votre shell

  • Pour utiliser la complétion (compléter automatiquement le terme en tapant sur la touche Tab). Cela peut être pratique lorsque l'on ne connais pas le nom d'un logiciel à installer par exemple. Ajouter ou décommentez (ce qui signifie enlever les # en début de ligne) cela :

    if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
         . /etc/bash_completion 
    fi
    

Paramétrer le umask

Paraméter le umask permet de définir les permissions par défaut d'un répertoire ou d'un fichier nouvellement créé.

Pour positionner le umask dans son fichier .bashrc il suffit d'ajouter une ligne au fichier comportant la ligne suivante :

umask x

où x est la valeur du umask en notation inverse des droits habituels rwxrwxrwx. Pour plus d'informations sur les droits et permissions, voir cette documentation.

Par exemple, pour positionner un umask très sécurisé, où tout répertoire ou fichier est uniquement lisible par le créateur dudit répertoire ou fichier, il suffit de positionner un umask à 0077 :

umask 0077

Pour plus d'information, consultez la page wikipédia de umask.

Modifier l'apparence du shell

Par défaut, le shell est assez rustique. On pourra faire différents changements afin de mieux visualiser les items (distinctions nom de machine, nom d'utilisateur, répertoires et fichiers…)

  • Pour mettre le shell en couleur, rien de plus simple : éditez votre fichier .bashrc situé dans votre home.

    nano ~/.bashrc

puis décommentez (enlever le #) la ligne suivante :

force_color_prompt=yes

Cela aura pour effet de mettre les couleurs par défaut. Ensuite, si vous voulez personnaliser davantage le prompt (partie se situant juste avant l'espace alloué à la frappe des commandes), il faudra éditer la ligne correspondant au PS1 qui est de ce type :

PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '

Vous avez plein d'explications et d'exemples sur les pages suivantes : ici, ,ou encore là. A savoir que pour tester l'aspect du prompt, rien de plus simple, il suffit d'entrer la ligne concertant PS1 dans votre terminal et de taper sur entrée. Cela affecte le terminal courant sans pour autant enregistrer cela pour les futurs terminaux (car la ligne n'est pas présente dans le fichier .bashrc). Vous avez aussi ce site qui vous permet de génerer le code à mettre pour votre PS1.


Commandes et utilisations de base du terminal

Se déplacer dans l'arborescence

Pour se déplacer dans un répertoire, il faut utiliser la commande cd :

cd /chemin/vers/le/répertoire

pour revenir au dernier répertoire visité :

cd -

pour aller dans son dossier personnel :

cd

ou

cd ~

Pour lister les fichiers, il faut utiliser la commande ls et ses options :

Si nous sommes dans un répertoire, il suffit de tapper ls pour lister basiquement les fichiers (sans détails).

Pour lister les fichiers, même les fichiers cachés :

ls -a

Pour lister les fichiers avec les détails des permissions sur ces fichiers :

ls -al

ou ll si vous avez configuré ce raccourcis dans votre .bashrc (voir ici)

Modifier ou supprimer des fichiers et des répertoires

Pour supprimer des fichiers :

rm nom-ou-chemin-du-fichier

Attention !! Cette commande est définitive… ce n'est pas l'équivalent d'une corbeille !

Pour supprimer un répertoire (ne fonctionne que si le répertoire est vide) :

rmdir nom-ou-chemin-du-repertoire

Pour supprimer un répertoire et son contenu :

rm -r nom-ou-chemin-du-repertoire

Pour éditer un fichier, vous pouvez utiliser l'éditeur de votre choix, par exemple :

nano nom-ou-chemin-du-fichier

Pour l'utilisation de nano, voir la section sur nano dans cette page

Pour créer un fichier vide :

touch nom-ou-chemin-du-fichier

Créer des liens

ln -s /chemin/vers/le/fichier/ou/repertoire /emplacement/du/lien

Visionner les processus, l'utilisation de la Ram ou du CPU, l'utilisation des disques

Pour voir si un processus tourne, vous pouvez utiliser la commande top ou son équivalent, plus lisible et facile à manipuler, htop. Pour l'installer :

sudo apt-get install htop

Vous pouvez ensuite trier par utilisation de ram, de cpu, par nom de processus… Htop gère la souris ! Tous les raccourcis sont en bas de la fenêtre.

Sinon, une commande très simple permet de voir uniquement si votre processus tourne :

ps aux | grep nom-du-logiciel

Pour voir l'utilisation de la RAM :

free -m

Il faut regarder la ligne -/+ buffers/cache qui donne la RAM libre sans prendre en compte le cache.

Pour voir l'utilisation des disques et des partitions :

df -h

Un logiciel permet d'avoir tout cela en une commande : Glances

sudo apt-get install glances
glances

Utilisation de nano

Pour débuter, nano est un éditeur de texte très simple qui suffira amplement. Les commandes principales sont Ctrl+o pour enregistrer, Ctrl+x pour fermer, Ctrl+k pour couper des lignes et Ctrl+u pour coller ces mêmes lignes. Le mieux est d'ouvrir nano avec l'option -c

nano -c nom-du-fichier

ce qui permet d'indiquer les numéros de lignes… bien pratique quand on doit chercher la ligne 328 ! ;) Vous pouvez changer ce comportement par défaut en éditant votre .bashrc

Si vous voulez créer un fichier et l'éditer il n'est pas nécessaire de le créer avant. Il suffit de taper :

nano nom-du-nouveau-fichier

et nano le créera après votre premier enregistrement

Il existe un autre éditeur de texte largement utilisé et disponible sur tous les systèmes linux (même les systèmes minimaux). Son nom est vi pour la version de base et vim pour la version plus évoluée et vous pouvez consulter une page d'explications sur le wiki communautaire de Ubuntu France.


Installation des logiciels sous Debian et dérivés (LinuxMint, Ubuntu)

Sous Debian et dérivés, l'installation des logiciels officiels est très aisée. Elle se fait par un logiciel appelé apt-get. Il faut bien evidemment être authentifié en root ou utiliser sudo au début de chaque commande (si votre utilisateur est dans le groupe sudo bien sur… plus d'infos ici.

Pour mettre à jour la liste des logiciels :

apt-get update

Pour installer un logiciel :

apt-get install <nom-du-logiciel>

Pour mettre à jour l'ensemble des logiciels de votre système :

apt-get upgrade

Mettre à jour tous les paquets, même en modifiant les paquets cruciaux (comme le noyau) :

apt-get dist-upgrade 

Pour avoir des informations sur un paquet :

apt-cache show <nom-du-logiciel>

Pour avoir des informations sur la version installée et/ou instalable sur votre système :

apt-cache policy <nom-du-logiciel>

Utilisation avancée : le pinning

Si vous utilisez debian ou ubuntu, et donc apt-get pour gérer votre système linux et mettre à jour vos paquets, vous pouvez configurer un mode avancé pour utiliser les paquets de différentes versions en même temps. En effet, les paquets debian sont dans une certaine version qui correspond à votre version du système d'exploitation. Pour un même logiciel, il se peut qu'il existe en différentes versions et que les versions récentes ne vous soient pas accessibles sous votre version de système d'exploitation (par exemple debian 7 stable dixit wheezy ou Ubuntu 12.10 dixit The Quantal Quetzal). Ce mécanisme avancé s'appelle le pinning.

La première étape est de déclarer plusieurs sources de paquets dans votre fichier de gestion de sources de paquets debian par la commande sudo vi /etc/apt/sources.list. Si vous utilisez stable au quotidien mais que vous voulez utiliser testing pour certains paquets, il suffit d'ajouter une ligne de la forme suivante pour ajouter testing aux sources possibles de paquets :

nano /etc/apt/sources.list

et ajouter la ligne suivante :

deb http://ftp.fr.debian.org/debian testing main contrib non-free
Il faut ensuite paraméter la priorité des distributions en fonction des paquets
pour certains paquets nous préférerons rester en stable, pour d'autres nous souhaiterons utiliser testing. Créons pour cela le fichier de configuration du pinning par la commande sudo nano /etc/apt/preferences et ajoutons-y les lignes suivantes :
  Package: *
  Pin: release a=stable
  Pin-Priority: 900

  Package: *
  Pin: release o=Raspbian
  Pin-Priority: -10

Cela a pour effet de donner la priorité à tous les paquets en provenance de stable et de rendre moins prioritaires tous les paquets debian d'une autre distribution (testing, mais aussi unstable ou experimental). Nous conservons ainsi un système particulièrement stable.

Cependant, si nous souhaitons vraiment avoir un paquet dans une version récente, il suffit d'installer ce paquet à l'aide d'une commande apt un peu spécifique pour spécifier qu'on souhaite installer la version du paquet de testing et non celle de stable :

`sudo apt-get install iceweasel/testing`

Cette commande aura pour effet d'installer le paquet iceweasel de la version testing qui viendra remplacer le paquet de la version stable.

Le terme de pinning signifie épingler car ce mécanisme de pinning permet d'être beaucoup plus fin dans le paramétrage du fichier /etc/apt/preferences en spécifiant pour chaque paquet la source à privilégier. On peut ainsi imaginer mettre à jour toute un système linux en testing sauf un paquet particulier dont on sait qu'il ne fonctionne pas en testing et qui restera donc bloqué dans la dernière version de stable.

Le pinning est à manier avec précaution car il peut entraîner des dysfonctionnements liés à des conflits de dépendance entre les différentes versions de debian.


Gérer ses domaines et ses sous-domaines

Les noms de domaines permettent de ne pas avoir à se souvenir de son adresse IP. Vous pouvez acheter un nom de domaine chez un provider comme Gandi ou OVH. Nous prendrons comme exemple example.org. Par la suite sur l'interface de votre provider, vous pouvez gérer des sous-domaines afin d'avoir plusieurs adresses du type truc.example.org ou bidule.example.org (typiquement, on utilise souvent webmail.example.org, www.example.org, calendrier.example.org…)