Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
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 :
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)
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
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
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
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
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
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
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.“
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
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
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
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
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
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
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>
.
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
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
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
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()))
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) ……
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
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
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 »…
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…
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
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…
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
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
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
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
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 ?
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
(**)
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
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
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
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
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