Réseau local ou l'art de la schizophrénie sans la paranoïa (ou presque).
Je vais tenter de reprendre tout ou partie de mes connaissances qui concernent le réseau local et les possibilités associées.
Ce texte est fait pour les utilisateurs Linux et particulièrement Ubuntu mais cela fonctionne sur d'autres systèmes (à part certains programmes qu'il faudrait adapter).
Je rentre dans le vif du sujet par une
explication sur les utilisateurs :
Par défaut les utilisateurs appartiennent au minimum à un groupe de leur nom.
Le premier utilisateur crée lors de l'installation appartiendra également au groupe sudo et pourra donc réaliser des taches administratives.
Les utilisateurs appartenant au groupe sudo (il ne devrait y en avoir qu'un sur chaque système personnel) peuvent acquérir les privilèges du suoer-utilisateur (root) en utilisant la commande
sudo.
Pour accroître la sécurité, cet utilisateur, quelque soit la configuration et le nombre d'utilisateurs, ne devrait être cantonné qu'aux actions d'administration. Pour reprendre cette idée, même seul utilisateur sur votre ordinateur, vous devriez (nous devrions) tous avoir au moins deux utilisateurs (outre root) sur nos configurations : le sudoer et un utilisateur avec des droits limités. Cela fait donc trois avec le root...
Vous allez me dire : "mais chaque fois que je dois faire une tâche d'administration, je dois changer d'utilisateur pour passer sur le 'bureau' du sudoer" ; en fait non, ou pas tout à fait ; je m'explique, mais mettons cela de côté, c'est justement ce que nous allons voir dans la partie réseau.
Le réseau :
Sous Linux, le réseau peut être sécurisé grâce à l'utilisation d'un "tunnel" chiffré et son protocole associé : le
ssh.
Pour utiliser ce protocole, le serveur (votre ordinateur) doit simplement avoir un programme d'installé. J'utilise principalement
openssh et expliquerait ici son utilisation mais il en existe d'autres.
Sur une installation Ubuntu, voici donc la ligne qui doit être tapée par le sudoer :
Ouvrez un
terminal avec Ctrl + Alt + t (comme terminal)
sudo apt install openssh-server
Toutes les autres commandes pourront, dès lors, être commanditées par quelque utilisateur que ce soit, pour peu qu'il ait accès au compte sudoer (connaissance du mot de passe).
Je vais être plus précis, reprenons la partie des utilisateurs :
vous venez d'installer votre système et avez vos deux premiers utilisateurs root et le sudoer... disons "superu" ; réglage des drivers éventuels, post installation (installation des logiciels habituels et réglages système), installation de openssh et création d'un utilisateur (disons toto) avec des droits restreints, puis déconnexion du compte sudoer pour se connecter avec toto.
Vous pouvez administrer toto via ses propres droits pour peu que cela le concerne directement. Toto a son bureau, ses fichiers et dossiers, il est chez lui.
Maintenant, vous avez besoin d'installer un nouveau programme mais toto n'a pas le droit; donc vous ouvrez un terminal et vous vous connectez à superu depuis le compte toto :
ssh superu@localhost
La première connexion vous demandera "d'associer" toto à superu puis le mot de passe de superu. Ce mot de passe sera demandé à chaque nouvelle connexion. Une fois connecté, vous pouvez installer votre programme avec sudo apt install un_programme ; par exemple installons
vlc
sudo apt install vlc
le système demande le mot de passe (celui de superu) puis installe vlc comme si nous étions sur son compte en directe.
une fois fait, vous vous déconnectez (si vous en avez terminer de superu)
exit
NB :
Ctrl + d fera la même chose que
exit
de la même façon, vous pouvez éditer un fichier système :
ssh superu@localhost
puis, par exemple
nano :
sudo nano /etc/default/grub
vous faites ce que vous avez à faire, puis après avoir refermé (pour nano c'est ctrl + x), éventuellement
sudo update-grub
et ainsi de suite; puis, quand c'est terminé
exit
la procédure sera la même chaque fois que vous aurez des taches administratives à faire.
Rien ne vous empêche d'avoir un navigateur internet sous la main et de faire du copier coller de mots ou de lignes depuis celui ci vers le terminal.
Vous noterez que, dans un terminal, le coller se fait Ctrl +
MAJ + V (et non Ctrl + V) et, pour les même raisons le copier se fait Ctrl +
MAJ + C.
Dans un terminal, vous disposez également de possibilités avec la souris comme le double clic pour sélectionner un mot et le triple clic pour sélectionner une ligne et le menu d'options sous le clic droit !
Pour le côté sécurité, si vous confiez votre ordinateur avec le mot de passe de toto, vous pouvez être sûr que rien de dangereux ne peut être fait puisque toto n'a pas de droits pour cela : parfait pour une utilisation familiale avec un compte commun; tous les utilisateurs de la famille ont le mot de passe du compte toto mais un nombre limité aura accès à superu grâce à son mot de passe (celui là, pas la peine de le diffuser).
Pour aller plus loin, vous avez besoin d'avoir un dossier accessible à toto dans un endroit qui normalement n'est accessible seulement qu'au sudoer (superu), par exemple dans /media :
ssh superu@localhost
on va dans /media
cd /media
on crée un dossier avec les droits de root par le sudoer superu
sudo mkdir dossier_toto
on met toto comme propriétaire de ce dossier
sudo chown toto:toto dossier_toto
et on sort
exit
maintenant toto à un dossier dossier_toto à lui dans /media
Pour aller plus loin, les systèmes Linux utilisent les
ACL mais je n'irais pas plus loin pour cette démonstration.
Ssh, c'est bien, sftp c'est mieux et Samba c'est inutile ! :lol:
ftp est un protocole pour l'accès à distance aux fichiers. On peut sécuriser ce protocole en utilisant ssh pour faire transiter les informations : ssh + ftp = sftp.
Ce protocole est très répandu et on trouve des clients sur presque tous les systèmes.
Filezilla est très connu. Depuis les systèmes Linux, les navigateurs de fichiers savent gérer ce protocole et une simple ligne permet de se connecter. On peut, une fois première connexion faite, ajouter le chemin à nos favoris par glisser déposer ou avec le raccourcis clavier ctrl + d comme on le ferais dans un navigateur internet.
Par exemple, pour connecter toto à superu :
ouvrez la barre d'adresse avec Ctrl + L ou allez dans "Connexion à un serveur" à gauche en bas de la liste ou dans le menu puis mettez cette adresse (pour notre exemple)
sftp://superu@localhost/home/superu
de là, vous avez accès aux dossiers de superu et y mettre ou récupérer des éléments de ou vers toto.
Depuis le même PC, c'est bien, sur un réseau local aussi :
Nous avons vu comment faire passer des éléments d'un utilisateur à un autre sur le même système mais nous pouvons également faire la même chose depuis ou vers un utilisateur d'un autre ordinateur sur notre réseau local. Notre "box" servira de point central et permettra l'interconnexion facilement tout en garantissant une certaine sécurité vis à vis de l’extérieur (l'internet). A ce titre, le fait d'interconnecter des ordinateurs sur un réseau local se nomme un intranet. Ajoutons un PC à notre exemple avec deux utilisateurs "superv" et "tata". Ici, commence la schizophrénie car, pour les besoins de l'explication, j'ai utilisé des noms différents ; dans la vraie vie, on pourra utiliser les même noms sur les deux ordinateurs et seules les IP changeront et permettront de savoir où nous sommes.
Chaque PC à une adresse sur notre réseau local : une IP. Pour notre exemple, l'adresse du premier PC avec superu et toto sera 192.168.1.10, celle du second avec superv et tata sera 192.168.1.11.
Sur les systèmes Linux une commande permet à tous les utilisateurs de connaître cette adresse sur les différents ports (ethernet, wifi,...) de notre PC :
ifconfig
Voici à quoi cela pourrait ressembler pour notre premier ordinateur:
toto@Sat-L500:~$ ifconfig
enp14s0 Link encap:Ethernet HWaddr 00:00:00:00:00:00
UP BROADCAST MULTICAST MTU:1500 Metric:1
Packets reçus:0 erreurs:0 :0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
Octets reçus:0 (0.0 B) Octets transmis:0 (0.0 B)
lo Link encap:Boucle locale
inet adr:127.0.0.1 Masque:255.0.0.0
adr inet6: ::1/128 Scope:Hôte
UP LOOPBACK RUNNING MTU:65536 Metric:1
Packets reçus:193351 erreurs:0 :0 overruns:0 frame:0
TX packets:193351 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
Octets reçus:17477744 (17.4 MB) Octets transmis:17477744 (17.4 MB)
wlp20s0 Link encap:Ethernet HWaddr 12:12:12:12:12:12
inet adr:192.168.1.10 Bcast:192.168.1.100.255 Masque:255.255.255.0
adr inet6: cc00::cc00:cc00:cc00:cc00/64 Scope:Lien
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Packets reçus:915933 erreurs:0 :1936 overruns:0 frame:0
TX packets:686926 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 lg file transmission:1000
Octets reçus:1195567727 (1.1 GB) Octets transmis:70481167 (70.4 MB)
toto@Sat-L500:~$
On peut y voir que toto n'est pas branché en filaire puisque pas d'adresse sur enp14s0 mais qu'il est branché en wifi et que son adresse IP est 192.168.1.10, son serveur dhcp (peut être la box) est à l'IP 192.168.1.100, que les autres ordinateurs auront certainement une IP entre 192.168.1.1 et 192.168.1.255... tout cela avec cette ligne :
inet adr:192.168.1.10 Bcast:192.168.1.100.255 Masque:255.255.255.0
je passe sur les autres informations.
nous sommes sur le compte de toto sur le premier PC. Pour nous connecter à tata :
ssh tata@192.168.1.11
ou, depuis un navigateur de fichier :
sftp://tata@192.168.1.11/home/tata
et rien n’empêche de se connecter à superv depuis tata depuis toto
nous sommes toto, donc d'abord de toto à tata
ssh tata@192.168.1.11
puis de tata à superv
ssh superv@localhost
on aurait pu avoir "presque" le même résultat en allant de toto à superv en tapant depuis toto
ssh superv@192.168.1.11
La différence principale est que pour se déconnecter, dans le premier cas, il faudra faire deux fois exit, dans le second une seule fois... mais d'autres différences existent !
Maintenant ajoutons encore un peu d’ambiguïté : pour le moment, nous avons utilisé ssh pour faire transiter des ordres ou des fichiers et dossiers mais nous pouvons aussi faire transiter des programmes graphiques. Attention, c'est là que cela devient compliqué...
on va lancer
vlc sur le second PC
si il ne l'est pas encore, commençons par l'installer :
superv est le sudoer du second ordinateur donc on se connecte en ssh depuis toto par exemple mais la procédure, à part l'IP (encore que) serait la même depuis tata:
ssh superv@192.168.1.11
puis on l'installe
sudo apt install vlc
le mot de passe de superv et en quelques secondes ou dizaines de secondes c'est fait.
on se déconnecte de superv
exit
Nous sommes sur le compte de toto et nous nous connectons à tata en graphique; une option est à ajouter à ssh : -X (en majuscule) et cela donnera :
ssh -X tata@192.168.1.11
maintenant lançons le lecteur vidéo vlc.
vlc
souvenez vous, nous sommes sur le PC de toto...
sur vlc, allez dans le menu "Media", puis "Ouvrir un fichier" puis voyons ce qui se trouve dans le /home et vous y trouverez tata et superv ce qui est normal puisque nous nous sommes connectés en ssh avant de lancer vlc. Pour aller plus loin, lançons une vidéo, elle se trouve dans les dossiers de tata, s'affiche sur le PC de toto mais le son lui sort des enceintes du PC de tata; parce que ssh ne transite que les graphismes et vlc se comporte comme si il était toujours en local sur le PC de tata (et superv).
Il reste encore des personnes pour suivre ?
Fermons vlc... par le menu, restons simple !
Aller dans nos programmes et ouvrons le gestionnaire de fichier :
nautilus ;
puis retournons dans le terminal et lançons nautilus.
nautilus
De la même façon que vlc, comme nous sommes toujours connectés à tata nous voyons les dossiers (y compris les raccourcis personnels) et fichiers de tata comme si nous étions sur sa machine et avec ses droits. Comme nous avions lancé nautilus en local (de toto) juste avant, nous avons une autre fenêtre de nautilus qui elle affiche les dossiers et fichiers de toto.
Non, non, non, je vous vois venir : pas question de droper des fichiers de l'un vers l'autre car ssh cloisonne le nautilus distant.
alors, vous allez me dire : "A quoi ça sert" et bien à presque rien mais j'utilise l'ouverture graphique pour afficher des photos et les ranger à distance comme si j'étais en local puisque pas la peine de faire transiter les photos pour les afficher mais uniquement l'application qui me sert à les éditer...
Houla, j'en ai perdu un wagon cette fois ci...
Je recommence plus lentement :
Si je lance une application graphique d'affichage de photo à travers ssh, seule l'affichage de cette application transite via mon réseau et donc cela sera toujours plus rapide que si je devais faire une lecture des photos une par une même si celles ci on été vignettées auparavant. Cela est de même via nautilus qui en plus est souvent réglé pour ne pas afficher les photos distantes car, justement, cela serait trop lourd pour un réseau même local... notez que cette limitation disparaîtra peut être un jour avec les réseaux fibrés...
En local, c'est bien, à distance ce serait encore mieux !
Ma démonstration s'arrête ici car je suis absolument contre l'ouverture des réseaux personnels à l'internet pour la simple (et bonne ?) raison que peu d'entre nous ont un niveau suffisant pour contrer des attaques de pirates expérimentés ou non qui pullulent sur la toile. Sachez seulement que votre "box" reste un rempart encore suffisant pour vous protéger des attaquants automatiques (bots et boutonneux en mal de sensations fortes).
Voilà, vous n'avez plus aucune excuse à vous perdre dans l'installation et le paramétrage de Samba quand vous disposez nativement de tous les outils pour faire la même chose en mieux sur votre ordinateur.
Aller plus loin :
Restons sur un cas concret. Mon ordinateur actuel est un portable sur mes genoux, j'ai un PC dans mon salon avec son propre écran et également branché sur ma télé, j'ai un autre portable de récupération dans ma chambre qui me sert de
HTPC et en a assez pour faire même voire plus que mon propre portable de travail; j'en ai trois ou quatre autres dans mon bureau , un comme serveur, un pour ma musique, un raspberry pour faire des tests et ne pas être trop à la ramasse et un autre également pour des tests. Oublions ceux du bureau et ne prenons que mon portable, le PC du salon et le HTPC de la chambre. En plus de ssh, j'utilise
X2go pour le contrôle de bureau complet (on peut utiliser
vnc),
LMS pour faire du
multiroom de musique et divers autres programmes pour des protocoles que je n'aborderai pas ici.
Si je suis dans ma chambre depuis le htpc ou n'importe où dans mon appartement sur mon portable je peux prendre le contrôle de mon Salon et lancer des actions divers, puis, plus tard télécharger des fichiers depuis le salon vers la chambre. Un autre programme (
screen) me permet de lancer une action en ligne de commande (téléchargement avec
wget,
mise à jour, ou
mise à jour,...), la relâcher sans l'arrêter si elle prend trop de temps, et la reprendre à divers moment pour la finaliser. Avec une dizaine de programmes, j'ai un contrôle complet sur mon environnement informatique et mes documents.