Vous êtes sur la page 1sur 60

Gestion

des fichiers sous Linux

Page 1
Gestion
des fichiers sous Linux

Notion de chemin d’accès

Page 2
 La ligne de commande donne des informations :
Utilisateur Répertoire
courant courant

root@MyServ:/home/moi# |

Nom de la # : Superutilisateur
machine $ : Utilisateur normal

 Autre exemple
Sous répertoire du home de moi
« /home/moi/Documents/software/ »

moi@MyServ:~/Documents/software$ |

~ : Répertoire home de moi (home/moi)

Page 3
 La commande « pwd » permet de savoir quel est le répertoire
courant
 La commande « ls » permet de lister les fichiers contenus dans un
répertoire
 La commande « cd » permet de changer de répertoire
 Les symboles suivants ont une signification particulière :
 « . » : Le point désigne le répertoire courant
• Exemple : Exécuter un script depuis le répertoire courant
root@MyServ:/home/moi# ./script.sh

 « .. » : Les 2 points désignent le répertoire parent


• Exemple : Se déplacer dans le répertoire parent
root@MyServ:/home/moi/Docs# cd ..

 « ~ » : Désigne le répertoire home de l’utilisateur courant


root@MyServ:/home/moi/Docs# cd ~

Page 4
 Il existe 2 méthodes pour spécifier un chemin dans le système de
fichiers
 Chemin relatif : Dépend du répertoire courant
 Chemin absolu : Débute à la racine du système (« / »)
 Exemples relatif absolu
root@MyServ:/home/moi# cd Documents = root@MyServ:/home/moi# cd /home/moi/Documents

root@MyServ:/home/lui# cd Documents root@MyServ:/home/lui# cd /home/moi/Documents


root@MyServ:/home/lui/Documents/# | = root@MyServ:/home/moi/Documents/# |

root@MyServ:/etc/apache# cd ../ root@MyServ:/etc/apache# cd /etc


root@MyServ:/etc/# | = root@MyServ:/etc/# |

moi@MyServ:~ # cd Docs lui@MyServ:/etc# cd /home/moi/Docs


moi@MyServ:~/Docs# | = root@foulen :/home/moi/Docs # |

 Attention aux chemins relatifs à l’intérieur d’un script


 Le script peut-être exécuté depuis n’importe où
 Le répertoire courant est donc différent à chaque fois
Page 5
Eléments dans la désignation d’un fichier

 Il existe 2 commandes pour extraire à partir de la désignation d’un


fichier :
 son nom (commande basename)
 son chemin d’accès (commande dirname)
 Exemples
root@MyServ:/home/moi$ basename /home/mikel/bin/monscript.sh
monscript.sh

root@MyServ:/home/moi$ dirname /usr/etc/xml/xml-core.xml


/usr/etc/xml

 Attention : si vous obtenez comme résultat de dirname le


caractère « . », ceci signifie que le fichier se trouve dans le
répertoire courant. On peut améliorer cet affichage comme suit :
$ res=`dirname fich.ier`
$ if test "$res" = "." ; then echo $PWD; else echo $res ; fi

Page 6
 Dans quel répertoire je suis situé ?
ouerghi@ouerghi-VirtualBox:~/Documents/rep1$

 Par quel chemin relatif équivalent peut-on remplacer celui-ci ?


ouerghi@ouerghi-VirtualBox:/etc$ cd /etc/ppp/peers/

 Que m’indiquera le résultat de la commande suivante ?


ouerghi@ouerghi-VirtualBox:~/Documents/pub$ pwd

 Commande la plus courte possible pour revenir dans le répertoire


rep2, situé à la racine de mon répertoire « home » ?
ouerghi@ouerghi-VirtualBox:~/rep1/sousrep1$

Page 7
 Dans quel répertoire je suis situé ?
ouerghi@ouerghi-VirtualBox:~/Documents/rep1$

 Réponse : Dans le répertoire « /home/ouerghi/Documents/rep1 »


 Par quel chemin relatif équivalent peut-on remplacer celui-ci ?
ouerghi@ouerghi-VirtualBox:/etc$ cd /etc/ppp/peers/

 Réponse : « ppp/peers » ou bien « ./ppp/peers »


 Que m’indiquera le résultat de la commande suivante ?
ouerghi@ouerghi-VirtualBox:~/Documents/pub$ pwd

 Réponse : « /home/ouerghi/Documents/pub »
 Commande la plus courte possible pour revenir dans le répertoire
rep2, situé à la racine de mon répertoire « home » ?
ouerghi@ouerghi-VirtualBox:~/rep1/sousrep1$

 Réponse : ouerghi@ouerghi-VirtualBox:~/rep1/sousrep1$ cd ~/rep2

