38
1 Chapitre 3: Systèmes de fichiers Version Septembre 2011 N°98 Structures d’un système de fichiers P1 0 1 Position : État : N° inode : Tables partagées Tables partagées Privé Privé P2 0 Processus 1 2 3 4 5 Nombre : Position : État : Nombre : Nb. copies : Inode Infos … N° inode : Nb. copies : Inode Infos … Tables Descripteurs Fichiers Position : Étt Table fichiers Espace utilisateur Table inodes Processus P 0 1 2 3 4 5 N° inode : Nb. copies : Inode Infos … État : Nombre : Position : État : Nombre :

Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

11

Chapitre 3: Systèmes de fichiers

Version Septembre 2011 N°98

Structures d’un système de fichiers

P1 0

1Position :État : N° inode :

Tables partagéesTables partagéesPrivéPrivé

P2 0

Proc

essu

s 12345

Nombre :…

Position :État :Nombre :

Nb. copies :Inode Infos ……

N° inode :Nb. copies :Inode Infos …

Tables Descripteurs Fichiers

Position :Ét t

Table fichiersEspace utilisateur Table inodes

Proc

essu

s P 0

12345

N° inode :Nb. copies :Inode Infos …

État :Nombre :…

Position :État :Nombre :

Page 2: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

22

Version Septembre 2011 N°99

Les périphériques

Quelques informations pour commencer

Périphériques = fichiers spéciauxFichiers b et c

Périphériques “caractères”terminal, réseaux

Périphériques “blocs”Disques, bandes, Cd-rom

Interface commune: appels systèmes

Version Septembre 2011 N°101

Propriétés d’un système de fichiers

Technologie différentes (disques, CD-ROM, CLE USB…)Montage local ou distant (NFS)

Propriétés globales spécifiquesProtections, exportation…

Montage/démontage dynamiquemount, umount (commande ou appel système)

Une hiérarchie de nomsFichiers norma répertoires spécia liens t besFichiers normaux, répertoires, spéciaux, liens, tubes…

Partitionnement des sous-hiérarchiesAllocation du média associé (blocs libre…)Deux niveaux d’organisation:

Logique (suite de blocs, unité d’allocation 1k?)Physique (secteurs, pistes, cylindres)

Page 3: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

33

Version Septembre 2011 N°102

Arborescenceet volumes

/dev/rz0g

/dev/rz0a

sharedusr

/

Root filesystem

+ partition de swap/dev/rz2a

/dev/rz0gySwap…

+ partition de swap

/dev/rz1aoracle

etud

/dev/rz2g

Syst. Fic. virtuel

Version Septembre 2011 N°103

Création/utilisation Système de fichiers

Création

EXT2Fiable, matureCréation

mkfsmkfs (Syst. Fichiers)Taille des blocksNombre d’inodes…

Utilisationmountmount/umountumount

,Support pour fsckfsckPré allocationLiens symboliques rapides

Redémarrage après crash lentEXT3

Compatible avec EXT2EXT2mountmount/umountumountType Système de fichier

Mêmes structures de données≈ EXT2EXT2 + Journalisation

Ecriture dans un journalEcriture dans le syst. fichiers

Page 4: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

44

Version Septembre 2011 N°104

Montage et démontage

Commande mount / umountMontages locaux / distantsMontages locaux / distantsVisualisation: dfexemple: mount -t ext2 -o nodev,nosuid,noexec /dev/sda3 /usr

