ISIET-UAS
2GI
Chapitre 2:
Les bases des fichiers
de LINUX
Octobre 2024
p. 1
Sous UNIX, tout est représenté par un fichier
Il est reconnu par son nom (un ou plusieurs) mais
un seul type est associé à un fichier
Le nom du fichier est un nom logique mais la
représentation au niveau système est via le
descripteur du fichier ou inode
L’inode d’un fichier contient toutes les informations
associées au fichier y compris l’emplacement
physique sauf le nom.
Tout inode aura un numéro unique dans le système
de fichiers qui le supporte
p. 2
Noms de fichiers
Noms de fichiers peuvent atteindre 255
caractères (Eviter les caractères avec CTRL ou
ESC ou l’espace)
NB: Noms de fichiers sont sensibles à la casse
Les fichiers dont le nom commençant par . sont
dits cachés
( en utilisant la commande ls -a: on liste tous
les fichiers y compris les fichiers cachés)
p. 3
Le type peut être vérifié avec la commande file nom_fichier
On distingue 7 types:
Ordinaire (texte ou image binaire)
Directory (répertoire ou dossier au sens de Windows)
Lien symbolique : pointer un autre fichier (rejoint la
notion de Raccourcis sous Windows) (cde ln –s)
Spécial associé au périphérique (device) , en mode bloc
ou caractère et est placé sous /dev
Pipe nommé: permet à 2 processus sans relation de
parenté de s’échanger des données comme par un tube.
Socket: interface logicielle avec les services du S.E q’un un
développeur
p. 4
exploitera les services d’un protocole .
p. 5
Les pipes
On veut connaitre le nombre d’utilisateurs en ligne
sachant qu’on dispose de la commande wc.
$ wc –l toto
15 toto toto fichier textuel de 15 lignes
Pour faire cette tâche:
$ who > res
$ wc –l res
Ici res fichier temporaire sur disque:
la sortie de who sera entrée de wc
Pipe est un procédé ou mécanisme plus performant
p. 6
Un pipe ( opérateur « | » ) nous permet de rediriger la
sortie d'une commande vers l'entrée d'une autre.
C’est une voie de communication en Mémoire Centrale
(par déf. Buffer de 4KO) entre deux processus de la
même famille; elle relie la sortie du 1er processus à
l’entrée du 2ème processus.
$ who | wc –l
Ici la sorite de 1er process( who ) est l’entrée du 2ème (wc )
On peut combiner l’exécution des commandes en créant
des pipeleines entre elles
(caractéritique puissante d'UNIX)
p. 7
$ X | Y
Ecr Lec
Buffer 4KO
Processus X
Processus Y
Deb: demande (buffer)
Deb: attendre
ecrire(buffer)
lire(buffer)
signaler
vider(buffer)
aller à Deb
aller à Deb
Pipe nommé: voie sur disque entre 2 processus n’ayant pas de relation de parenté;
même mécanisme mais sur disque créé avec
$mkfifo tube
p. 8
La double redirection
Combien d’entrées dispose votre directory de connexion ?
lister son contenu
$ cd; ls | wc –w #Le nombre d’entrées
ls # liste du contenu
On remarque que la commande ls est exécutée
deux fois :
Amélioration:
Utilisation de la double redirection et ce,
par le biais de la commande tee qui exclut
l’exécution de la commande ls 2fois
p. 9
Dans notre exemple:
$ ls | tee res | wc –w
Ecr Lec Ecr Lec
Pipe1 Pipe 2
$ cat res
tee reçoit la sortie de ls (par le biais du 1er pipe), la
1.
mémorise dans un fichier de travail (ici c’est res) et en
même temps fait passer le même contenu à la commande
wc (par le biais du 2ème pipe)
p. 10
Le répertoire de travail ou
Directory courante
Pwd (Print Work Directory)
Affiche le path ou chemin absolu de la directory
courante.( Point courant de l’arborescence)
ls
Liste le contenu de la directory courante (par
défaut) ou d’une directory ou d’un fichier
spécifique (fourni en argument)
p. 11
• Affichage des entrées de la directory courante:
$ ls –l
Taille en blocs
Total = 9 (1bloc=512 O)
drw-r--r-- 2 belhadj staff 4096 24 Oct. 09:19 trav
-rw-r--r-- 1 belhadj staff 58 16 Oct. 09:10 [Link]
nb liens propriétaire groupe taille date nom
group
type
-rw-r--r--
user
others
p. 12
Changer de directory
La commande cd change de directory en utilisant:
Un chemin absolu
$ cd /home/joshua/work
Un chemin relatif (par rapport à la d. Courante)
$ cd work
$ cd ../work
$ cd ../../work
p. 13
Chemin d’un fichier
Chemin Absolu
exemple :/home/belhadj/fich
Chemin relatif
si directory courante est /home/belhadj
Ce fichier sera fich ou ./fich
p. 14
• pwd retourne: -
/home/belhadjsami/cours
• se déplacer: cd /
[/home/belhadjsami/cours]$ cd ..
[/home/belhadjsami]$ tmp home
[/home/belhadjsami]$ cd /tmp
[/tmp]$
• chemin relatif rep belhadjsami
• chemin absolu
• créer une directory: mkdir .cshrc cours docs
[/tmp]$ mkdir rep
• supprimer une directory: rmdir [Link]
[/tmp]$ rmdir rep répertoire courant
p. 15
Hiérarchie root (racine)
• Sous Linux, toute l'arborescence part de "/" appelée
root(racine). Ici se trouvent toutes les directories
élémentaires dont voici la description cas de Linux:
. /var - logs, fichiers spool( lp, mail, cron,at;…)
• /bin, /usr/bin - commandes utilisateurs les +(-) utilisées
• /sbin, /usr/sbin - commandes d’administration les +(-)
utilisées
• /proc - fenêtre virtuelle au noyau
• /etc - fichiers de configuration (administratifs)
• /lib - librairies partagées
• /dev - fichiers de périphériques (ou spéciaux)
• /tmp -travaux temporaires
p. 16
Hiérarchie root (racine)
• /home : contient les directories
personnelles des utilisateurs
• /lost+found : les données récupérés par un
check du système de fichiers racine
• /root : la directory de connexion de
l’administrateur (choix Linux)
p. 17
Notion de lien direct
• Pour un fichier ordinaire:
Un lien est un Chemin (par défaut nb liens=1)
Le fichier est physiquement présent dans le
S.F tant qu'il y a de liens physiques s'y
référant.
Le lien physique ne peut passer au travers de
lecteurs ou partitions (ou Système de Fichiers
Création d’un nouveau lien:
$ ln <filename> <linkname>
p. 18
• Pour une Directory:
Un lien est une référence à une directory
Par défaut: toute directory dispose de
deux liens:
Un lien vers elle-même .
Un lien vers la directory mère ..
On augmente le nombre de liens d’une
directory en y créant des sous-directories
p. 19
Donc, on augmente le nombre de liens:
•Fichier ordinaire, en créant un nouveau :
$ ln fich fich2
Attention: fich et fich2 sont deux noms du
même fichier physique (même inode)
•Directory, en créant dedans une
nouvelle sous-directory (mkdir)
Attention:
Si trav directory, la commande
$ ln trav trav2 est impossible
p. 20
Lien Symbolique
• Rejoindre la notion de raccourci sous
Windows
• Créer un lien symbolique sur toto de nom
ractoto:
$ ln -s toto ractoto
ractoto (de taille 4 caractères) pointe sur toto
(Avec ls –l le nom figure: ractoto -> toto)
*ln –s possible pour n’importe que type de
fichiers
*toto et ractoto ont deux inodes distincts
p. 21
Manipulation de fichiers
mv : déplace ou renomme des fichiers
$ mv toto tata : renommer
Si trav est une directory:
$ mv toto trav : déplacer toto sous trav
cp : copie de fichiers
$ cp fich1 fich2 : copier fich1 sur fich2
$ cp f1 trav : copier f1 dans trav avec nom f1
$ cp f1 f2 trav : copier f1 et f2 dans directory trav
en conservant les même noms
p. 22
touch : crée un fichier vide fourni comme argument
si ce fichier n’existe pas ou met à jour le temps
d'accès si ce fichier existe
rm : supprime les fichiers (les liens) avec
confirmation (utiliser -i)
* toto a deux liens: $ rm toto supprime le
lien toto donc physiquement le fichier existe encore
avec l’autre lien
* toto a un seul lien: $ rm toto spprime ce lien
donc suppression physique de ce fichier
$ rm -i toto : suppression avec confirmation
p. 23
Éditer les fichiers de texte
cat une rapide façon d‘afficher les fichiers de texte:
affichage par totalité
more : effectuer un affichage progressif: ligne par
ligne ou page par page (ou les 2 à la fois)
head et tail permettent d'afficher quelques lignes au
début ou à la fin du fichiers : affichage partiel
p. 24
Afficher un fichier entier
Syntaxe:
$ cat [options] [file ...]
Le contenu des fichiers est affiché séquentielle-
ment sans rupture
Les fichiers sont affichés concaténés
$ cat file1 file2 file3
p. 25
Autres commandes pour afficher les fichiers
$ more filename
Affiche le contenu du fichier page par page
$ head [-n] filename
Affiche le début du fichier (par défaut, n=10 lignes)
$ tail [-n] filename
Affiche la fin du fichier (par défaut, n=10 lignes )
NB: Pour sélectionner une partie du milieu d’un fichier, utiliser head et
tail séparés par le pipe (|)
$ tail -2 toto | head -1
affiche l’avant dernière ligne de toto
p. 26
Manipulation des directories
mkdir : crée une directory
rmdir : supprime une directory(déja vide)
rm -r : supprime une directory et son contenu
en seule opération
copy : copier une directory sur une autre
p. 27
Directory personnelle
Home Directory
Chaque utilisateur a une directory personnelle
typiquement sous /home (directory de connexion):
espace de travail réservé pour cet utilisateur
Contient des fichiers spécifiques de configuration
(généralement des fichiers
cachés: .bash_profile, .bashrc, .bash_logout) ainsi
que les fichiers/directories propres à l’utilisateur,..)
Cette directory est représentée par le caractère ~ (cas
LINUX) et constitue le paramètre par défaut de la
commande cd
p. 28
Sécurité des fichiers
Chaque fichier (quelque soit le type) doit avoir des
droits de protection (sécurité) ou permissions ou
autorisations pour trois catégories d’usagers: son
propriétaire (user), son groupe(group) et les autres
(other).
Pour chaque catégorie, on dispose de trois droits:
- Lecture : r
-Ecriture: w
-Exécution : x
Tout fichier a neuf droits
p. 29
La sécurité des fichiers
Pour un fichier ordinaire:
- r : droit de consulter
- w : droit de mise à jour
- x : droit d’éxécution pour un fichier binaire ou un script shell
Pour une directory:
- r : droit de lister le contenu
- w : droit de mise à jour c-a-d ajout/retrait d’entrées
- x : droit de naviguer (cad exécuter cd)
p. 30
Examiner les permissions
On peut examiner les permissions en utilisant la
command ls :
$ ls -l /bin/login
-rwxr-xr-x 1 root root 18972 avr 8 2001 /bin/login
Le type du fichier et les permissions sont symbolisés par
une chaîne de 10 caractères
¨Pour le type (1er caractère)
l: lien symbolique, d: directory, -: fichier ordinaire,
b: f.s. bloc, c: f. s. caractère, s: socket,
p:pipe nommé
p. 31
Examiner les fichiers ordinaires
• Affichage des caractéristiques: ls –l [Link]
groupe
-rw-r--r-- 1 belhadj staff 58 16 Jul 09:19 [Link]
nb liens propriétaire taille date nom
group
type
-rw-r--r--
user
others
p. 32
Examiner les répertoires
Le premier caractère dans la chaîne d'accès est un
caractère qui distingue un répertoire d'un fichier
ordinaire ou d’un autre type de fichier
$ ls -ld /bin : voir les informations sur /bin
drwxr-xr-x 2 root root 4096 jan 18 11:44 /bin/
$ ls -l /bin : voir les informations sur le contenu (les
entrées ) de la directory /bin
p. 33
Examiner les permissions
d'utilisateur
Les caractères 2, 3 et 4 dans le mode d'accès
identifie les droits d'accès du propriétaire
$ ls -l /etc/passwd
-rw-r--r-- 1 root root 18972 avr 8 15:20 /etc/passwd
Ce fichier est ouvert en lecture et écriture pour
son propriètaire (qui est root)
p. 34
Les permissions de groupes
Les caractères 5, 6 et 7 identifient les permissions
de groupe
-rw-rw-r-- 1 joe visitor 18972 avr 8 2001 /joe/essai
Ce fichier peut être lu et modifié par les
utilisateurs du groupe 'visitor' mais il ne peut
être exécuté (absence de x)
p. 35
Les permissions des autres
utilisateurs
Les caractères 8, 9 et 10 identifient les caractères
des autres utilisateurs
-rw-rw-r-- 1 joe visitor 18972 avr 8 2001 /joe/essai
Ce fichier peut être lu par les utilisateurs autres
que ceux appartenant au groupe visitor
p. 36
Les permissions de fichiers par défaut
Les permissions par défaut sont définies par le
masque de la session courante
umask peut être utilisée pour connaitre ou pour
spécifier les permissions par défaut lors de création
des fichiers et/ou directories
Exemple: Les utilisateurs non privilégiés ont un
umask de 003 ==> les permissions sont :
pour les fichiers: 664, pour les directories: 774
L'umask du root est 022
==>fichiers ordinaires:644,dir: 755
p. 37
Exemple comment interpréter ce masque:.
$ umask
00 27
U G O
0 2 7
C7 : 7 5 0
B2 : 111 101 000
Création d’une directory: rwx r–x ---
Création d’un fichier : rw- r–- ---
Règle: Un fichier ordinaire est par défaut non exécutable
p. 38
Les types de permissions spéciales
Le bit setuid attribue au processus les droits du
propriétaire du fichier en exécution. Sans effet
pour les répertoires
Le bit setgid attribue au processus le GID du
fichier en exécution. Pour les répertoires, ce bit
force tous les fichiers créés dans ce répertoire à
avoir le groupe de ce dernier
Le bit sticky empêche les utilisateurs d'effacer des
fichiers qui ne leurs appartiennent pas (pour les
répertoires . Pas d'effet sur les fichiers normaux).
p. 39
Exemple: SET UID
Les caractères 2, 3 et 4 dans le mode d'accès
identifie les droits d'accès du propriétaire
$ ls -l /bin/login
-rwsr-xr-x 1 root root 18972 avr 8 2001 /bin/login
setuid
Ce fichier est ouvert en lecture, écriture et
exécution. Celui qui l'exécute s'octroie les droits du
propriétaire root (s dans la 4ème position)
p. 40
Exemple: Stiky bit
Les caractères 8, 9 et 10 dans le mode d'accès
identifie les droits d'accès des autres.
$ ls -l /tmp
drwxrwxrwt 14 root root 4096 avr 9 19:12 /tmp
stiky bit
Cette directory est ouverte en lecture, écriture et
exécution pour les autres. Celui crée une entrée dans
/tmp c’est celui qui le supprime (t dans la 10ème
position)
p. 41
Changer les droits d'accès
Pour changer les droits d'accès par le propriétaire
du fichier (bien sur + root) :
chmod [-R] mode file ...
p. 42
La sécurité des fichiers
• Changer les permissions: chmod Changer les permissions
chmod <classe op perm, …>|nnn <fic>
– classe:
u : user
– chaque perm = 1 valeur:
g : group
r 4
o : others
w 2
a : all
x 1
– op:
rien 0
= : affectation
- : suppr. – déf. des permissions (par addition)
+ : ajout pour chaque classe
– perm:
r : lecture
exemples:
w : écriture chmod u=rwx,g=rx,o=r [Link]
x : exécution chmod a+x [Link]
chmod 755 [Link]
p. 43
Compteurs sur un fichier textuel
wc [options] fichier
Sans option: Compter dans le fichier le nombre
de lignes, mots et caractètres
Options: -l: compter les lignes
-
- w: compter mots
-c: compter les caractères
Exemples: Combien d‘utilisateurs en ligne
$ who | wc –l
$ users | wc -w
p. 44
La commande cut
Afficher les colonnes spécifiques ou champs d'un
fichier de données (textuel):
*Selection par colonne: utiliser l’option -c
-c spécifie la colonne (-c4-10, -c4,10, -c8)
$ cut -c4 results (Colonne 4 de results)
$ ls –l toto | cut –c2-10 (permissions de toto)
*Selection par champs: utiliser les options –d et -f
-d spécifie le délimiteur de champs
-f spécifie le numéro du champs (-f1-3 -f2 -f2,4)
$ cut -f3 -d : /etc/passwd (le champs n°3
et le délimiteur de champ est : )
p. 45
Sélectionner du fichier TOTO
Les colonnes 6 à 9
abcde fghi jkl yuion
ABCD EGII IJKMF
12345 7890 123456789
aaaaa bbbb ccccccc
cut –c6-9 TOTO
(résultat est par défaut à l’écran)
p. 46
Toute ligne du fichier /etc/passwd a la structure suivante:
Nom_user:x:UID:GID:Nom_complet:[Link]:Shell_conexion
$ cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
-----
user8:x:1008:1005::/home/user8:/bin/bash
user9:x:1009:1005::/home/user9:/bin/bash
$cut -f1,3 -d : /etc/passwd (Séle.c Nom et UID)
root:0
bin:1
daemon:2
----
user8:1008
user9:1009
p. 47
La commande grep
grep [options] Chaine fichier(s)
Afficher les lignes de fichier contenant Chaine
Options: -v: afficher les lignes ne contenant pas Chaine
-y: ne pas distinguer entre Miniscule et Majscule.
-n: lignes sont précédées de leur Numéro
“^Chaine”: les lignes qui commencent par
“Chaine$”: les lignes qui se terminent par
Ex: user1 figure-t-il dans /etc/passwd, n° de sa ligne associée?
$ grep -n “^user1:” /etc/passwd
43: user1:x:501:101:Eleve1:/home/user1:/bin/bash
p. 48
La commande find
find [path] [options] [action]
Rechercher dans la sous arborescence dont la
racine est path tous les fichiers satisfaisant
certain critères (fournis dans options) et lancer
une action
Action peut être:
-print: c’est l’action par défaut
-exec commande { } \;
(commande à lancer sur tout fichier)
p. 49
• Les critères:
-name Nom_fichier ou nom_générique
-type type du fichier (f , d , c , b , l , p , s )
-user Nom_util ou son UID
- group Nom_groupe ou son GID
- links n
-size n[c,K,M,G] (l’unité est le bloc; 512o)
find . -size 10 find . -size 5210c
-perm xyz (xyz: chiffres octaux)
-mtime n -ctime, -atime (L’unité : le jour)
(-csec, -cmin,-chou, -msec, -mmin,-mhou, -asec –amin, -ahou)
-inum n
p. 50
Ces critères peuvent être combinés dans une expression logique
où on utilise les opérateurs:
ET : simple concaténation des critères
OU : -o
NON: !
S’il faut des parenthèses:
\( expression \)
Pour les critères avec un nombre , il faut utiliser:
+ : pour signaler l’opérateur supérieur
- : pour signaler l’opérateur inférieur
Exemple: Vos fichiers ordinaires ayant plus de un lien
find ~ -type f –links +1
p. 51
find <liste_répertoires> [options] -exec <cmd> {} \;
Les fichiers retrouvés sont passés à la commande <cmd>
comme arguments
{} représente l'emplacement de chacun des noms de
fichiers
Le point-virgule -précédé du caractère d'échappement (\)
délimite les commandes générées.
Exemple:
$ find ~ -name “tmp*” –exec rm {} \;
Cette ligne recherche dans mon compte tous les fichiers dont le
nom commence par “tmp” puis les supprime
p. 52
MERCI DE VOTRE
ATTENTION
Moncef DRIRA
p. 53