Les outils du logiciel libre pour l’ingénieur

Jérémy Fix

CentraleSupélec

2025-08-20

Syllabus

Contenu du cours

Philosophie du cours

Vous introduire au monde du logiciel libre (free software) avec sa dimension philosophique et pratique.

Free software \(\neq\) free beer.

Au programme

  • 1 CM (1h30): introduction au logiciel libre et à GNU/Linux
  • 1 TP (4h) sur Linux, Shell, Git
  • 1 TP (4h) visant à produire une vidéo d’une éruption solaire
  • 1 TP (4h) visant à produire une animation des températures aux Etats-Unis

Ressources

Evaluation

  • pas de contrôle terminal
  • évaluation par les comptes rendus de TP (en Latex !!)

Introduction au logiciel libre

Logiciel libre \(\neq\) open source

Philosophie libre

Les quatre libertés selon la Free Software Foundation:

  • la liberté de faire fonctionner le programme comme vous voulez, pour n’importe quel usage (liberté 0) ;
  • la liberté d’étudier le fonctionnement du programme, et de le modifier pour qu’il effectue vos tâches informatiques comme vous le souhaitez (liberté 1) ; l’accès au code source est une condition nécessaire ;
  • la liberté de redistribuer des copies, donc d’aider les autres (liberté 2) ;
  • la liberté de distribuer aux autres des copies de vos versions modifiées (liberté 3) ; en faisant cela, vous donnez à toute la communauté la possibilité de profiter de vos changements ; l’accès au code source est une condition nécessaire.

Exemples

GNU/Linux

Philosophie Unix

Unix est le noyau (+outils) commercial, développé par AT&T labs. Linux est développé par Linus Torval dans les années 1990.

Do one thing and do it well - Doug McIlroy

On dispose de plusieurs “petits” outils combinables. D. McIlroy a inventé le concept de “filters/pipes”, au sein d’un shell, e.g. Bourne-Again shell (bash)

$ du * -sh | sort -h | tail -10
$ ls -p | grep -v / | wc -l

Avec GNU Bash, On peut piper “|” des commandes, ou rediriger les entrées et les sorties

Organisation du système de fichiers

Plus d’infos :

$ info file-hierarchy
$ info hier

ou sur la spécification Filesystem Hierarchy Standard

Extrait :

NAME
       hier - description of the filesystem hierarchy

DESCRIPTION
       A typical Linux system has, among others, the following directories:

       /      This is the root directory.  This is where the whole tree starts.

       /dev   Special or device files, which refer to physical devices.  See mknod(1).

       /etc   Contains configuration files which are local to the machine.  Some larger software packages, like X11, can have their own subdirectories below /etc 

       /home  On machines with home directories for users, these are usually beneath this directory, directly or not.  

       /media This directory contains mount points for removable media such as CD and DVD disks or USB sticks.  

       /mnt   This  directory  is  a mount point for a temporarily mounted filesystem.  

       /opt   This directory should contain add-on packages that contain static files.

       /proc  This is a mount point for the proc filesystem, which provides information about running processes and the kernel. This pseudo-filesystem is described in more detail in proc(5).

       /root  This directory is usually the home directory for the root user (optional).

       /tmp   This directory contains temporary files which may be deleted with no notice, such as by a regular job or at system boot up.

       /usr   This directory is usually mounted from a separate partition.  It should hold only shareable, read-only data, so that it can be mounted by various machines running Linux.

       /usr/bin This is the primary directory for executable programs.  Most programs executed by normal users which are not needed for booting or for repairing the system and which are not installed locally should be placed in this directory.

       /usr/include Include files for the C compiler.           

       /usr/lib Object libraries, including dynamic libraries, plus some executables which usually are not invoked directly.  

       /var   This directory contains files which may change in size, such as spool and log files.

! Utilisez l’auto-complétion pour naviguer

Permissions

Utilisateurs

  • L’utilisateur spécial root a tout les droits (super-utilisateur)
  • Les utilisateurs appartiennent à des groupes id
  • Un utilisateur peut être autorisé à passer super-utilisateur (groupe sudoers)

Permissions

info "File permissions"

Les permissions données à un groupe dépendent de flags. Ces permissions sont de trois types, notées “rwx” pour r-ead, w-rite, e-x-ecute, :

  • permission de lire un fichier ou lister le contenu d’un répertoire
  • permission d’écrire (modifier) un fichier, ou de créer, supprimer, déplacer des éléments d’un répertoire
  • permission d’exécuter un fichier et d’accéder au contenu d’un répertoire.

Et il y a 3 groupes de permissions :

  • le propriétaire du fichier/répertoire
  • les membres du groupe propriétaire du fichier/répertoire
  • le reste du monde
-rw-r--r--   1 fix_jer morbluc        5096 déc.  23 09:31  .zshrc

Autre exemple :

ls -l /proc/
dr-xr-xr-x   6 root root 0 avril  1 06:01 tty
-r--r--r--   1 root root 0 avril  1 06:00 uptime
-r--r--r--   1 root root 0 avril  1 06:01 version
  • Changement des permissions par chmod. Changement de propriétaire par chown

Voir aussi https://debian-handbook.info/browse/stable/sect.rights-management.html

Outils de base

Illustrations des outils de base