AutomatisationFichiers: /etc/fstab/etc/init.d/* …

Version Septembre 2011 N°106

Le super-bloc

Gestion des blocsNombre blocs libres

Super-bloc … … 1 b

Gr. Blocs 0

…Descr. De gr. n b… 1 bBitm. blocs

« Liste » blocs libresBitmap blocs libre/occ.

Gestion des inodesNombre total inodes Compteur inodes libres« Liste » inodes libres

1 bBitm. blocsBitm. inodes 1 b…

n bTab. inodes …

Blocs Fichiers

Blocs libres

n bTab. blocs

…« Liste » inodes libres Bitmap inode libre/occupé

Gestion globaleTaille système fichiersIndicateur de modificationDuplication dans les groupes

Gr. Blocs n

Page 5: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

55

Version Septembre 2011 N°107

Maintien de la cohérence FSCK 1/2

Qui ?: L'administrateur

Pourquoi ?: Synchronisation (sync)Blocs: cache buffer disqueInode: Copie en mémoire disqueSuper-bloc: Copie en mémoire disque

Quand ?:Quand ?:Réparation: Crash, Coupure alimentationPrévention: Au reboot

Réparation: Attention aux pertes de données !!

Version Septembre 2011 N°108

Maintien de la cohérence FSCK 2/2

Objectifs:Objectifs: Vérifications, réparationsBlocs:

Appartenances à plusieurs inodes Non référencés

Inodes: Tailles fichier/répertoire incohérentesNombres de liens incorrectsMauvais formatsNon référencés

Super-bloc:Plus de blocs que possibleMauvais format de la liste des blocs libresTotal des blocs/inodes libres incohérentsBlocs libres manquants

Page 6: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

66

Version Septembre 2011 N°109

Montage/démontage et structures internes

N° inode :Nb. copies :Inode Infos …

SuperBloc :Inode cible :

…mount

t e t2

N° inode :Nb. copies :Inode Infos ……

N° inode :Nb. copies :

Inode cible :Inode à monter :Syst. Fichier :

SuperBloc :Inode cible :Inode à monter :

/dev/sda3

/

-t ext2

mount

Table inodesTable volumes

pInode Infos …

N° inode :Nb. copies :Inode Infos …

Syst. Fichier :

… copie mémoire

/dev/sda7

/usr

-t ext2

Version Septembre 2011 N°110

Principales arborescences 1/2

Répertoire Description

/bin Binaires

/dev Périphériques

/etc Fichiers de configuration

/lib Bibliothèques de base

/tmp Fichiers temporaires

/mnt Montages nfs

/var Fichiers de log, mail, impression, …/var Fichiers de log, mail, impression, …

/home Répertoires utilisateurs

Page 7: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

77

Version Septembre 2011 N°111

Principales arborescences 2/2

Répertoire Description

/usr/X11R6 Noyau X Window

/usr/bin Binaires autres paquetages

/usr/include En-têtes

/usr/lib Bibliothèques autres paquetages

/usr/man Manuels en ligne

/usr/src Source noyau, …

/usr/local Installation locales au site /usr/local Installation locales au site

/usr/share Fichiers paquetages de l'instal.

/usr/sbin Binaires administration

Version Septembre 2011 N°112

Filesystem Hierarchy Standard (2004)

BinBin : Essential command binaries

Root filesystem Root filesystem (extrait)(extrait)BinBin : Essential command binariesBootBoot : Static files of the boot loaderdevdev : Device filesetcetc : Host-specific system configurationliblib : Essential shared libraries and kernel modulesmediamedia : Mount point for removeable mediamntmnt : Mount point for mounting a filesystem temporarilyoptopt : Add on application software packagesoptopt : Add-on application software packagessbinsbin : Essential system binariessrvsrv : Data for services provided by this systemtmptmp : Temporary filesusrusr : Secondary hierarchyvarvar : Variable data

Uniformisation des distributionsUniformisation des distributions

Page 8: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

88

Version Septembre 2011 N°113

Organisation logique: la réalité

Une forêt de liensUn nom = un lienUn nom un lienLiens:

Entre père et filsEntre frères

Mise en oeuvreCommandes associées: ln et unlinkLiens: dur et symboliquesPar rapport aux inodes:

lien en dur [N:1] un inodelien symbolique [1:1] un inode

Version Septembre 2011 N°114

Organisation logique: la réalité

/

usrLien en dur

etud

shared

home

d2

etud1oracle

.profile

Gprofileetud2

Même partition

Un seul fichier

Lien symbolique

≈Raccourcietud2

etud1.profile

Lien en durLien symbolique

Pas de vérification

Page 9: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

99

Version Septembre 2011 N°115

Protections: groupes / utilisateurs

Principaux élémentsGrain: le fichierOpérations:

lecture, écriture, exécution/traversée

Objet: utilisateur, groupe, autresNe pas confondre:

Groupe de l'utilisateur et groupe d'un fichierGroupe de l utilisateur et groupe d un fichierFichier /etc/groupCommande newgrp (processus)Commande chgrp (fichier)Liens symbolique / physique

Version Septembre 2011 N°116

Protections: de fichier/répertoire

Les fichiersr: permission de lire le fichier u g ow: permission d’écrire le fichier, i.e. ajouter, supprimer ou modifier les données qu’il contientx: permission d’exécuter le fichier

Les répertoiresr: permission de lire, donc de lister le répertoire

mais pas forcément d’en lire les fichiers…w: permission d’écrire dans le répertoire et donc de supprimer l fi hi ’il iles fichiers qu’il contientx: permission de traverser le répertoire. Sans cette permission, toute opération est interdite. Cette interdiction est héritée par tous les fichiers et répertoires qu’il contient

“Un fichier est protégé contre une modification par ses propres permissions, et contre la suppression par les permissions du répertoire qui le contient.“

Page 10: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

1010

Version Septembre 2011 N°117

Protections:exemple

rwxrwxrwx REP-1

rwxrwxrwx

rwxrwxrwxrwxrwxrwx REP-2 REP-3

FIC-1

PL,PROF PL,PROF

PL,PROF

rwxrwxrwx

rwxr-xr--

FIC-1

rwxrwxrwx

REP-5

REP-4

LIEN-1

rwxr----- PL,PROF

PL,PROF

PL,PROF

PL,PROF

REP-1/REP-2/REP-4/REP-6

REP-1/REP-3/REP-5/LIEN-1

REP-1/REP-2/REP-4/REP-6

LIEN-1 =

rwxrwxrwx

REP-6

FIC-2

r-xr-xr-xPL,PROF

PL,PROF

Utilisateurs: RC, PROF / JPP, ETUD1

Commandes: ls, cd, touch

REP 1/REP 2/REP 4/REP 6

Les droits qui comptent(voir chmod)

Version Septembre 2011 N°120

Structure générale d'un fichier

Qualités requises:Evolution de la taille des fichiersEvolution de la taille des fichiersAccès efficaceNombre de fichiers ?Accès multi-processusAccès multi-utilisateurs

Une structure interneUne structure interneDes appels systèmes appropriésDes appels systèmes appropriés

Page 11: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

1111

Version Septembre 2011 N°121

Structure générale d'une inode 1/2

Copie disqueCopie disque:PropriétairepGroupe propriétaireType fichierDroits d'accèsDates (accès, modification, inode)Nombres de liensAdresses disque (blocs)Taille fichierRéférence ACL au fichier et répertoire

inode = anglais (i-noeud)

Version Septembre 2011 N°122

Copie mémoire = Copie disque + …Verrouillé ?

Structure générale d'une inode 2/2

Verrouillé ?Processus en attenteCopie et image disque différentesPériphérique logiqueNuméro inodePointeurs inodes (une par liste)

liste des inodes libresliste des inodes (adressage calculé)

Nombre copies actives

Copie disque du super bloc

Page 12: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

1212

Version Septembre 2011 N°123

Inode de fichier/répertoire

5007105di i

5007105

é t i

UIDGID

T fi hiordinairerwxr-xr--

19/10/200510/10/200512/10/2005

5

653450 1 … 10

répertoirerwxr-xr--

19/10/200510/10/200512/10/2005

3

3450 1 … 10

Type fichierProtectionsDate lecture

Date modificationDate inode

Nombre liensContenu

Taille

cont

enu aaaaaaaaaaa

bbbbbcccccc

ddddddddddd

cont

enu N° Nom Un format

ls, cd, …

Version Septembre 2011 N°124

Arborescence et inodes

2010 .8010 ..1003 D1

2010

1003 .201000

3

Infos inode

Infos inode

2010 ..1067 D25790 F1

10

1067 .1003 ..10

67

aaaaaaaaaaacccccccbbbbbbbbbbbbbbbb57

90

Infos inodeInfos inode

Page 13: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

1313

Version Septembre 2011 N°125

Organisation physique0

1

2

Blocs de donnees

Taille max (blocs) =

.

...

.

3

45

6

7

8

9

simple

10 +256 +

2562 +2563

Taille max (blocs) = 10 + 256 + 2562 + 2563

ls –il

.

....

.

.........

.

...

.

.

....

double

triple

Version Septembre 2011 N°126

Organisation physique: Comprendre les choix

Choix d'organisationsBlocs contiguësTable des blocsCompactage, nettoyageTaille de blocsAccès indirectRépertoire / fichier p

ConséquencesFragmentationEfficacité (espace / temps)Limite des fichiers

Page 14: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

1414

Version Septembre 2011 N°127

Nom attributst_mode

Description Mot = bits de protection

Information sur fichiers: norme POSIX

st_ino st_dev st_nlinkst_uidst_gidst_size

i

pIdentif. Fich.: num. i-node Périphérique du fichier Nombre de liens Ident. utilisateur Ident. groupeTaille en octets D d è l st_atime

st_mtime st_ctime

Date dern. accès lecture Date dern. accès écriture Date dern. modification

Version Septembre 2011 N°128

Accès aux fichiers: norme POSIX

Routinefd = creatcreat (nom,mode)

Descriptioncréation nouveau fichier

fd = openopen (fichier,mode) e = closeclose (fd) n = readread (fd,buff,nb) n = writewrite (fd,buff,nb) p = lseeklseek (fd,dep,deb) e = statstat (nom,&buff) fd kdikdi ( d )

ouverture fichier lecture/ecriturefermeture fichier ouvert lecture fichier --> tampon écriture tampon --> fichier déplacement dans fichier récupération info. fichiers

é i é i fd = mkdirmkdir (nom,mode) e = rmdirrmdir (nom) e = linklink (nom1,nom2)e = unlinkunlink (nom) e = chdirchdir (nom_rep) e = chmodchmod (nom,mode)

création répertoire suppression répertoirecréation nouvelle Entréesuppression Entréechangement répertoire de Travailmodification protection de fichier

Page 15: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

1515

Version Septembre 2011 N°129

Contenu inode: statstat, fstatfstat, lstatlstat

Descripteur fichier

Nom fichier

Informationsinode

lstat: informations sur le lien symbolique luilstat: informations sur le lien symbolique lui--mêmemêmefstat: accès direct par le descripteur ce fichierlstat accès par le nom de fichierlstat accès par le nom de fichierMise à jour des tables internes (noyau)

Version Septembre 2011 N°130

Informations sur un fichier

#include <sys/types.h>#include <sys/stat.h>#include <unistd h>#include <unistd.h>int main () {

int fd, e;struct stat buf;... e = statstat ("/etc/passwd",&buf);/* autre possibilité */fd ("/ t / d" )fd = openopen ("/etc/passwd", ...);e = fstatfstat (fd, &buf);printf ("Nombre liens: %d", buf.st_nlink);

}Macros POSIX: S_ISREGS_ISREG(m), S_ISDIRS_ISDIR(m), I_SRWXUI_SRWXU

