Cette fiche reprend les notions vues lors du CTP n°2. Vous retrouverez synthétisées sur cette page les différentes commandes utilisées, leur intérêt et comment nous avons pu les utiliser lors des manipulations sur ordinateur.

Table des matières

1. Système de fichiers

<aside> <img src="/icons/comment_blue.svg" alt="/icons/comment_blue.svg" width="40px" /> Le système de fichiers Linux

Le système de fichiers Linux est une arborescence ou une hiérarchie de fichiers et de répertoires. Le répertoire racine est / et tous les autres répertoires sont des sous-répertoires de celui-ci. Les répertoires sont séparés par des / et les fichiers sont des noms de fichiers.

Quand vous lancez un shell (i.e. ouvrez un terminal), celui-ci se trouve dans un répertoire. Ce répertoire est appelé votre répertoire courant ou répertoire de travail.

Un système Linux typique comporte des dizaines de milliers de répertoires système et de fichiers. La plupart de ces répertoires et fichiers sont cachés et ne sont pas visibles par défaut. Ces fichiers et répertoires cachés sont utilisés par le système d'exploitation pour stocker des informations de configuration et d'autres informations système.

Les sous-répertoires de la racine sont généralement réservés aux fichiers système. Les répertoires /home et /tmp sont utilisés pour stocker des fichiers temporaires et des fichiers personnels.

À moins d'être un administrateur système, vous n'avez pas besoin de vous soucier de la plupart des fichiers et répertoires système. Toutefois il est important de comprendre comment les répertoires et les fichiers sont organisés afin de pouvoir naviguer dans le système de fichiers et de pouvoir trouver les fichiers dont vous avez besoin.

Le tableau suivant décrit le contenu des principaux répertoires du système de fichiers Linux.

Répertoire Description
/ Répertoire racine. Tous les autres répertoires sont des sous-répertoires de celui-ci.
/bin Contient les programmes essentiels au fonctionnement du système.
/boot Contient les fichiers nécessaires au démarrage du système.
/dev Contient les fichiers représentant les périphériques.
/etc Contient les fichiers de configuration du système.
/home Contient les répertoires personnels des utilisateurs.
/lib Contient les bibliothèques partagées et les modules du noyau.
/media Contient les points de montage des périphériques amovibles.
/mnt Contient les points de montage des systèmes de fichiers temporaires.
/opt Contient les logiciels additionnels.
/proc Contient les informations sur les processus et le système.
/root Répertoire personnel de l'administrateur.
/run Contient les fichiers d'exécution des applications.
/sbin Contient les programmes essentiels au fonctionnement du système.
/srv Contient les données des services fournis par le système.
/sys Contient les informations sur les périphériques.
/tmp Contient les fichiers temporaires.
/usr Contient les programmes, les bibliothèques et les fichiers de configuration.
/var Contient les fichiers variables comme les logs, les mails, les bases de données, etc.
/lost+found Contient les fichiers récupérés lors d'un crash du système.
</aside>

<aside> <img src="/icons/comment_blue.svg" alt="/icons/comment_blue.svg" width="40px" /> Commande id et fichier /etc/passwd

En entrant la commande id dans le Shell, on obtient un affichage de cette forme :

$ id
uid=1000(debian) gid=1000(debian) groups=1000(debian),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),108(netdev),114(lpadmin),117(scanner)

Cette commande affiche les informations de l’utilisateur connecté : l’identifiant de l’utilisateur (uid) suivi du nom d’utilisateur, l’identifiant du groupe de l’utilisateur (gid) suivi de son nom et les identifiants des groupes supplémentaires de l’utilisateur (groups).

En rajoutant l’argument root après la commande id, alors on affiche les informations du super-utilisateur root : ce dernier possède un UID spécial (0) et a la possibilité de réaliser toutes les actions et modifications possibles sur le système.

Intéressons-nous désormais au fichier /etc/passwd en affichant son contenu via la commande cat : ce dernier stocke et répertorie tous les attributs utilisateur de base. Chaque ligne représente un utilisateur et est de la forme suivante : Nom**:**MotdePasse**:**UserID**:**PrincipleGroup**:**Gecos**:**HomeDirectory**:**Shell

2. Permissions associées aux fichiers

<aside> <img src="/icons/comment_blue.svg" alt="/icons/comment_blue.svg" width="40px" /> Protection des fichiers

Un système Linux peut permettre à de nombreux utilisateurs d'accéder aux fichiers et aux répertoires. Pour protéger les fichiers et les répertoires, Linux utilise un système de permissions. Les permissions sont des droits d'accès aux fichiers et aux répertoires. Les permissions sont associées à des utilisateurs et à des groupes. Les utilisateurs sont des personnes qui ont un compte sur le système.

Pour les fichiers normaux, les permissions sont associées à trois catégories d'utilisateurs : le propriétaire du fichier (généralement celui qui a crée le fichier), le groupe propriétaire du fichier et les autres utilisateurs.

