Informations de base sur le système GNU/Linux
CETTE page rassemble le minimum qu'un débutant doit savoir pour comprendre les pages GNU/Linux ou Debian de ce site et qu'il n'est pas possible de répéter sans cesse sous peine d'alourdir la documentation.
Révision 2020.02.16
Attention : contrairement à d'autres système, un système Unix (et GNU/Linux) ne confond pas les majuscules et les minuscules dans les commandes et noms de fichiers.
1. GNU/Linux2. Console / Terminal |
3. Système de fichier
3.1 Fichiers 4. Documentation |
1. GNU/Linux
GNU/Linux est un système d'exploitation (comme par exemple Windows ou MacOSX), c'est-à-dire un système complet permettant l'utilisation d'un ordinateur à des fins les plus diverses.
Le nom Linux est une contraction de «Linus's UNIX», Linus Thorvald étant l'initiateur du noyau (chef d'orchestre du système) de type UNIX.
GNU (GNU's Not UNIX) permet l'utilisation du noyau (un chef d'orchestre tout seul ne produit pas beaucoup de musique) grâce à des outils fondamentaux : une multitude de commandes de base et un compilateur, qui permet de réaliser un logiciel à partir de sources écrites par des humains.
GNU/Linux est un ensemble de logiciels satisfaisant aux propriétés des logiciels libres définies par la FSF (Free Software Fondation) : libertés d'utilisation sans restriction, de copier le logiciel, de l'étudier, de le modifier et de le redistribuer avec les sources modifiées.
À partir du milieu des années 80, les systèmes d'exploitation se sont dotés d'environnements graphiques (McIntosh, AtariST et Amiga d'origine, le PC/Windows et GNU/Linux un peu plus tard… avec fenêtres, menus et souris, favorisant l'informatique intuitive. Les «bureaux» (Cinnamon, Enlightment, GNOME, KDE, LXDE, Mate-Desktop, Xfce…) sont également un ensemble de logiciels libres.
2. La console / le terminal >
Loin d'être le reliquat d'une période révolue, la console (ou terminal) est un outil puissant pourvu qu'on dispose de la documentation précise. Même en mode graphique, il est toujours possible d'ouvrir une application qui donne accès à la ligne de commande, repérable par son icone représentant le plus souvent un écran noir. Les bureaux possèdent tous un terminal (appelé Terminal, Konsole ou dérivé), généralement dans le menu Accessoires ou Outils système. [Ctrl-Alt-T] lance en général directement un terminal. [Alt-F2] permet souvent l'apparition d'une ligne de commande permettant de choisir une application.
2.1 Simple utilisateur
La fenêtre de l'application montre une invite («prompt») et un curseur (le fond peut être clair ou foncé, des couleurs peuvent être utilisées). La séquence de l'invite qui suit est classique, mais pas universelle :
tom@villon:~$ _
- tom représente l'utilisateur qui s'est loggué sous ce nom
- villon est le nom de la machine, déterminé lors de l'installation du système
- ~ signifie que la console considèrera que toute commande concerne l'adresse /home/tom/, à savoir la racine du système de fichiers réservé à l'utilisateur tom
- $ signifie que les commandes ne devraient pas affecter le système, qu'elles ne concerneront que les données personnelles de l'utilisateur
- _ représente le rectangle clignotant, endroit où s'affiche ce qui est saisi au clavier
Les commandes les plus classiques se trouvent sur la page concernant les fichiers voir également la page sur les commandes usuelles.
2.2 Super-utilisateur / root
Il est possible de passer en mode super-utilisateur, aussi appelé root, le seul qui permette :
- d'installer ou de désinstaller des applications provenant des dépôts d'une distribution
- de créer ou supprimer de nouveaux comptes «utilisateur»
- d'effacer des fichiers de tous les utilisateurs
- de saboter efficacement le système entier
Mais pour cela, il faut connaître le mot de passe du super-utilisateur, déterminé lors de l'installation du système. En fait, dans la majorité des cas, l'installateur de GNU/Linux est le super-utilisateur, sauf s'il transmet le mot de passe «root». Toute personne connaissant ce mot de passe peut d'ailleurs le modifier : c'est une question de confiance.
Attention : avant de poster une demande d'aide sur un forum, apprenez à distinguer su de su -
Pour administrer le système en tant que super-utilisateur, il existe deux types de connexion :
tom@villon:~$ su Mot de passe : root@villon:/home/tom# _
Après la commande su [Enter] et la saisie du mot de passe [Enter], plusieurs choses ont changé :
- tom est devenu root
- ~, qui désignait la racine de l'utilisateur tom est explicitement devenu /home/tom
- l'invite est devenue #, la marque du super-utilisateur : prudence!
La connexion par su ne permet pas l'utilisation des outils systèmes, comme adduser
La seconde est su - (avec espace et trait d'union)
tom@villon:~$ su - Mot de passe : root@villon:/root# _
- l'invite devient root@villon:~# : le super-utilisateur est chez lui
- le super-utilisateur peut utiliser les commandes systèmes, situées dans le répertoire /sbin
Pour quitter le mode super-utilisateur (ou root), il suffit de saisir exit [Enter] ou de fermer la console.
Remarques
- Certaines commandes, qui ne sont disponibles qu'en mode root, sont ignorées lorsque l'on tente de les lancer en mode simple utilisateur. Elles peuvent être installées sur le système, mais le simple utilisateur n'a même pas à le savoir
- Un système GNU/Linux qui donne au simple utilisateur les pouvoirs de root est à éviter.
- N'oubliez jamais votre mot de passe root ! Réinstallation assurée en cas d'oubli.
- Le super-utilisateur ne peut normalement pas lancer une application graphique, pour éviter les distractions fatales. Les interventions dans les fichiers de configuration se font à l'aide d'éditeurs en mode console.
3. Le système de fichiers
Un système de fichier contient les informations nécessaires au système et produites ou stockées par l'utilisateur. Comme cela fait quelques centaines de milliers de fichiers, il est nécessaire de les organiser.
3.1 Les fichiers
Un fichier est un ensemble de données écrites sous forme chiffrée. Il peut s'agir de nombres, ou encore de chaînes de caractères, mais dans ce cas chaque caractère est transcrit en nombre. Si l'unité d'information est le bit (chiffre binaire valant 0 ou 1), c'est l'octet (byte) un ensemble de huit bits, à savoir 256 valeurs de 0 à 255, qui constitue généralement la plus petite valeur consistante pour une application.
Chaque fichier est donc un ensemble variable d'octets, que chaque application sait comment organiser pour y stocker ses informations. En UNIX, c'est le plus souvent l'extension du nom de fichier qui importe :
- pantin.txt est un simple texte (sans gras, italique, titres…)
- index.htm et accueil.html sont deux fichiers lisibles par un navigateur Internet
- these.odt est un fichier édité par LibreOffice Writer
- budget.ods est une feuille de calcul de LibreOffice Calc
Note : il est préférable de ne pas utiliser de caractères accentués ou exotiques dans les noms de fichiers. En effet, les clés USB ne les supportent pas toujours ou les encodent de diverses façons, ce qui peut provoquer des problèmes lors de transferts.
Lorsque vous ouvrez une console (aussi appelée «terminal»), vous êtes nécessairement quelque part dans votre système de fichier, le plus probablement à la racine de votre espace «utilisateur», noté ~. Pour savoir ce que cet espace contient, saisir (suivi de la touche [Enter]) :
tom@villon:~$ ls -l -rw-r----- 1 jc jc 577200 sep 14 2012 A440.mp3 drwxr-x--- 22 jc jc 12288 fév 16 13:20 Bureau drwxr-x--- 42 jc jc 20480 fév 8 16:01 images …
L'ensemble de la première colone sera expliquée plus loin, mais sachez déjà que ce qui commence par d est un répertoire (directory), ce qui commence par - est un fichier.
Il est possible de créer un petit fichier avec echo et la redirection de données (>) vers un fichier-texte :
tom@villon:~$ echo "Les vieux fous sont plus fous que les jeunes fous (François de La Rochefoucault)" > flr.txt
Un nouveau ls -l fait apparaître le nouveau fichier :
tom@villon:~$ ls -l -rw-r----- 1 jc jc 577200 sep 14 2012 A440.mp3 drwxr-x--- 22 jc jc 12288 fév 16 13:20 Bureau -rw-r--r-- 1 jc jc 82 fév 16 13:43 flr.txt drwxr-x--- 42 jc jc 20480 fév 8 16:01 images …
Pour visualiser le contenu du fichier, on peut utiliser la commande cat :
tom@villon:~$ cat flr.txt Les vieux fous sont plus fous que les jeunes fous (François de La Rochefoucault)
La commande mv («move») permet de changer le nom d'un fichier, en l'occurrence : flr.txt en flr0.txt (cette commande permet également de déplacer un fichier) :
tom@villon:~$ mv flr.txt flr0.txt
La commande cp («copy») permet de dupliquer un fichier, ici flr0.txt sous le nom flr2.txt :
tom@villon:~$ cp flr0.txt flr.txt flr2.txt
Pour détruire le fichier flr0.txt (mais pas sa copie flr2.txt)
tom@villon:~$ rm flr0.txt
Vous trouverez plus de commandes sur la page consacrée aux fichiers et répertoires, et notamment comment les éditer.
3.2 Les répertoires
Les répertoires permettent d'organiser les fichiers, ce qui se fait un peu comme dans une maison : il y a des pièces, dans ces pièces des armoires, dans les armoires des tiroirs, dans les tiroirs des boîtes, qui peuvent encore contenir de plus petites boîtes…
En UNIX, et donc en GNU/Linux, la maison (l'ordinateur) est le répertoire-racine symbolisé par la barre oblique /.
À cette racine se rattache tout le système : les commandes, les applications, les périphériques, les fichiers des utilisateurs, les processus (application en cours)… Dans les répertoires suivants, nous trouverons (entre autres) :
- /bin les commandes basiques
- /dev les descripteurs de périphériques
- /etc les fichiers de configuration du système
- /home les données pour chaque utilisateur
- /mnt ou /media pour les autres disques, CD ou USB
- /proc les applications en cours
- /sbin les commandes du système
- /tmp les fichiers temporaires du système
- /usr les applications installées et leur documentation
- /var messages du système et certaines données d'entrée/sortie (imprimante)
La plupart de ces répertoires de premier niveau ne sont accessibles qu'en lecture pour les utilisateurs (le super-utilisateur fait ce qu'il veut). Le répertoire pour les données /home. UNIX ayant été conçu pour héberger plusieurs utilisateurs, ce répertoire peut contenir plusieurs sous-répertoires, chacun contenant les données de chaque utilisateur.
- /home/tom
- /home/sam
- /home/…
La commande pwd permet de connaître le répertoire «courant», celui que la console considère en premier lieu :
tom@villon:~$ pwd /home/tom
Pour y créer un nouveau répertoire, uniquement dans son propre espace (/home/tom ou un de ses sous-répertoires, pour l'utilisateur tom) :
tom@villon:~$ mkdir oeuvres
Nous avons vu plus haut que la commande ls -l listait de façon détaillée le contenu du répertoire courant, qu'il s'agisse de fichiers ou de sous-répertoires. Nous devrions y retrouver le nouveau sous-répertoire :
tom@villon:~$ ls -l
La commande cd oeuvres permet d'entrer dans le répertoire oeuvres si ce répertoire est contenu dans le répertoire «courant». oeuvres devient alors le répertoire courant. On en ressort avec la commande cd .. (contrairement au DOS, cd.. ne fonctionne pas) :
tom@villon:~$ cd oeuvres tom@villon:~$ pwd tom@villon:~$ ls -l tom@villon:~$ cd .. tom@villon:~$ pwd
La commande rmdir détruit un répertoire existant seulement s'il est vide :
tom@villon:~$ rmdir oeuvres
Nous avons déjà vu la commande mv capable de renommer un fichier. Elle est également capable de modifier le chemin d'accès d'un fichier, et donc de le déplacer, à condition que le premier élément soit un fichier, et le second un répertoire accessible du (sous-)répertoire courant.
tom@villon:~$ mv fichier repertoire
Il est possible de définir le nouveau chemin en utilisant une chaîne complexe. Si le répertoire courant est /home/tom, le fichier chanson.txt en /home/tom/musique et la destination existante /home/tom/oeuvres :
tom@villon:~$ mv musique/chanson.txt oeuvres
Si le répertoire courant est /home/tom/musique (../ remonte d'un niveau de répertoire) :
tom@villon:~$ mv chanson.txt ../oeuvres
Vous trouverez plus de commandes sur la page consacrée aux fichiers et répertoires.
3.3 Les droits
Est-ce que chaque utilisateur a le droit d'accéder aux données de tous les fichiers et répertoires les voir/écouter et éventuellement les modifier? Cela dépend.
Les différents utilisateurs disposent de différents droits sur les fichiers et répertoires UNIX :
- un fichier ou répertoire peut être lisible, modifiable et/ou exécutable :
- lisible : il est possible d'en afficher le contenu
- modifiable : il est possible d'en modifier le contenu, ou de supprimer le fichier ou répertoire
- exécutable : il est possible de le lancer comme application ou fichier de commandes (pour un répertoire, exécutable signifie qu'on peut y pénétrer)
- ces modalités concernent trois différents types d'utilisateurs :
- le propriétaire : en général celui qui l'a créé
- l'utilisateur appartenant à un groupe défini
- n'importe qui
Rappelons que ces propriétés, cruciales en UNIX, sont visualisables avec la commande ls -l :
tom@villon:~$ ls -l drwxr-xr-x 2 tom tom 352256 jui 15 18:45 Bureau -rw-r--r-- 1 tom tom 1187 oct 16 20:17 camarades.txt -rw-r--r-- 1 tom tom 28557 sep 30 14:07 essai.html -rwxr-xr-- 1 tom script 20 sep 30 16:01 essai.py drwxr-xr-x 42 tom tom 20480 oct 2 23:15 images drwxr-xr-x 31 tom tom 20480 sep 30 15:15 informatique -rw-r--r-- 1 tom tom 91 jan 23 20:18 intelligences-gardner.txt
Le résultat montre, pour chaque fichier, entre autres choses les droits, le propriétaire et le groupe du fichier, la taille, la date et l'heure de modification et enfin le nom. Par exemple,
-rwxr-xr-- 1 tom script 20 sep 30 16:01 essai.py
signifie :
- - à la première position indique qu'il s'agit d'un simple fichier (pas un répertoire, ni un lien, ni un processus…)
- rwx : le propriétaire (tom) a le droit de lire (r pour read), modifier (w pour write) et lancer (x pour exécutable) le fichier de script python
- r-x : les utilisateurs affiliés au groupe script ont le droit de lire, pas de modifier (-) mais bien de lancer ce fichier
- r-- : les autres utilisateurs ont juste le droit de lire le fichier
Le fichier suivant est un répertoire (d pour directory), et les droits sont un peu différents :
drwxr-xr-x 42 tom tom 20480 oct 2 23:15 images
- rwx : l'utilisateur tom a le droit de lister (r), modifier (w, par ajout ou retrait de fichiers) et d'ouvrir (x) le répertoire images
- r-x les affiliés au groupe tom et les autres utilisateurs peuvent accéder au répertoire et le lister, mais ne peuvent pas le modifier, c'est-à-dire ne rien y ajouter ou en retrancher
Avec la commande chmod, un propriétaire a le droit de fixer les propriétés pour chacun de ses fichiers en composant les droits avec les nombres 4 (lire), 2 (écrire) et 1 (exécuter) :
tom@villon:~$ chmod 754 essai.py
- le premier chiffre concerne le propriétaire tom. 7=4+2+1 = lecture, écriture et exécution permises
- le second chiffre concerne les affiliés au groupe tom, qui peuvent lire 5=4+1 = lecture et exécution permises
- le troisième chiffre concerne les autres utilisateurs. 4=4 = lecture seule du fichier
Avec la commande chown, un utilisateur peut modifier le propriétaire et le groupe de ses propres fichiers :
tom@villon:~$ chown tom:sam images
…signifie que le propriétaire tom permet aux affiliés du groupe sam (et a fortiori à sam) d'avoir accès au répertoire image selon les modalité du second chiffre des droits d'un fichier
Un possesseur peut même céder un fichier à un autre.
Le super-utilisateur a tous les droits, dont ceux de décider du propriétaire d'un fichier :
root@villon:~# chown sam:sam fichier.py
…ou d'affilier un utilisateur à un groupe avec addgroup :
root@villon:~# addgroup sam tom
…affilie sam au groupe tom. tom peut ainsi décider de définir les droits de certains de ses fichiers pour qu'ils puissent être lus, modifiés ou lancés par sam et tout autre affilié·e au groupe tom.