Page 8
Gestion
des fichiers sous Linux

Droits d’accès

Page 9
 Linux est un système multi-utilisateurs
 Plusieurs utilisateurs se partagent l’espace disque
 Les fichiers et répertoires d’un utilisateur ne doivent pas être
accessibles par les autres
 Les fichiers de configuration du système doivent être protégés
 Nécessité de spécifier des droits pour chaque fichier/répertoire
 Plusieurs types de droits : Lecture (R), écriture (W), exécution (X)
 Ces droits s’appliquent pour 3 groupes d’utilisateurs :
• Le propriétaire (user) du fichier
• Le groupe (group) propriétaire (Tous les utilisateurs membre du
groupe)
• Les autres (others). Désigne tous les utilisateurs non membres des 2
précédents
 Les droits sont responsables d’un grand nombre d’erreurs de
configuration
Page 10
 Nous avons vu qu’il existe 3 types de droits : r, w et x
 Ces droits n’ont pas la même signification pour un fichier que
pour un répertoire
 Pour un fichier :
 r : Lecture (afficher)
 w : Ecriture (modification)
 x : Exécution (exécution d’un script)
 Pour un répertoire
 r : Lire le contenu, lister les fichiers (avec ls par exemple)
 w : Modifier le contenu, créer et supprimer des fichiers (avec les
commandes « cp », « mv », « rm »)
 x : Permet d’accéder aux fichiers du répertoire. Mais aussi de
naviguer dans les sous-répertoires (avec « cd »)
 En général, le droit w est souvent associé au droit x
Page 11
 La commande « ls -l» permet d’afficher les droits qui s’appliquent
root@MyServ:/home/moi/Documents# ls -l
total 20
-rw-r--r-- 1 moi moi 0 2008-08-15 14:42 projet.txt
-rw-rw-r-x 1 moi compta 7406 2008-08-15 14:44 rapport2006.ods
-rw-rw-r-- 1 moi moi 7363 2008-08-15 14:44 rapport-activite.odt
-rw-rwxr-x 1 moi compta 255 2008-08-15 14:52 script.sh

 Signification des différents champs


Groupe
Taille Nom du fichier
propriétaire

rw- rwx r-x moi compta 255 2008-08-15 14:52 script.sh

propriétaire autres Utilisateur Groupe Date/heure modif


propriétaire propriétaire

Propriétaire : Lecture, écriture


Groupe : Lecture, écriture et exécution
Autres : Lecture et exécution

Page 12
 Le droit « w » accordé à un répertoire permet :
 D’y effacer des fichiers quels que soient le propriétaire et les droits qui
s’appliquent à ces fichiers
 Quand il est donné à un groupe, n’importe quel utilisateur de ce groupe peut
supprimer des fichiers (dangereux)
 Les droits ne s’appliquent pas au « super-utilisateur »
 Il a tous les droits sur tout le système de fichiers
 C’est une très grande responsabilité puisque sous Linux tout ou presque
repose sur les fichiers
• La tendance évolue vers une utilisation très modérée voire interdite du compte
« root »
 Le droit « x » accordé à un répertoire est un préalable indispensable pour
exercer des droits sur les fichiers contenus
 L’utilisateur qui crée un fichier en devient le propriétaire
 Ce fichier aura comme groupe propriétaire, le groupe primaire du
propriétaire (Groupe principal auquel appartient le propriétaire)

Page 13
 Quel(s) utilisateur(s) pourra(ont) se déplacer dans le répertoire
suivant ?
drwxr-x--- 26 moi marketing 4096 2008-08-28 16:11 monrepertoire

 Qui pourra créer de nouveaux fichiers dans ce répertoire ?


drwxr-xrw- 26 lui marketing 4096 2018-08-28 16:11 bilans

 Soit le fichier suivant :


-rwxr--r-- 26 sarah compta 25140 2018-08-28 16:11 rapport2018.odt

 Situé dans le répertoire suivant :


drwxrwxrwx 26 lui compta 4096 2018-08-28 16:11 rapports

Qui pourra effacer ce fichier ?

Page 14
 Quel(s) utilisateur(s) pourra(ont) se déplacer dans le répertoire
suivant ?
drwxr-x--- 26 moi marketing 4096 2018-08-28 16:11 monrepertoire

 Réponse : « moi » et les membres du groupe « marketing »


 Qui pourra créer de nouveaux fichiers dans ce répertoire ?
drwxr-xrw- 26 lui marketing 4096 2018-08-28 16:11 bilans

 Réponse : Tout le monde sauf les membres du groupe « marketing »


 Soit le fichier suivant :
-rwxr--r-- 26 sarah compta 25140 2018-08-28 16:11 rapport2016.odt

