Legal stuff about this site and your private life:

  • We use a cookie to keep your preferences (language, NSFW status, login status) during navigation.
  • We use your local storage to save the announces you closed (like this one).
  • We don't save informations you don't give
  • We don't share your email address if you comment or register
  • There is no tracker of any kind.

If you're not OK with this, move your way.

Cette introduction est une synthèse des cours de l'IMIE, destinés à la découverte de Linux. Ce cours n'est certainement pas complet, mais j'ai essayé d'en garder le maximum.

Elle se base sur une Debian 8.5.

Système d'exploitation (OS)

Le système d'exploitation permet de créer une interface entre la complexité de la machine et l'utilisateur. En effets, utiliser un language machine pour réaliser la moindre opération serait une perte de temps considérable.

Linux est donc un système d'exploitation, tout comme Windows ou MacOS.

En juillet 2016, la répartition des OS à travers le monde est la suivante :

Windows : 75,34% OSX/iOs : 14,76% Linux (+android) : 4,56% Autres : 5,34%

Principales différences entre Linux et Windows:

Linux

  • Non propriétaire, gratuit le plus souvent
  • Ouvert : sources disponibles
  • Flexible : sources modifiables
  • Puissant : Programmable
  • Communauté active : entraide des utilisateurs au travers de forums et services
  • Plus complexe : plutôt pour les informaticiens (interfaces de programmation optimisées)

Windows

  • Propriétaire : Payant
  • Sources non disponibles
  • Sources non modifiables
  • Communauté active : nombreux forums et services, payants et/ou gratuits
  • Interfaces d'utilisation connues du grand public

Bref historique

Le système GNU-Linux est né au début des années 1990, basé sur un système UNIX.

Il existe un grand nombre de distributions de linux (de types de linux) différentes, ayant chacune leurs particularité. Malgrès tout, on retrouve une base d'application commune, ainsi que la philosophie des logiciels libres.

Principes de base

Un système multi-utilisateurs

Linux est très axé sur la sécurité et les droits des utilisateurs: il existe un super-utilisateur, root, qui a accès à l'ensemble du système et de ses commandes. Il a les pleins pouvoirs, donc utiliser ce compte nécessite de la rigueur (risque de faire planter le système) et le fait de respecter la vie privée des autres utilisateurs de la machine.

De préférence, on utilisera au quotidien un compte utilisateur, avec moins de privilèges. Cela évitera:

  • les manipulations malheureuses
  • l'installation de programmes malveillants au niveau du système (les virus pourront tout de même infecter les fichiers de l'utilisateur)

Permissions et groupes

lors du listage d'un dossier avec ls -la, on peut voir ce genre d'e sortie:

-rw-------  1 mtancoigne mtancoigne  912 août  24 10:28 .bash_history
drwxr-xr-x 11 root       root       4096 août  22 17:51 un_dossier_root
-rw-r--r--  1 mtancoigne mtancoigne  220 août  22 17:11 .bash_logout
-rw-r--r--  1 mtancoigne mtancoigne 1238 août  23 12:17 .bashrc
drwxr-xr-x  3 mtancoigne mtancoigne 4096 août  24 10:08 Bureau
drwx------  9 mtancoigne mtancoigne 4096 août  23 14:26 .cache
drwx------ 14 mtancoigne mtancoigne 4096 août  24 09:00 .config
drwx------  3 mtancoigne mtancoigne 4096 août  22 17:12 .dbus

Les permissions sont affichées sur la colonne de gauche des résultats. Ils peuvent être découpées suivant ce pattern:

drwxr-xr-x 11 root       root       4096 août  22 17:51 un_dossier_root
   U   G   O
d rwx r-x r-x

-rw-r--r--  1 mtancoigne mtancoigne  220 août  22 17:11 .bash_logout
   U   G   O
- rw- r-- r--

Le premier flag, d, spécifie si la node est un dossier ou non.

Ensuite, nous avons trois groupes correspondant aux permissions pour, respectivement, l'utilisateur (User), le groupe (Group) et les autres (Other).

Ces groupes sont composés de trois lettres correspondant au droits : read (lecture), write (écriture), exécution (exécution en tant que programme, pour un fichier.)

Le reste de la ligne correspond au nombre de fichiers contenus (pour un dossier), à l'utilisateur propriétaire, le groupe propriétaire, le poids (taille du fichier/dossier), ainsi que sa date de création.

On pourrait donc traduire la ligne suivant par :

drwxr-xr-x 11 root       root       4096 août  22 17:51 un_dossier_root