Commande(s) associée(s): lsStructure(s) interne(s): inode

Page 16: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

1616

Version Septembre 2011 N°131

statstat, fstatfstat, lstat lstat (compléments)

Protections + type de fichiers

Numéro dans /etc/passwd/etc/passwd

Numéro dans /etc/group/etc/group

pp

Taille en octets

Dates : modification Inode, accès et modifications du

contenucontenu

N° inode sur disque

Nombre liens en dur

+ st_dev et r_dev : majeur/mineur+ st_blksize et st_blocks

! !

Version Septembre 2011 N°132

Obtenir le type d’un fichier

struct stat

st_modest_mode

.

.

.

Extraire le type

<sys/stat.h>

.

Page 17: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

1717

Version Septembre 2011 N°133

Obtenir les droits d’un fichier

if(st->st_mode & S_IRUSR) …

struct stat

st_modest_mode

.

.

.

if(st->st_mode & S_IWUSR) …

if(st->st_mode & S_IXUSR) …

if(st->st_mode & S_IXGRP) ……

Macros sur les protections : voir openopen

<sys/stat.h>

.if(st->st_mode & S_IXOTH) …

Version Septembre 2011 N°134

Obtenir le nom de login / groupe

lahire:x:1543:34:Philippe Lahire:/home/lahire:bin/bash