situé dans le répertoire suivant :


drwxrwxrwx 26 lui compta 4096 2018-08-28 16:11 rapports

 Qui pourra effacer ce fichier ?


• Réponse : Tout le monde malheureusement !!!

Page 15
Gestion
des fichiers sous Linux

Les commandes de base

Page 16
Déterminer le type d’un fichier

 La commande file permet de déterminer le type d'un fichier.


 Pour chaque fichier valide passé en paramètre, cette commande
tente de déterminer le type de données qu'il contient et affiche cette
information et éventuellement d'autres informations comme les
dimensions pour une image ou les codecs.
Dim moi@MyServ:~$ file fichier.txt lecontenu.pdf myprocess.c /home
fichier.txt: UTF-8 Unicode text
lecontenu.pdf: PDF Document, version 9.0.0
myprocess.c: C source, ASCII Text
/home: directory

moi@MyServ:~$ file apropos.1.gz


apropos.1.gz: gzip compressed data, from Unix, max compression

moi@MyServ:~$ file 64x64x32.png


64x64x32.png: PNG image, 64 x 64, 8-bit/color RGBA, non-interlaced

moi@MyServ:~$ file lune_de_miel.mp4


lune_de_miel.mp4: ISO Media, MPEG v4 system, version 1

Page 17
Obtenir des informations par stat

La commande stat permet en fonction des options données d’afficher


l’état d’un fichier ou d’un système de fichiers (type, taille, dates de
création, dernier accès, dernière mise à jour, …).
D moi@MyServ:~$ stat index.htm
File: "index.htm"
Size: 17137 Blocks: 40 IO Block: 8192 regular file
Device: 8h/8d Inode: 23161443 Links: 1
Access: (0644/-rw-r--r--)
Uid: (17433/comphope) Gid: ( 32/ www)
Access: 2007-04-03 09:20:18.000000000 -0600
Modify: 2007-04-01 23:13:05.000000000 -0600
Change: 2007-04-02 16:36:21.000000000 -0600

moi@MyServ:~$ stat -f /etc/hosts


File: "/dev/sda"
ID: 0 Namelen: 255 Type: tmpfs
Block size: 4096 Fundamental block size: 4096
Blocks: Total: 2560 Free: 2560 Available: 2560
Inodes: Total: 126428 Free: 125966

moi@MyServ:~$ stat -c %s ~/test.txt


12

Page 18
Afficher le contenu d’un répertoire

 La commande ls permet d’afficher une liste de fichiers dans un


répertoire spécifié (à défaut le répertoire courant)
ls
ls /home

 Elle permet également d’afficher les divers propriétés connues des


fichiers passés en arguments (avec les options comme
-l : liste longue,
-i : numéro du i-nœud,
-a : tous les fichiers y compris les fichiers dont le nom commence
par un « . »,
-R : Afficher récursivement le contenu des sous-répertoires, etc.)
ls –l monfich.ier
ls –l /home/foulen/public/fic???.txt
ls –il *.c *.py
ls –R /home/foulen

Page 19
Afficher le contenu d’un fichier texte

 Plusieurs commandes permettent de réaliser l’affichage d’un


fichier texte : cat, tac, more, less, head, tail, nl, …

 Exemples
 Afficher le fichier « toto.txt »
cat toto.txt

 Afficher le fichier « toto.txt » page/page


more toto.txt

 Afficher les 5 premières lignes du fichier « toto.txt »


head -5 toto.txt

 Afficher les lignes 5 à 10 du fichier « toto.txt »


head 10 toto.txt | tail -5

 Afficher les lignes numérotées du fichier « toto.txt »


nl toto.txt

Page 20
 La commande « cp » copie des fichiers source vers une ou
plusieurs destinations
 Syntaxe :
cp [OPTION]... SOURCE... DIRECTORY

 Exemples
 Copie le fichier « toto.txt » vers « /home/moi »