La node un_dossier_root est un dossier créé le 22 aout à 17h51. Il appartient au groupe root, ainsi qu'à l'utilisateur root. Les permissions sont drwxr-xr-x:

  • d pour répertoire.
  • rwx l'utilisateur a un acces total au dossier (lecture/ecriture/listage)
  • r-x les membres du groupes ont seulement accès en lecture et peuvent lister les fichiers.
  • r-x les autres utilisateurs ont seulement accès en lecture et peuvent lister les fichiers.

Chaque utilisateur appartient a un ou plusieurs groupes, ce qui permet de gérer les permissions d'accès de manière très fine.

Permissions en octal

Les permissions peuvent aussi être définies en octal : un chiffre représentant le niveau de permission pour un utilisateur/groupe/autre.

Il se calcule suivant ces correspondances :

  r  |  w  |  x
-----+-----+-----
  4  |  2  |  1

Pour un fichier d'accès rwx, on calculera en octal: 4 + 2 + 1 = 7

En reprenant le schéma de permissions UGO, on pourrait ainsi écrire les permissions du dossier un_dossier_root avec cette valeur en octal: (4+2+1)(4+0+1)(4+0+1), donc 755.

Les permissions peuvent être changées grâce à la commande chmod:

# Quelques exemples d'utilisation
chmod 777 <fichier>
chmod u+x <fichier> # ajoute le bit d'exécution pour l'user
chmod g-r <fichier> # retire le droit de lecture au groupe
chmod +w <fichier> # ajoute le droit en lecture pour tous.
#etc...

Organisation du système de fichiers

L'organisation du système de fichiers linux peut être déroutant à première vue: pas de Poste de travail, pas de disques c:, etc... Sous linux, tout part de la racine /.

  • bin Binaries : Contient les binaires essentiels aux opérations de base d'un utilisateur (ex: cp pour copier des fichiers, ls pour les lister,...). Les binaires sont des programmes compilés et peuvent être comparés aux éxécutables sous windows.
  • boot : Fichiers de démarrage
  • dev Devices : Ce dossier est un peu spécial pour une personne ne connaissant pas linux, car il contient des dossiers représentant tous les périphériques de l'ordinateur.
  • etc : Dossier contenant des fichiers de configuration uniquement.
  • home : Répertoire contenant les dossiers utilisateurs.
  • lib Libraries : Contient les librairies du système, requises pour son fonctionnement.
  • lost+found contient les fichiers récupérés lors de crashes systèmes.
  • media : Dossier où sont montés les médias amovibles (clé USB, CD, ...)
  • mnt Mount : Dossier où sont montés les périphériques non amovibles (disques dur locaux principalement).
  • opt Répertoire contenant les programmes additionnels
  • proc : Dossier virtuel spécial où sont stockés les informations sur les processus : mémoire système, périphériques montés, configuration matérielle,...
  • root : Répertoire personnel de l'utilisateur Root
  • sbin System binaries : Programmes réservés à l'utilisateur root (ex: fdisk, ifconfig,..)
  • srv : Contient des données spécifiques devant être servies par des protocoles système, comme ftp, rsync,...
  • sys : Semblable à proc, mais utilisé pour la configuration des périphériques plug and play.
  • tmp Temporary : Fichiers temporaires
  • usr : Contient tous les binaires, librairies, headers,... pour les applications utilisateur. La plupart des applications seront installées dedans, en faisant un des plus gros dossiers du système.
  • var Variable : Contient tous les fichiers changeant pendant que le système est lancé (ex: logs, caches,...)

Descriptions tirées de Nixtutor

De plus, il est important de noter que les fichiers commençant par un . sont considérés comme des fichiers cachés. Ils ne seront donc pas visible avec un simple ls.

Les dossiers . et .. représentent respectivement le dossier courant et le dossier parent : imaginons que nous nous trouvons dans /etc/apt/...

ls .
# retourne la liste du dossier actuel. Identique à ls.

ls ..
# va retourner le contenu du répertoire parent, /etc/

Montage/démontage de partition

Sous linux, lorsque l'on veut accéder à un périphérique de stockage (partition tierce, disque dur externe, clé usb, etc...), il faut monter les partitions dans le système. Aujourd'hui, la gestion des partitions se fait facilement dans un environnement graphique tel que KDE ou Gnome.

Le fichier /etc/fstab contient la liste des partitions des disques présents sur l'ordinateur, ainsi que les options de montage (droits, emplacement de montage, type de partition, etc...)

Pour en savoir plus sur les points de montage...

Logiciels disponibles et gestion des paquets

Debian 8.5 propose un panel de logiciels différents, que ce soit en outils bureautique, en outils de développement, multimédia, etc... Oui, il y a même des jeux sous Linux...