t t d* t id ( id t id)

struct stat

st_uidst_uid

.

.=

struct passwd* getpwuid (uid_t uid)

st gidst gid

prof:x:34:Professeurs:lahire …

st_gidst_gid

struct group* getgrgid (gid_t gid)

Voir getpwent (3)getpwent (3)

= /etc/passwd

/etc/group

+/etc/shadow

Page 18: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

1818

Version Septembre 2011 N°135

Synthèse getpwent(3)

Adresse de la structure si résultat OKNULL si uid ou gid n’existe pasChamps « passwd »,« passwd_gr » : adminstrateur

Version Septembre 2011 N°136

Information sur les périphériques

struct stat.

macros

st_dev: du S.F. qui contient le fichier

#include <sys/types.h>#include <sys/types.h>int minor (dev_t d)int minor (dev_t d)int major (dev_t d)int major (dev_t d)

st_devst_dev

.

.

st_rdevst_rdev

_ qst_rdev: du fichier spécial (si /dev/…)Majeur = classe de l’appareilMineur = numéro d’instance de la classe création par mknod(8) ou /dev/MAKEDEV

Page 19: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

1919

Version Septembre 2011 N°137

Manipuler des dates (1)

struct stat. fonctions Retour: NULLNULL si ¬OK

Dates GMT : nb sec. depuis 01/01/1970 à 12 PM

