Mon réseau d’entreprise
8.1 Le système GNU
Gnu est l’acronyme de Gnu is Not Unix. Le projet Gnu propose de réaliser un système d’exploitation similaire à Unix, mais libre. Ce projet, né en 1983, s’est étendu par la fondation de la FSF.
Le système Debian est donc un système d’exploitation GNU qui utilise un noyau Linux.
8.1.1 Le Logiciel Libre, et les autres
Cette notion de Logiciel libre a été formalisée en 1983, quelques temps après que des multinationales ont commencés à restreindre les libertés des utilisateurs. Un logiciel libre est un logiciel qui respecte quatre libertés :
-
1. utiliser le logiciel sans contraintes ;
-
2. regarder de code source ;
-
3. modifier le code ;
-
4. redistribuer le code, y compris les versions modifiées.
De nombreux logiciels interdisent à l’utilisateur de l’utiliser dans certains contextes. Par exemple, certains logiciels sont gratuits pour une utilisation personnelle, il faut payer pour l’utiliser dans un cadre professionnel. D’autres sont incessibles, si vous donnez (ou vendez) le logiciel, le receveur n’aura pas le droit de l’utiliser.
Regarder le code source peut paraître superflu pour la plupart des gens. Néanmoins, c’est comme la comptabilité publique : les non-comptables n’y comprendront rien, mais il y aura toujours un citoyen pour remarquer une irrégularité. Les révélations (d’Edward Snowden montrent que la plupart des multinationales vendant des logiciels privateurs incluent des spywares.
Modifier le code permet de corriger certains problèmes, même si le fabricant ne souhaite pas le faire. Pour les téléphones Android, ce point est particulièrement critique. Avant d’acheter un téléphone, regardez les téléphones de la même marque de deux ans ou plus, et regardez la version des logiciels, dont le noyau Linux. Regardez sur le site de Linux pour constater la vétusté du code. Une autre façon de modifier le logiciel, accessible aux non informaticiens, c’est de proposer la traduction du logiciel dans un nouveau langage.
Redistribuer le code, même si c’est possible, c’est souvent interdit. Ce n’est pourtant pas illégal, cela dépend de la licence d’utilisation. Je ne me sens pas de faire des cours pour lesquels je demanderais aux étudiants souhaitant travailler chez eux de payer une entreprise lointaine pour faire leurs devoirs. Certaines entreprises offrent des tarifs avantageux (voire la gratuité) aux étudiants, mais ce gratuit est très suspect (Définitions de la gratuité).
Un logiciel respectant ces quatre libertés est appelé Logiciel libre. Une autre appellation existe : open source. La différence entre les deux appellations n’est pas technique. Le logiciel libre met en avant la notion philosophique de liberté. Le logiciel open source met en avant la notion d’économie financière.
Une autre opposition concerne le logiciel non-libre. Les entreprises utilisent le mot propriétaire (logiciel propriétaire). C’est, au moins, un abus de langage : tous les logiciels sont propriétaires ! Le droit d’auteur, au moins en France, reconnaît à l’auteur la propriété inaliénable des lignes de code écrites. Le bon qualificatif est donc privateurs. Ce type de logiciels prive l’utilisateur de certains droits. C’est tout à fait légal, l’auteur décide de l’usage de son œuvre. Mais la propagande officielle préfère utiliser un euphémisme.
Le système Gnu est souvent utilisé avec le noyau Linux. Il fournit les principaux utilitaires en ligne de commande. Le graphique est souvent fourni par X-Window ou son successeur Wayland.
Les suites bureautiques, comme Gnome, Kde, Xfce ou Lxde fournissent un environnement pour faciliter l’interaction. Ils proposent généralement un gestionnaire de fenêtres (Window Manager). Ce gestionnaire de fenêtres permet de bouger les fenêtres, changer leur taille, les iconifier…
Les suites bureautiques peuvent proposer des panneaux (panel) qui contiennent des applets pouvant indiquer la charge de la batterie ou permettre des interactions avec le système, comme la gestion du son. Elles proposent aussi de mettre des icônes pour encombrer l’écran et distraire l’auditoire lors des présentations. Enfin, elles fournissent des librairies pour développer des applications intégrables dans le même contexte.
Nous allons donc regarder plus en détail les interactions en ligne de commande.
8.1.2 La ligne de commandes
De nos jours, le premier contact avec un ordinateur se fait à travers des interfaces graphiques. C’est rassurant, éventuellement joli. Néanmoins les logiciels graphiques et les environnement graphiques souffrent de quelques problèmes.
Un logiciel graphique est un logiciel qui a besoin d’un environnement graphique pour fonctionner : xeyes est un logiciel graphique.
Un environnement graphique est la configuration d’un écran d’ordinateur qui permet d’afficher des applications graphiques : X-Window est un environnement graphique.
8.1.2.1 Les problèmes des environnement graphiques
Voici quelques problèmes posés par les environnements graphiques :
- Mémoire :
-
un système Gnu-Linux non graphique peut fonctionner avec 500Mo de mémoire vive. Pour une installation graphique, il faut plus d’un Go. Cela peut paraître peu, mais cela divise par deux le nombre de machines virtuelles pouvant être hébergées sur un serveur physique.
- Processeur :
-
l’environnement graphique consomme aussi des ressources indépendamment des applications.
- Sécurité :
-
les environnements graphiques favorisent la communication entre applications, cela facilite donc les fuites d’informations.
- Inutilité :
-
un serveur est souvent installé dans une salle spécifique (à Hong Kong pour Osaka) ou dans un centre d’hébergement. Les humains ne vont que rarement près de la machine physique. L’environnement graphique est donc inutile.
8.1.2.2 Les problèmes des applications graphiques
Les applications graphiques apportent aussi leur lot de problèmes :
- Lourdeur :
-
les applications graphiques sont plus lourdes que leur contrepartie en ligne de commande. C’est souvent, surtout pour le débutant, négligeable. Pour régler un problème à distance, il est parfois possible d’utiliser une application graphique, mais les connexions réseaux ne sont pas toujours de bonne qualité.
- Limitations :
-
les interfaces graphiques n’offrent que peu de possibilités. Il est possible de s’en contenter, mais c’est pauvre. Imaginez que vous entrez dans une boulangerie pâtisserie et demander : « Je voudrais commander pour après demain deux baguettes et demi, un pain au levain tranché, la tartelette aux fraises à côté de l’éclair, deux croissants » sans le secours du langage articulé. Je voudrais bien voir la scène…
- Bugs
-
plus les logiciels sont compliqués, plus ils souffrent de bugs et de vulnérabilités, si ce n’est pas justifié, il vaut mieux s’abstenir.
8.1.2.3 Les terminals
Ou terminaux…
Un terminal est un élément qui termine un contexte pour basculer dans un autre. Nous avons ainsi :
-
• le terminal d’aéroport qui termine la partie aérienne pour revenir à la partie terrestre ;
-
• le terminal téléphonique qui termine la partie opérateur pour l’abonné ;
-
• le terminal d’ordinateur qui permet à un humain d’interagir ;
-
• …
Nous allons, dans ce chapitre utiliser des terminals d’ordinateur. Le premier terminal est celui offert par un système Gnu-Linux qui n’a pas d’interface graphique, comme dans la figure 8.1.
D’autres types de terminaux existent aussi en mode graphique, comme xterm. Ces terminaux peuvent héberger tout logiciel non graphique. Le plus souvent les terminaux utilisent une application appelée shell.
8.1.2.4 Les shells
Les shells sont donc la clef de l’interaction entre un système d’exploitation et l’humain. Le nom vient de l’analogie avec une noix. Le noyau (kernel) est au centre du système, la coque (shell) constitue la partie externe. Il faut donc passer par la coque pour atteindre le noyau.
Historiquement, le premier shell était sh. Ensuite, dans les années 70 est apparu csh, le C-shell est une version améliorée, mais incompatible. Le csh proposait une gestion de l’historique des commandes. Il y a donc deux familles de syntaxe de shell (sh ou csh). De nombreux shells sont apparus dont les deux meilleurs bash et zsh.
Le shell facilite l’écriture de scripts. Ces scripts facilitent grandement l’administration système en permettant de simplifier les tâches répétitives.
Le shell propose donc une invite de commande ou prompt. Ce prompt peut être un simple dollar ($) ou dièse (#). Le dollar indique un environnement utilisateur, le dièse, un environnement super utilisateur (ou root). Ce prompt peut être plus complexe et indiquer le nom de l’utilisateur, le nom de l’ordinateur et le nom du répertoire courant. Le prompt de l”installation classique affiche le nom de login et le nom d’hôte. Cela permet de vérifier sur quel ordinateur le programme s’exécute.
arno@thorin:~$
Ensuite, il essaie d’exécuter la commande. La (philosophie Unix recommande de ne rien afficher si la commande s’est bien passée, à moins que la fonctionnalité de la commande soit d’afficher une information, comme la commande date, qui affiche l’heure.
Cette philosophie recommande d’utiliser des programmes qui ne font qu’une seule chose, mais qui la font bien. Les fonctionnalités avancées seront obtenues en combinant des programmes avec les redirections. Beaucoup de programmes ont un fonctionnement par ligne. C’est à dire, qu’ils traitent une ligne de données, puis passent à la suivante et recommencent. Ils peuvent être liés par le caractère pipe (|). Voyons un exemple.
- grep :
-
cette commande permet d’extraire les lignes contenant un motif particulier. Pour extraire les utilisateurs autorisés à ce connecter sur un ordinateur, il est possible de faire ainsi :
$ grep sh /etc/passwd root:x:0:0:root:/root:/bin/bash sshd:x:106:65534::/run/sshd:/usr/sbin/nologin arno:x:1000:1000:Arnaud Fevrier,,,:/home/arno:/bin/bash stud:x:1001:1001:Compte pour les étudiants:/home/stud:/bin/bash nagios:x:999:999::/home/nagios:/bin/bash
- wc
-
cette commande compte le nombre de caractères, de mots et de lignes :
$ wc /etc/passwd 35 57 1879 /etc/passwd
La première commande extrait du fichier /etc/passwd les lignes qui contiennent les lettres sh. La seconde compte le nombre de lignes du fichier /etc/passwd. Il est possible de combiner ces deux commandes pour compter la sortie de la première commande :
$ grep sh /etc/passwd | wc
5 11 249
Il y a donc 35 comptes sur l’ordinateur dont 5 qui peuvent se connecter avec un shell.
Les commandes sont, souvent, des fichiers exécutables. La variable PATH contient une liste de répertoires qui contiennent les commandes les plus souvent utilisées. La liste par défaut est différente pour un utilisateur classique et pour l’administrateur.
stud@laurel:~$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games stud@laurel:~$ su Mot de passe : root@laurel:/home/stud# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Si la commande (désuète) ifconfig (du paquet net-tools) est installée. Alors seul l’administrateur peut la lancer. Il faut donc chercher dans les répertoires listés dans le PATH de l’administrateur (pas ceux de l’utilisateur) où se trouve ce fichier. Ensuite, il est possible d’invoquer la commande en concaténant le nom du répertoire et celui de la commande, par exemple :
$ /usr/bin/xeyes
Faites de même pour pouvoir lancer ifconfig en tant qu’utilisateur.
Pour lancer la commande sans utiliser le nom du répertoire, il faut changer la variable PATH :
$ export PATH=$PATH:/autrerepertoire $ ifconfig
Si vous avez bien identifié le répertoire, alors la commande ifconfig s’exécutera.
Pour rendre cela permanent, il faut modifier la configuration du shell. Le fichier, pour bash, est .bashrc (ne pas oublier le point initial). Il faut ajouter la ligne suivante dans ce fichier :
export PATH=$PATH:/autrerepertoire
En ouvrant une nouvelle connexion, la commande ifconfig est trouvée.