Ces logiciels sont mis à disposition sous forme de paquets, dans des dépôts. Les paquets sont des logiciels, des librairies, etc... préparés pour votre système. Ils peuvent facilement être installés et supprimés en utilisant un gestionnaire de paquet (apt, aptitude, synaptic, muon,...).

Suivant la philosophie de linux, les dépôts officiels des distributions linux ne proposent que des paquets opensource, mais ils proposent aussi des paquets propriétaires, dans des dépôts séparés.

En mode console, la gestion des paquets se fait à l'aide de apt-get <commande> <paquet1> <paquet x>. Pour installer un paquet : apt-get install <paquet> Pour supprimer un paquet : apt-get remove <paquet> Pour nettoyer le cache des paquets téléchargés : apt-get clean Pour supprimer les paquets inutiles : apt-get autoremove

Vous pourrez aussi trouver des paquets de logiciels libre (ou non) sur internet, mais il est toujours de bon usage d'éviter d'utiliser des programmes dont on n'est pas sur de l'origine. Les paquets des dépôts on été révisés et testés par la communauté et peuvent donc être considérés comme fiables.

Une autre solution pour installer des logiciels sur un distribution Linux est de compiler soi-même son programme : à partir du code source d'une application, nous allons générer l'exécutable adapté au système que nous possédons. Bien que cette technique puisse paraître complexe, elle peut être intéressante au niveau des performances des logiciels compilés.

Commandes communes

Commandes que l'on utilise régulièrement :

  • man <commande> Affiche la page de manuel d'une commande donnée
  • ls Liste le contenu d'un répertoire
    • -a Affiche aussi les fichiers/dossiers cachés
    • -l Affiche sous forme de liste détaillée
  • pwd Affiche le chemin vers le répertoire courant
  • cd <répertoire> Permet d'aller au répertoire donné
  • cat <fichier> Affiche le contenu d'un fichier
  • touch <fichier> Créée un fichier vide s'il n'existe pas.
  • mkdir <dossier> Créée un répertoire
  • cp <source> <cible> Copie le fichier source vers sa cible (utiliser l'option -r pour un dossier)
  • mv <source> <cible> Déplace un fichier/répertoire
  • rm <fichier> Supprime un fichier (utiliser l'option -rf pour supprimer un dossier non vide, ainsi que tous son contenu. ATTENTION : il n'existe pas de corbeille dans un shell...)
  • rmdir <dossier> Supprime un dossier
  • tailf <fichier> Ouvre un fichier en lecture et affiche toutes ses modifications. Très utile pour suivre des logs.
  • kill <pid> : tue un programme dont avec le PID donné

Pour chacune de ces fonctions, n'hésitez pas à regarder le manuel (man <commande>) ou en visualisant l'aide intégrée à la commande (<commande> --help ou <commande> -h).

Astuces:

  • * selectionne n'importe quel caractère, peu importe le nombre de fois
  • [a-z] sélectionne un caractère entre a et z
  • {a,b,c,d} sélectionne a,b,c ou d

Ces éléments sont utiles, notemment pour trouver des fichiers ou les sélectionner (ex : mv *.txt Textes déplacera tous les fichiers avec l'extension .txt dans le répertoire Textes)

  • <commande> > fichier : écrit la sortie de la commande dans le fichier spécifié
  • <commande> >> fichier : ajoute la sortie de la commande à la fin du fichier
  • <commande> 2> fichier : écrit les erreurs produites par la commande dans le fichier
  • <commande> 2>> fichier : ajoute les erreurs produites par la commande à la fin du fichier.

Glossaire

  • CPU: Central Processing Unit : Processeur. Il réalise les calculs de la machine.
  • GPU: Graphical Processing Unit: Processeur graphique
  • RAM: Random Access Memory : Mise en tampon de données, avec une mise à disposition rapide au processeur.
  • HDD: Hard Drive Disk : Disque dur (stockage de données)
  • ROM: Read Only Memory : Mémoire morte (CD-Rom, BIOS,...)
  • OS: Operating System : Système d'exploitation (Windows, MacOS, Linux)
  • Firmware: Micrologiciel installé sur les périphériques. Le firmware a été créé pour permettre une plus grande flexibilité du hardware afin de lui permettre d’évoluer en permettant d’intégrer de nouvelles fonctionnalités, non prévues initialement, sans avoir besoin de revoir complètement le design du hardware (Wikipedia).
  • GNU: GNU is Not Unix. C'est un projet de développement collaboratif et libre initié par Richard Stallman en 1983.

Liens

Leave a comment

You want to react to this content or ask something to the author? Just leave a comment here!

Note that the comments are not publicly visible, so don't worry if you don't see yours.

All the information you give will only be visible to the author. We don't share anything with anyone.

Don't fill this field if you want this form to be saved.