#include <time.h>#include <time.h>struct tm* localtime (const time_t t)struct tm* localtime (const time_t t)struct tm* gmtime (const time_t t)struct tm* gmtime (const time_t t)st_mtimest_mtime

.

st_ctimest_ctime

st_atimest_atime

pst_atimest_atime ((read), st_mtimest_mtime (write) st_ctimest_ctime ((creat, chmod, chown…)localtimelocaltime : fuseau (config. Syst.) + heure été/hivergmtimegmtime : temps GMT universel

Version Septembre 2011 N°138

Manipuler des dates (2)

timetime

Passer d’un Format à un autrePasser d’un Format à un autre

mktimemktime

asctime, asctime, asctime_rasctime_r

ctime,ctime,ctime_rctime_r

Page 20: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

2020

Version Septembre 2011 N°139

Manipuler des dates (3)

en secondes

À

fourni par « l’utilisateur »

À partir d’un struct tmtm

ctime_r + asctime_r: résultat = pointeur sur «ctime_r + asctime_r: résultat = pointeur sur « buf »»Transformation de la date (seconde ou struct tm) en chaîne de caractèresLe résultat est internationaliséLe résultat est internationalisé

Version Septembre 2011 N°140

Manipuler des dates (4)

Si ¬NULL: modification

d l d tde la « date »

Date au format

Heure du système

« struct tm »

Date au format « time_t »

date(1) = printf(« %s\n », ctime(time())ctime(time()))

Page 21: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

2121

Version Septembre 2011 N°141

Manipuler des dates (5)

Buffer + taille pour la sortie

Heure à formater

Voirstrftime (3)

Exemple de format

Version Septembre 2011 N°142

Internationalisation (1)

Agir sur les variables d’environnement :LC TIME : conventions utilisées pour les datesLC_TIME : conventions utilisées pour les datesLC_MONETARY, LC_COLLATE, LC_TYPE, LC_NUMERIC, LANGSigne monétaire, jeu de caractères, ordre alphabétique…

LC_ALL: S’applique à tous

enen (anglais)dede (allemand) ……

Page 22: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

2222

Version Septembre 2011 N°143

Internationalisation (2)

Paramétrer un programme pour l’internationalisation :#include <locale.h>setlocale (LC_ALL, « »);setlocale (LC_ALL, « fr_FR »);…

Laisser la libertéLaisser la libertéImposerImposer

time_t

struct tm

char …[MAX]

Version Septembre 2011 N°144

Manipuler les dates d’un fichier (1)

Nom du fichier

Nouvelles « dates »

t ti

La date associée à l’inode est mise à jourtimes = NULL ⇒ date couranteil faut avoir les droits en écriture sur le fichier

st_atimest_mtime

Page 23: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

2323

Version Septembre 2011 N°145

Manipuler les dates d’un fichier (2)

#include <sys/types.h>#include <utime.h> i t i () int main () {

int fd, e;struct utimbuf tbuf;... tbuf.actime = ... tbuf.modtime = ... e = utimeutime ("/etc/passwd", &tbuf);( p , f);

}

Commande(s) associée(s): ls, touchStructure(s) interne(s): inode

Version Septembre 2011 N°146

Gérer le propriétaire d'un fichier(1)

d f h

Kernel: CAP_CHOWN

Nom du fichier

Propriétaire& groupe

Descripteur de fichier

chown ≈ fchownlchown lchown (lien symbolique) chown chown (fichier référencé)MAJ de st_ctime st_ctime (c’est normal?)

fichier

Il y a aussi chgrpchgrp

Page 24: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

2424

Version Septembre 2011 N°147

Gérer le propriétaire d'un fichier (2)

#include <sys/types.h>#include <unistd.h>int main () int main () {

int fd, e;... e = chownchown ("/etc/passwd", 1014, 50);/* autre possibilité */fd = openopen ("/etc/passwd", ...);e = fchownfchown (fd, 1014, 50);

}}