Les catégories de permissions pour un fichier sont les suivantes :

L'option -l de la commande ls affiche les méta-données associées à un fichier, son nom, sa taille, son propriétaire, son groupe, ... et en particulier ses permissions, par exemple :

$ ls -l fichier
-rw-r--r-- 1 user group 0 2019-09-09 10:00 fichier

La chaîne -rw-r--r-- représente les permissions associées au fichier. Le premier caractère désigne le type du fichier, les trois suivants représentent les permissions du propriétaire, les trois suivants celles du groupe propriétaire et les trois derniers celles des autres utilisateurs. Les permissions sont représentées par les caractères rw et x pour les permissions respectivement en lecture, écriture et exécution. Si la permission n'est pas accordée, le caractère - est utilisé à la place.

Les permissions peuvent être représentées par des chiffres (représentation en octal) ou des lettres (représentation symbolique).

Le tableau suivant donne la correspondance entre les deux représentations :

Chiffre Lettre Description
0 --- Aucune permission
1 --x Exécution
2 -w- Écriture
3 -wx Écriture et exécution
4 r-- Lecture
5 r-x Lecture et exécution
6 rw- Lecture et écriture
7 rwx Lecture, écriture et exécution

<aside> <img src="/icons/compose_green.svg" alt="/icons/compose_green.svg" width="40px" /> Exemple

C'est-à-dire que pour la chaîne -rw-r--r-- les permissions sont les suivantes :

Utilisateur Groupe Autres
symbolique rw- r-- r--
binaire 110 100 100
octale 6 4 4
</aside>

</aside>

<aside> <img src="/icons/comment_blue.svg" alt="/icons/comment_blue.svg" width="40px" /> Permissions associées aux répertoires

Un répertoire est une table de noms de fichiers associés à un numéro d'index appelé numéro d'inode qui permet de connaître les informations (contenues dans l'inode) concernant ce fichier (taille, permissions, horodatage, où trouver le contenu du fichier, ...).

Dans un répertoire, les permissions ne sont pas associées aux fichiers mais au répertoire lui-même. Les permissions associées à un répertoire sont :

En retirant certaines permissions, alors on ne pourra pas appliquer certaines commandes élémentaires sur les répertoires (cd, ls, cat…)

<aside> <img src="/icons/compose_green.svg" alt="/icons/compose_green.svg" width="40px" /> Exemple

On crée un répertoire dir1 ainsi que deux fichiers vides test1 et test2 dans ce dernier :

$ mkdir dir1
$ touch dir1/file1
$ mkdir dir1/dir2

On retire toutes les permissions sauf r à dir1 :

$ chmod a=r dir1

Dès lors que j’essaye de l’ouvrir ou de changer de répertoire courant pour celui-ci, alors on obtient :

$ cd dir1
bash: cd: dir1: Permission denied

</aside>

</aside>

<aside> <img src="/icons/comment_blue.svg" alt="/icons/comment_blue.svg" width="40px" /> Interpréter les permissions associées à un fichier / répertoire

Imaginons que l’on a un répertoire exo2 et un fichier fichier_exo2 dans notre répertoire courant. Affichons les permissions associées :

$ ls -ld exo2
drwxr-xr-x 2 debian debian 4096 Sep 14 01:46 exo2
$ ls -ld fichier_exo2
-rw-r--r-- 1 debian debian 0 Sep 14 01:46 fichier_exo2

Première distinction que l’on peut remarquer, lorsque l’on observe les permissions d’un répertoire alors la première lettre qui apparaît dans la chaîne associée aux permissions est un d, si l’on regarde un fichier alors on a simplement un - à l’affichage pour la première lettre.

Ensuite, on va chercher à interpréter le reste des lettres par paquets de 3, on a donc isolé 3 paquets de 3 lettres : chaque paquet possède au mieux les trois lettres rwx toujours positionnées dans cet ordre. Une fois cela fait, on peut interpréter aisément les permissions selon les informations fournies dans la partie Protection des fichiers sans oublier que l’on peut utiliser la représentation octale : chaque groupe de 3 lettres forme un nombre binaire (1 s’il y a une lettres, 0 sinon) que l’on peut convertir en octal pour obtenir un chiffre simple, donnant à la fin un nombre à 3 chiffres pour résumer toutes les permissions associées à un fichier.

<aside> <img src="/icons/compose_green.svg" alt="/icons/compose_green.svg" width="40px" /> Exemple

</aside>

</aside>

<aside> <img src="/icons/comment_blue.svg" alt="/icons/comment_blue.svg" width="40px" /> Modifier des permissions associées à un fichier / répertoire

</aside>

<aside> <img src="/icons/comment_blue.svg" alt="/icons/comment_blue.svg" width="40px" /> Permissions par défaut

</aside>