cp toto.txt /home/moi

 Copie tous les fichiers du répertoire « /home/lui » vers « /home/moi »

 /home/lui/*
cp
Copie le rep/home/moi
« /home/lui » tout entier vers « /home/moi »

cp -r /home/lui/ /home/moi
 Copie en conservant les droits et l’appartenance (-a)

cp -a /home/lui/rapport.odt /home/moi

Page 21
 Copier un fichier revient à créer un nouveau fichier
 Identique à l’original
 C’est donc l’utilisateur qui a effectué la copie qui devient le
propriétaire
 A moins d’utiliser l’option –a
 Exemple :
Je suis connecté en tant que root

root@MyServ:/home/lui# ls -l Je liste le répertoire de lui


total 0
lrwxrwxrwx 1 lui lui 26 2008-08-21 18:04 Examples -> /usr/share/example-content
-rw-r--r-- 1 lui lui 0 2008-08-21 18:14 rapport.odt
root@MyServ:/home/lui# cp rapport.odt /home/moi/ Ce fichier appartient à lui
root@MyServ:/home/lui# ls -l /home/moi/
total 4
Je le copie chez moi
-rw-r--r-- 1 root root 0 2008-08-21 18:14 rapport.odt
drwxr-xr-x 2 moi moi 4096 2008-08-21 17:59 rep1
drwxr-xr-x 2 moi moi 4096 2008-08-21 18:00 rep2 La copie m’appartient (root)
drwxr-xr-x 2 moi moi 4096 2008-08-15 14:41 Vidéos
root@MyServ:/home/lui#

Page 22
 La commande « mv » déplace ou renomme une source vers une
destination.
 Syntaxe :
mv [OPTION]... SOURCE... DIRECTORY

 Exemples
 Déplace le fichier « toto.txt » vers « /home/moi » sans le renommer
mv toto.txt /home/moi

 Renomme le fichier « toto.txt » en « tata.txt »


mv toto.txt tata.txt

 Déplace tous les fichiers de « rep1 » vers « rep2 »


mv rep1/* rep2/

Page 23
 La commande « rm » permet d’effacer des fichiers et des
répertoires
 A utiliser avec précaution (Surtout avec l’option –r)
 Exemples :
 Effacer le fichier « rapport.txt »
rout@MyServ:~$ rm /home/moi/rapport.txt

 Effacer le répertoire « /home/moi »


rout@MyServ:~$ rm -r /home/moi/

 Effacer tous les fichiers du rép. courant commençant par « rapport »


rout@MyServ:~$ rm ./rapport*

 Effacer les fichiers du rép. courant se terminant par .txt


rout@MyServ:~$ rm ./*.txt

 Avant d’utiliser « rm », savoir avant quelle sera la portée


 « rm -r /* » peut générer une catastrophe
Page 24
 Un « inode » est une structure de données concernant un fichier
 Contient des informations sur :
• Les droits, le propriétaire et le groupe
• Le périphérique qui le contient
• Des données relatives au système de fichiers et à l’emplacement du
fichier sur le support de stockage
 A chaque fichier, correspond un « inode »
 Il est unique pour le périphérique de stockage qui contient le fichier
 Pour connaître l’inode d’un fichier, la commande « ls » avec
l’option « -i ».
rout@MyServ:~/Documents/essais$ ls -il /home/rout/Documents
total 12
8246 drwxr-xr-x 2 rout rout 4096 2008-08-25 15:08 essais
467165 drwxr-xr-x 3 rout rout 4096 2008-06-02 14:20 software
475969 drwxr-xr-x 3 rout rout 4096 2008-07-29 15:54 vmware-tools

inode

Page 25
 Un lien est un type spécial de fichier qui fait référence à un autre
fichier
 Axe central du fonctionnement de Linux, le lien permet :
 De créer des raccourcis vers des fichiers existants
• La compatibilité des logiciels entre les distributions Linux est assurée
par les liens
 D’éviter de stocker plusieurs fois le même fichier dans des
répertoires différents
 Un petit dessin :
support de stockage support de stockage

fich1 01100011110 fich1 01100011110


10101011001 10101011001
0101001000 0101001000
fich2 010101010… 010101010…
fich2
liens physiques lien symbolique
Page 26
 Le lien symbolique est une référence vers un fichier cible
 Lorsque le fichier cible est effacé, le lien est rompu
 Lorsque le lien est effacé, le fichier cible n’est pas effacé
 Exemple :
Nom du lien
rout@MyServ:~/Documents$ ls -l
total 8
lrwxrwxrwx 1 rout rout 29 2008-08-25 14:23 ip -> /proc/sys/net/ipv4/ip_forward
drwxr-xr-x 3 rout rout 4096 2008-06-02 14:20 software
drwxr-xr-x 3 rout rout 4096 2008-07-29 15:54 vmware-tools

Indique que c’est un lien Emplacement du vrai fichier

 La commande « ln » avec l’option « -s » est utilisée pour créer un


lien symbolique
rout@MyServ:~/Documents$ ln –s /proc/sys/net/ipv4/ip_forward ip

Cible (Target) Nom du lien (link name)

Page 27
 Un lien physique est associé à un emplacement sur le support de
stockage
 2 liens peuvent être associés au même « inode »
 Similaire à la notion de « pointeurs » du langage C
 Deux liens physiques sont considérés comme 2 fichiers
indépendants
• Même si leur contenu est au même emplacement sur le support
 Le lien physique est vu comme un fichier régulier
 Créer un lien physique avec la commande « ln » : nom fichier
rout@MyServ:~/Documents$ ln /home/moi/Documents/rapport2007-2008.doc rap0708
rout@MyServ:~/Documents/essais$ ls -il
total 176 cible
470930 -rw-r--r-- 2 rout rout 84091 2008-08-25 14:48 rap0708
470930 -rw-r--r-- 2 rout rout 84091 2008-08-25 14:48 rapport-annee2007_2008.doc

L’ « inode » est identique. Nombre de liens vers cet inode.


Il s’agit bien de liens C’est un indice permettant de
physiques supposer qu’il s’agit d’un lien
Page 28
 Où seront copiés les fichiers ?
lui@MyServ:~/Documents$ cp /usr/docs-compta/* compta/

 Que risque t-on d’effacer ?


root@MyServ:/# rm -r ./*

 Par quelle commande peut-on remplacer la suivante afin d’éviter


d’avoir plusieurs copies des mêmes fichiers ?
moi@MyServ:~$ cp -r /usr/docs-compta ./

 Comment copier des fichiers en conservant les droits des fichiers


sources ?

Page 29
 Où seront copiés les fichiers ?
lui@MyServ:~/Documents$ cp /usr/docs-compta/* compta/

 Réponse : Dans « /home/lui/Documents/compta/ »


 Que risque t-on d’effacer ?
root@MyServ:/# rm -r ./*

 Réponse : Tout le système de fichiers !!! (en tant que root)


 Par quelle commande peut-on remplacer la suivante afin d’éviter
d’avoir plusieurs copies des mêmes fichiers ?
moi@MyServ:~$ cp -r /usr/docs-compta ./

 Réponse : moi@MyServ:~$ ln –s /usr/docs-compta docs-compta

 Comment copier des fichiers en conservant les droits des fichiers


sources ?
 Réponse : Utiliser l’option -a de la commande « cp »
Page 30
Gestion
des fichiers sous Linux

Protection des fichiers

Page 31
 Le compte « root » possède tous les droits
 Celui qui possède le mot de passe root peut tout faire
 La plupart des distributions récentes désactivent le compte
« root »
 Certains utilisateurs peuvent endosser temporairement le rôle du
super-utilisateur
• Avec la commande « sudo » (Super User Do)
– La commande qui suit le « sudo » sera exécutée en tant que
« root »
rout@MyServ:~/Documents$ sudo commande

 En règle générale, on utilise « sudo » que temporairement


 Pour des tâches administratives
• Accéder à l’ensemble du système de fichiers
• Gérer les utilisateurs
• …
Page 32
 Parfois, le super-utilisateur doit endosser un autre rôle afin
d’effectuer une tâche
 Que se passe t-il si le super-utilisateur crée un fichier ?
 Ce fichier lui appartient
 Selon les droits qui s’appliquent, les autres utilisateur ne peuvent pas
y accéder
 Que faire alors ?
 Se faire momentanément passer pour un autre utilisateur
 Avec la commande « su »
root@ubuntu:~# su gen Je me fais passer pour « gen »
gen@ubuntu:~$ touch toto.txt
gen@ubuntu:~$ ls -l Le fichier créé appartient à « gen »
total 32
drwxr-xr-x 2 gen gen 4096 2009-08-22 14:49 Modèles
-rw-r--r-- 1 gen gen 0 2009-08-31 05:47 toto.txt
drwxr-xr-x 2 gen gen 4096 2009-08-22 14:49 Vidéos
gen@ubuntu:~$ exit
exit Je reprends mon rôle initial
root@ubuntu:~#

Page 33
 Utilisé pour définir les droits par défaut
 Droits appliqués pour un nouveau fichier lors de sa création
 Les bits du masque à 1 empêchent le fichier d’obtenir le droit
correspondant
 Exemple avec un masque de protection de 027
0 2 7

000 010 111


rwx rwx rwx Permissions maximum
rwx r-x --- Permissions effectives après application du masque

 La commande « umask » permet de modifier le masque


 Les fichiers et répertoires nouvellement crées seront alors protégés
 La valeur par défaut du masque est 022
• Est-ce suffisant ?
Page 34
 Permet de bénéficier de droits supplémentaires lors de l’exécution
d’une commande
 Un utilisateur quelconque peut alors avoir des droits supplémentaires
seulement s’il exécute la commande ayant le SUID
 Exemple de la commande « passwd »
 Elle permet de modifier son mot de passe
 « passwd » doit écrire dans le fichier « /etc/shadow » et pourtant :
linux:~# ls -l /etc/shadow
-rw-r----- 1 root shadow 700 2007-12-04 18:39 /etc/shadow

Aucune permission d’écriture sur ce fichier

linux:~# ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 28480 2007-02-27 08:53 /usr/bin/passwd

La commande aura les droits du super-utilisateur même si n’importe quel


autre utilisateur lance son exécution

Page 35
 Identique au SUID mais appliqué au groupe propriétaire
 La commande obtiendra les droits du groupe propriétaire s’il elle est
exécutée par un autre utilisateur
 Attention, appliquée à un répertoire, le SGID :
 Modifie le groupe propriétaire d’un fichier créé dans le répertoire
 Ce ne sera plus le groupe primaire du propriétaire
• Mais plutôt le groupe propriétaire du répertoire
 Il y a donc un mécanisme d’héritage entre le répertoire et les fichiers
nouvellement créés qu’il contient
 Exemple :
drwxrws--- 2 root compta 4096 2008-08-24 13:05 docs-compta

SGID positionné sur « docs-compta »


-rw-r--r-- 1 moi compta 0 2008-08-24 13:09 nouveau.txt

Le fichier nouvellement crée par moi appartient au groupe « compta »


Page 36
 La commande « chmod » permet de modifier les droits :
 2 syntaxes différentes
chmod [OPTION]... MODE[,MODE]... FILE...

chmod [OPTION]... OCTAL-MODE FILE...

• Mode symbolique :
– Basé sur des symboles (ugoa) et des opérateurs (+,-,=)
– u (user), g (group), o (others), a (all users)
– + (Ajouter le droit), - (Retirer le droit), = (Ajouter le droit et retirer
tous les autres)
– Exemple (Ajoute le droit d’exécution au propriétaire) :
chmod u+x rapport.txt

• Mode octal :
– Basé sur des nombres de 0 à 7
– A chaque bit de la traduction binaire correspond un droit
– Exemple ( rw- rw- r-- ) : chmod 664 rapport.txt
Page 37
 Les droits sont représentés par un nombre octal (Base 8)
 De 1 à 7
 La représentation binaire (base 2) donne le détail des droits
 Exemple : 654
Propriétaire : Lecture, écriture
Groupe : Lecture et exécution
110 101 100 Autres : Lecture seulement

rw- r-w r--


 Ce mode permet de modifier tous les droits en même temps
 A utiliser avec précaution
 Très efficace pour s’assurer que tous les fichiers ont les mêmes
droits
 Utilisé pour sécuriser les accès des utilisateurs aux fichiers

Page 38
 Retirer le droit d’écriture au propriétaire et au groupe
chmod u-w,g-w /home/moi/secret.txt

 Positionner les droits en « rwx r-w --- »


chmod 750 /home/moi/secret.txt

 Ajouter le droit de lecture aux autres de tous les fichiers


chmod o+r /home/moi/*

 Retirer le droit d’écriture au groupe propriétaire


 Pour tous les fichiers et répertoires d’un répertoire donné (Option R)
chmod -R g-w /home/moi/*

 Donner tous les droits à tout le monde (déconseillé)


chmod 777 /home/moi/secret.txt

Page 39
 La commande « chown » (Change owner) permet de changer
l’appartenance
 Pour le propriétaire ou le groupe propriétaire
 Syntaxe :
chown [OPTION]... [OWNER][:[GROUP]] FILE...

 Exemples :
 Modification du propriétaire (moi)
chown moi /usr/docs/toto.txt

 Modification du groupe propriétaire (compta)


chown :compta /usr/docs/toto.txt

 Modification du propriétaire (lui) et du groupe (direction)


• Pour tout le contenu du répertoire (Option R - récursif)
chown –R lui:direction /usr/docs/rapports/

Page 40
 Commande « chmod » nécessaire pour attribuer le droit
d’écriture au groupe pour le répertoire suivant :
drwxr-x--- 26 moi marketing 4096 2008-08-28 16:11 monrepertoire

 Quels seront les droits accordés après la commande suivante ?


chmod 654 file.txt

 Quels seront les droits maximum accordés aux fichiers créés par
un utilisateur ayant un masque de protection de 023 ?
 Quel sera le groupe propriétaire d’un fichier crée par « lui »
(Membre du groupe « compta ») dans le répertoire suivant :
drwxrsx--- 26 moi drh 4096 2008-08-28 16:11 les-cvs

Page 41
 Commande « chmod » nécessaire pour attribuer le droit
d’écriture au groupe pour le répertoire suivant :
drwxr-x--- 26 moi marketing 4096 2008-08-28 16:11 monrepertoire

 Réponse : chmod g+w monrepertoire/

 Quels seront les droits accordés après la commande suivante ?


chmod 654 file.txt

 Réponse : propriétaire = rw , groupe = rx et autres = r ( rw- r-x r--)


 Quels seront les droits maximum accordés aux fichiers créés par
un utilisateur ayant un masque de protection de 023 ?
 Réponse : répertoire => drwx r-x r—, fichier régulier => -rw-r---wx
 Quel sera le groupe propriétaire d’un fichier crée par
« moimeme » (Membre du groupe « compta ») dans le répertoire
suivant : 26 moimeme drh 4096 2008-08-28 16:11 les-cvs
drwxrsx---

 Réponse : « drh »
Page 42
Gestion
des fichiers sous Linux

Les filtres de recherche

Page 43
La commande cut

La commande cut découpe des lignes d’un fichier ou de l’entrée


standard en colonnes ou par champs.
$ cut –cliste [<nom de fichier>]
$ cut –fliste [-d<caractère>] [-s] [<nom de fichier>]

-c découpe selon les caractères


-f découpe par champ selon le caractère séparateur de champ
donné par -d. Par défaut le caractère séparateur est le
caractère tab
-s supprime les lignes qui ne contiennent pas de séparateur
Les options de la commande cut

liste : des entiers séparés par des virgules ou des tirets


Exemples de valeurs de liste :
1,4,7  1 et 4 et 7
1-3, 8  1 à 3 et 8
-5,10  1 à 5 et 10
3-  3 à la fin

Exemples
affiche le 5ième caractère : cut -c5 fichier
affiche du 5ième au 10ème caractères : cut -c5-10 fichier
affiche le 5ième et le 10ème caractères : cut -c5,10 fichier
affiche à partir du 5ième (jusqu'à la fin) : cut -c5- fichier
affiche les champs 1 et 6 du fichier /etc/group sachant que le séparateur est ‘:’
cut -d":" -f1,6 /etc/group
Exercices

• Utiliser un filtre entre deux commandes pour extraire les 5


premiers caractères de chaque ligne du fichier /etc/passwd
 Réponse :
cat /etc/passwd | cut –c-5 /etc/passwd

• Extraire le premier champ (nom de login) et le cinquième champ


(nom réel de l’utilisateur) du fichier /etc/passwd
 Réponse :
cut –f1,5 –d: /etc/passwd
La commande find
• La commande find exécute une recherche selon les critères définis
dans une expression depuis le chemin indiqué réalise une action
particulière

find [répertoire] [critères] [action]

• L’action de base est l’affichage des fichiers trouvés (on peut ou pas
le spécifier par -print). Cependant on peut demander l’invocation
d’une commande à exécuter (comme par exemple la suppression
des fichiers trouvés ou leur déplacement vers un répertoire donnée,
etc.). Cette action peut être interactive.
Les expressions possibles pour find
-name <nom> recherche le fichier portant un nom
-links <n> recherche les fichiers possédant n liens
-user <utilisateur> recherche les fichiers appartenant à un utilisateur
-group <groupe> recherche les fichiers appartenant à un groupe
-type <type> recherche les fichiers ayant un type
(f=fichier, d=répertoire, b=périphérique)
-ctime <date> recherche les fichiers créés avant ou après
une date de création (on peut invoquer une date
d’accès avec –atime ou une date de modification
avec – mtime)
-perm <masque> recherche les fichier ayant le mode correspondant
à un masque (3 chiffres en octal)
-size <n> affiche le fichier qui contient <n> blocs

Combinaison de critères
Pour combiner ces tests, vous pouvez utiliser
• les opérateurs logiques :
<c1> -a <c2>
vrai si <c1> et <c2> sont vrais tous les deux
Notez que -a est implicite
<c1> -o <c2>
vrai si l'un de <c1> ou <c2> est vrai, ou les deux.
Notez que -o a une priorité moins grande que -a.
-not <c>
inverse le test <c>, donc -not <c> est vrai si <c> est faux.

• le parenthésage :
Lorsque on recours aux parenthèses, on doit désactiver leur
signification habituelle sans quoi le shell les prendra en compte
dans son interprétation !
Les actions possibles pour find

-print
Affiche le fichier pour lequel l’expression est réalisée

-ls
Affiche l'équivalent d'un ls -ilds sur chaque fichier trouvé sur la
sortie standard

-exec <commande>
Vrai si la commande restitue une valeur de sortie nulle
La fin de la commande doit être ponctuée par \ et le nom du
fichier examiné est représenté par {};

-ok <commande>
Même chose que -exec mais demande confirmation pour chaque
commande à exécuter
Exemples - commande find
find / -name passwd
find /home -type d
find /home/foulen -executable
find ~ -size 50M
find . -cmin -60

find .. –user felten –print


find . -perm 755 –print

find . -type d –empty


find . -mtime +50 –mtime -100
find . -type f ! -perm 777
find . \( -name '*.tex' -o -name '*.dvi' \)
find . \(-name "*.htm" -o -name "*.html" \) -a -ctime -30

find ~ -name myscript -exec ls –il {} \;


find . -type f -ok -exec rm {} \;
find / -type d -perm 777 -print -exec chmod 755 {} \;
Exercices
• Ecrire la commande qui va chercher les fichiers dans le répertoire
/home/foulen

• Ecrire la commande qui va chercher les programmes écrits en C qui se


trouvent dans le répertoire prog qui se situe dans le répertoire courant

• Ecrire la commande qui va trouver tous les fichiers cachés se trouvant le


répertoire HOME. Les fichiers cachés sur Linux commencent par un point.

• Ecrire la commande qui va supprimer tous les fichiers pdf se trouvant le


répertoire courant et qui ont une taille > 10 Mo
et < 40 Mo.
Exercices
• Ecrire la commande qui va chercher les fichiers dans le répertoire
/home/foulen
 Réponse :
find /home/foulen

• Ecrire la commande qui va chercher les programmes écrits en C qui se


trouvent dans le répertoire prog qui se situe dans le répertoire courant
 Réponse :
find ./prog -name "*.c"
Exercices

• Ecrire la commande qui va trouver tous les fichiers cachés se trouvant le


répertoire HOME. Les fichiers cachés sur Linux commencent par un point.
 Réponse :
find ~ -type f -name ".*"

• Ecrire la commande qui va supprimer tous les fichiers pdf se trouvant le


répertoire courant et qui ont une taille > 10 Mo
et < 40 Mo.
 Réponse :
find . -size +10M -size -40M –exec rm {} \;
La commande grep

Pour rechercher une chaîne de caractères dans un ou plusieurs


fichiers, on utilise la commande grep dont la syntaxe est la suivante :
grep [<options>] <chaine> [<fichier...>]
Parmi s les options, on cite :
-i ignore majuscules et minuscules
-h supprime le nom du fichier devant chaque ligne
-n affiche le numéro de ligne dans le fichier
-v affiche toutes les lignes sauf celles contenant la chaîne
- c compte le nombre de lignes où la chaîne est trouvée
Exemple :
grep malloc *.c
cat /etc/passwd | grep –c "foulen"
Caractères spéciaux servant de modèle pour grep

La chaîne de caractères recherchée est en fait une expression


régulière renfermant donc des caractères spéciaux ayant chacun une
signification particulière.
Exemples commande grep

• Recherche dans le répertoire courant du fichier mybook.pdf


ls –l | grep 'mybook.pdf'
• Recherche dans le fichier /etc/passwd l’ensemble des lignes
commençant par le caractère u
grep '^u' /etc/passwd
• Comptage du nombre d’utilisateurs (répertoriés dans /etc/passwd)
qui ont comme interpréteur de commande le bash
grep -c bash$ /etc/passwd
• Afficher toutes les lignes ne comportant pas un point-virgule dans la
liste des fichiers C se trouvant dans le répertoire courant
grep –v "; " *.c
• Obtenir des fichiers carnet_adresse et mon_calpin toutes les lignes
commençant par les caractères compris entre a et d.
grep ^[a-d] carnet-adresse mon_calpin
Exercices

• Compter les occurrences du mot « word » (en ignorant la casse) dans


l’ensemble des fichiers situés dans le répertoire de log du système

• Recherche des termes ERROR et CRITICAL dans les logs de /opt/tomcat/log

• Recherche des suites de 10 chiffres dans tous les fichiers du répertoire courant

• Recherche dans un répertoire et ses sous répertoires la liste des


fichiers *.html, pour lesquels l'encodage est iso-8859-1. L'encodage est donné
par la commande file et l'option -i
Exercices

• Compter les occurrences du mot « word » (en ignorant la casse) dans


l’ensemble des fichiers situés dans le répertoire de log du système
• Réponse
grep -ci "word" /var/log/*
• Recherche des termes ERROR et CRITICAL dans les logs de /opt/tomcat/log
• Réponse
grep "ERROR\|CRITICAL" /opt/tomcat/log/*.log
• Recherche des suites de 10 chiffres dans tous les fichiers du répertoire courant
• Réponse
grep "[0-9]\{10\}" *
• Recherche dans un répertoire et ses sous répertoires la liste des
fichiers *.html, pour lesquels l'encodage est iso-8859-1. L'encodage est donné
par la commande file et l'option -i
• Réponse
find . -type f -name "*.html" -exec file -i {} \; | grep -i 'iso-8859-1'
Gestion
des fichiers sous Linux

Page 60

Vous aimerez peut-être aussi