Commande(s) associée(s): chownStructure(s) interne(s): inode

Version Septembre 2011 N°148

Créer un lien (en dur)

Nom initial

Sorte d’alias…Incrémentation du nombre de liens en dur

Nom du lien

Incrémentation du nombre de liens en durAppartenance au même Système de FichiersPas de liens en l’air (gestion par le système)Efficacité: pas de fichier intermédiaireMais: retrouver les noms « à la main »…

Page 25: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

2525

Version Septembre 2011 N°149

Créer un lien symbolique

Nom initial

Nom du lien

nombre de liens en dur sur newpathnewpath: 12 inodes : celle du lien et celle du fichier ⇒ Efficacité vs lisibilité

Liens en l’air possiblesLien à travers les systèmes de fichiers

Version Septembre 2011 N°150

Supprimer un lien

d f hNom du fichier

Effacement d’un lien en durEffacement du fichier si c’est le dernierIl faut avoir les droits…Il faut avoir les droits…

Page 26: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

2626

Version Septembre 2011 N°151

Création/suppression d'un lien

#include <unistd.h>int main () int main () {

int e;... e = linklink ("/etc/passwd", "/tmp/passwd");e = symlinksymlink ("/etc/passwd", "/tmp/passwd");e = symlinksymlink ("/etc", "/tmp/etc");

Le fichier lien symbolique

e = unlinkunlink ("/tmp/passwd"); e = unlinkunlink ("/tmp/etc");

}Commande associée(s): ln, unlink, rmStructure(s) interne(s): inode

Version Septembre 2011 N°152

Rappel sur les droits d’accès (open)

Pour donner des droits

Le propriétaire

Le Groupe propriétairee G oupe p op éta e

Les autres

Page 27: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

2727

Version Septembre 2011 N°153

Vérifier l’accès à un fichier

Nom du fichier

modemode = droit de …

fichier

Droits demandés

R_OKR_OK: lectureW_OKW_OK: écritureX_OKX_OK: exécution ou traverséeF_OKF_OK: existence

Version Septembre 2011 N°154

Gérer les protections d’un fichier (1)

Nom du fichierfichier

droits

DescripteurDe fichier

modemode = combinaison des 3 permissions pour les 3 catégories et de 3 indicateurs⇒⇒ S_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IROTHS_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IROTH⇒⇒ S_ISUID | S_IRGRP | S_IROTHS_ISUID | S_IRGRP | S_IROTH

Indicateurs…

Page 28: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

2828

Version Septembre 2011 N°155

Gérer les protections d’un fichier (2)Fichiernormal

(*)

Répertoire

(*)

3 indicateurs : interprétation ≠ (fichier normal / répertoire)(*) gestion de verrou si ¬exécutable (voir cours)

Version Septembre 2011 N°156

Gérer les protections d'un fichier (3)

#include <sys/types.h>#include <sys/stat.h>int main () {

int fd, e;... e = chmodchmod ("/etc/passwd", S_IRWXU);/* autre possibilité */fd = openopen ("/etc/passwd", ...);pp ( p , );e = fchmodfchmod (fd, S_IRWXU);

}

Commande(s) associée(s): chmodStructure(s) interne(s): inode

Page 29: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

2929

Version Septembre 2011 N°157

Manipuler le masque de protection

Nouveau masque

Utilisation des 9 macros Utilisation des 9 macros 3 permissions pour les 3 catégories

modemode idem chmodchmodmodemode = idem chmodchmodS_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IROTHS_IRUSR | S_IWUSR | S_IXUSR | S_IRGRP | S_IROTH

Mais : marque une interdictionSe combine avec ce qui est donné par open: ETS’applique au futur fichiers créés

Version Septembre 2011 N°158

Protections de fichier et processus (1)

Processus PP

RUIDEUIDSUID

RGIDEGIDSGID

real user-id

effectiveuser-id

real group-id

effectivegroup-id

saved set saved setsaved setuser-id

sa ed setgroup-id

Page 30: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

3030

Version Septembre 2011 N°159

Protections de fichier et processus (2)

Processus PP=Sauf si

login + group(s)=sauf si

RUIDEUIDSUID

RGIDEGIDSGID

set-user-id sauf si set-group-id

ownerowner

Restaurer aprèsRestaurer après«« set/drop privilegeset/drop privilege »»

Fichier de PP

ou

ownerownergroupgroup

OU: utilisation de :setuid, setgid (posix)setreuid, setregid…Avoir les privilèges

Différents effets : cours sur les processus

Contrainte (si EUID != 0):new = RUID/SUID

Version Septembre 2011 N°160

Appels systèmes et liens symboliques

S’applique surS’applique sur…

Le fichier lien symbolique :Le fichier lien symbolique :lchown, chown, lstat, readlink, unlinkremove, rename

Le fichier luiLe fichier lui--même :même :chmod, creat, chown, link, mkdir, open, stat access, chdir, exec, mkfifo, opendir, pathconf, truncate, rename

Page 31: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

3131

Version Septembre 2011 N°161

Créer/Supprimer un répertoire (1)

Nom du répertoire

droits

S_ISGIDS_ISGID : droits du gr. Du répertoire = droits de ses fichiersS_ISVTXS_ISVTX : création de fichiers ¬renommer & ¬supprimerS_IX… S_IX… : X est pour « traverser »rmdirrmdir: le répertoire doit être vidermdirrmdir : fonctionne comme unlinkunlink

Version Septembre 2011 N°162

Créer/supprimer un répertoire (2)

#include <sys/types.h> #include <sys/stat.h> i t i () int main () {

int e;... e = mkdirmkdir ("/tmp/myrep", S_IWUSR);e = rmdirrmdir ("/tmp/myrep");

}

Commande(s) associée(s): mkdir, rmdir, rmStructure(s) interne(s): inode

Page 32: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

3232

Version Septembre 2011 N°163

Ouvrir un répertoire

Nom du répertoirerépertoire

DIRDIR : un peu comme FILE (section 3)Curseur placé sur la 1ère entréeCombien d’entrée minimum?

Version Septembre 2011 N°164

Parcourir un répertoire

«descripteur»

N° inodeNom fichier

Seul endroit où est stocké un nom de fichierAvance le curseur

Et le chemin ?

Page 33: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

3333

Version Septembre 2011 N°165

Réinitialiser/Fermer un répertoire

«descripteur»

(*)

(**)

(*) Position sur la 1ère entrée (affecte table noyau)(**) Affecte la TDF et les tables du noyau(**) rend les ressources aux système

(**)

Version Septembre 2011 N°166

Réinitialiser/Fermer un répertoire

«descripteur»

(*)

(**)

(*) Position sur la 1ère entrée (affecte table noyau)(**) Affecte la TDF et les tables du noyau(**) rend les ressources aux système

(**)

Page 34: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

3434

Version Septembre 2011 N°167

Accès au contenu d'un répertoire

#include <sys/types.h>#include <dirent.h>i t i () {int main () {

DIR* dir;struct dirent * entry;dir = opendiropendir ("/var"); entry = readdirreaddir (dir);printf ("%s - %d", entry->d_name, entry->d_ino);closedirclosedir(dir);

}}seekdirseekdir, telldirtelldir, ...

Commande(s) associée(s): ls, mv, …Structure(s) interne(s): tables des fichiers

Version Septembre 2011 N°168

Manipuler le répertoire courant (1)

Nom de fichier

«descripteur»

fichier

Affecte le contenu d’un processusAllocation de bufbuf + taille allouée

Chemin absolu

Page 35: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

3535

Version Septembre 2011 N°169

Manipuler le répertoire courant (2)

#include <unistd.h>int main () { {

int fd, e;... e = chdirchdir ("/etc");/* autre possibilité */fd = openopen ("/etc", ...);e = fchdirfchdir (fd);

}}Table des fichiers: Changement nombre de références

Commande(s) associée(s): cdStructure(s) interne(s): Tables des fichiers, processus

Version Septembre 2011 N°170

Renommer / Déplacer un fichier

Fichier de départ

newpathnewpath dans le même système de fichiersAutres liens en du non affectés

Fichier d’arrivée

Autres liens en du non affectésSi cible existe elle est écraséeNombreuses restrictionsChemin correct, cible: répertoire non vide,…

Commande mvmv

Page 36: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

3636

Version Septembre 2011 N°171

Synchronisation Disque/buffer

Descripteur de fichier

syncsync: synchronise les buffers (écriture) et disques fsyncfsync: idem mais pour un fichierDifférer l’écriture ⇒ accélérer les échangesToutes les xx sec. + arrêt de la machine

Version Septembre 2011 N°172

Synchronisation Disque/buffer

#include <unistd.h>int main () (){

int fd, e;... /* Ouverture fichier en écriture */ fd = openopen ("/etc/passwd", ...);...

ff (fd)e = fsyncfsync (fd);syncsync () /* S. F. */

}Commande associée(s): syncStructure(s) interne(s): Tables, buffer, inode

Page 37: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

3737

Version Septembre 2011 N°182

Système de fichier /proc (1)

Processus en cours

Autres informations : mémoire, noyau, paramètres systèmes, …

Version Septembre 2011 N°183

Système de fichier /proc (2)

Systèmes de fichierssupportés

Information sur la mémoire

Page 38: Chapitre 3: Systèmes de fichiersdeptinfo.unice.fr/~lahire/enseignement/SYSL3/L3... · Taille système fichiers Indicateur de modification Duplication dans les groupes Gr. Blocs n

3838

Version Septembre 2011 N°184

Système de fichier /proc (3)

Information sur la table des volumes montés

Version Septembre 2011 N°185

Système de fichier /proc (4)

Répertoire courantRépertoire courantExécutableExécutable

Répertoire RacineRépertoire Racine

Propriétaire, PIDPropriétaire, PID

Variables environnementVariables environnement