Vous êtes sur la page 1sur 49

Utilisation de l'aide

Les pages de manuel ou man pages


Sur un système Unix / Linux, la plupart des logiciels sont installés avec un manuel accessible par la commande
man.
La syntaxe est la suivante : man fonction_ou_commande
La commande : man man donne des informations sur l'utilisation du manuel en général.
Afin de naviguer dans le manuel, il convient d'utiliser les touches, haut et bas mais aussi les commandes
suivantes :

MAN
Manuel d'aide en ligne.
usage: man [-c|-f|-k|-w|-tZT périphérique] [-adlhu7V] [-Mchemin]
[-Pvisualisateur] [-Sliste] [-msystème] [-pchaîne] [-Llocale]
[-eextension] [section] page

Options Explication
-a, --all Trouve toutes les pages adéquates.
-d, --debug Affiches des messages de déboguage.
-e, --extension Limite la recherche aux extensions `extension'.
-f, --whatis Équivalent de whatis.
-k, --apropos Équivalent de apropos.
-w, --where, --location Affiche l'emplacement des pages du manuel.
-l, --local-file Interprète l'argument 'page' comme un nom de fichier.
-u, --update Force une vérification de cohérence du cache.
-r, --prompt string Donne une chaîne d'invite au visualisateur `less'.
-c, --catman Utilisé par catman pour reformater les pages trop vieilles.
-7, --ascii Affiche un équivalent ASCII de certains caractères latin1.
-t, --troff Utilise groff pour formater les pages.
-T, --troff-device Utilise groff avec le périphérique sélectionné.
-Z, --ditroff Utilise groff en le forçant à produire ditroff.
-D, --default Redonne leur valeur par défaut à toutes options.
-M, --manpath chemin Positionne le chemin de recherche des pages.
-P, --pager visualisateur Utilise le programme `visualisateur' pour l'affichage des pages.
-S, --sections liste Utilise la liste des sections séparées par des virgules
-m, --systems système Cherche les pages du manuel provenant d'autres systèmes UNIX.
-L, --locale locale Défini la localisation pour cette recherche.
-p, --preprocessor chaîne La chaîne indique le pré-processeur à utiliser.
e - [n]eqn
p - pic
t - tbl
g - grap
r - refer
v – vgrind
-V, --version Affiche la version.
-h, --help Affiche ce message-ci.

Aide simplifiée
Nous venons de voir qu'il était possible de connaître la définition d'une commande par le manuel de celle-ci,
mais il est aussi possible d'en avoir un résumé via l'option --help.
luser@localhost $ df --help
Usage: df [OPTION]... [FILE]...
Show information about the filesystem on which each FILE resides, or all filesystems by default.
Mandatory arguments to long options are mandatory for short options too.

1
-a, --all include filesystems having 0 blocks
-B, --block-size=SIZE use SIZE-byte blocks
-h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G)
-H, --si likewise, but use powers of 1000 not 1024
-i, --inodes list inode information instead of block usage
-k like --block-size=1K

Celle-ci permet donc de voir rapidement ou encore de vérifier l'existence d'une option.

La commande man

La commande man affiche les pages manuelles en ligne. Celles-ci décrivent les centaines de commandes Linux
disponibles. Pour obtenir la liste de l'ensemble des commandes Linux, ainsi qu'une brève description de leur fonction,
saisissez la commande man intro sur la ligne de commande. Une page manuelle peut même être affichée directement à
la commande man en tapant man man.
La commande man peut être utilisée de plusieurs manières. Sa forme principale est la suivante: man nom, dans laquelle
«nom» désigne le nom de la commande à propos de laquelle l'utilisateur souhaite obtenir des informations. Plusieurs
options sont très utiles lors de l'utilisation de la commande man, notamment pour effectuer des recherches sur la base
de mots-clés et afficher des sections particulières du manuel du programmeur.

Rubriques des pages manuelles

Une page manuelle standard se compose de différents titres et zones d'informations. Ces titres apparaissent dans la
page manuelle tout en majuscules. Selon la commande et sa fonction, la page manuelle peut ne pas contenir l'ensemble
de ces titres. Par exemple, la commande d'impression du répertoire de travail (pwd) ne contient aucune information
concernant les options ou opérandes car aucun élément de ce type n'est disponible pour cette commande. Toutes les
commandes comportent au moins un nom, ainsi que deux descriptions: une brève et une plus longue. Parmi les
commandes Linux standard figure la commande cd qui permet aux utilisateurs de changer de répertoire. Vous pouvez y
voir les divers titres que nous avons mentionnés précédemment. Certains ont été omis étant donné que la page
manuelle de la commande cd compte près de 9 pages dans sa version complète.

La commande ls

L'une des principales commandes utilisées pour explorer le système de fichiers Linux dans l'interface de ligne de
commande est la commande ls. La fonction de la commande ls est de répertorier le contenu du répertoire actuel. La
syntaxe de la commande ls est la suivante: ls [options] [fichiers]
En consultant la page manuelle de la commande ls, vous pouvez connaître les diverses options disponibles.
La commande ls peut être émise avec les [options] et la liste des [fichiers] afin d'afficher le contenu d'un répertoire
donné. Toutefois, ceci est facultatif. En l'absence de ces options, la commande ls répertorie le contenu du répertoire
actuel. Plusieurs noms de fichiers peuvent être fournis afin que la commande ls répertorie le contenu de plusieurs
répertoires.

Format général des commandes


La syntaxe générale des commandes Unix est: commande options... arguments...
Les options sont le plus souvent précédées par un tiret «-». L’ordre des options est le plus souvent indifférent
et peuvent être regroupées derrière un seul tiret. Les arguments quand à eux peuvent être absents et, dans ce
cas là, ils prennent des valeurs par défaut.

 Manipulation des fichiers et des répertoires :


o copier, déplacer, lier, supprimer;

Se déplacer entre les répertoires (Change Directory)

Cd .. : Remonte d'un niveau (atteindre le répertoire parent)


Cd . : représente le répertoire courant.
2
Cd / : Retourne à la racine
Cd - : Retourne au répertoire précédent
Cd ~ : représente votre répertoire d’accueil

Lister le contenu d’un répertoire: (List Sorted)


Afficher les informations au sujet des FICHIERS (du répertoire courant par défaut). Trier les entrées alphabétiquement si
aucune des options -cftuSUX ou --sort n'est utilisée.
Usage: ls [OPTION]... [FICHIER]...

Options Explication
-a, --all Afficher les noms cachés débutant par .
-A, --almost-all Ne pas inclure dans la liste . et ..
-b, --escape Afficher en octal les caractères non-graphiques en utilisant des séquences d'échappement
--block-size=TAILLE Utiliser la TAILLE de blocs
-B, --ignore-backups Ne pas inclure dans la liste, les entrées se terminant par ~
-c Lister les fichiers triés selon leur date de modification; avec -l: les afficher avec la date de
modification du 'inode'
-C Afficher en colonnes
--color[=PARAM] Afficher les fichiers avec une couleur selon leur type à l'aide d'un des paramètres suivants: never,
always ou auto
-d, --directory Lister les noms de répertoires plutôt que leur contenu
-D, --dired Générer une sortie adaptée pour le mode 'dired' de Emacs
-f Ne pas trier, autoriser
-aU, interdire -lst
-F, --classify Ajouter un caractère pour taper chaque entrée
--format=MODE Afficher selon le MODE suivant: -x croisé,-m avec virgules, -x horizontal, -l long, -1 en colonne
simple, -l en mode bavard, -C vertical
--full-time Afficher avec la date et l'heure complètes
-g (ignorée)
-G, --no-group Inhiber l'affichage des informations de groupe
-h, --human-readable Afficher les tailles dans un format lisible par un humain (i.e. 1K 234M 2G)
-H, --si Idem mais utiliser un multiple de 1000 au lieu de 1024
--indicator-style=CODE Ajouter en suffixe l'indicateur selon le CODE: none (par défaut), classify (-F), file-type (-p)
-i, --inode Afficher le numéro d'index de chaque fichier
-I, --ignore=PATRON Ne pas inclure dans la liste les entrées concordant avec le PATRON de shell
-k, --kilobytes Utiliser des blocs de 1024 octets, et non pas de 512 octets malgré l'option

POSIXLY_CORRECT
Options Explication
-l Utiliser le format long d'affichage
-L, --dereference Afficher les entrées pointées par des liens symboliques
-m Remplir la largeur par une liste d'entrées séparée par des virgules
-n, --numeric-uid-gid Afficher les valeurs numériques des 'UID' et des 'GID' plutôt que leur nom
-N, --literal Afficher les caractères bruts (i.e. ne pas les traiter comme des caractères de contrôle)
-o Utiliser le format long pour l'affichage sans les informations de groupe
-p Ajouter un caractère pour taper chaque entrée
-q, --hide-control-chars Afficher ? au lieu de caractères non-graphiques
-Q, --quote-name Encapsuler chaque nom d'entrée entre guillemets
--quoting-style=MOT Utiliser le style d'encapsultation selon le MOT clé suivant: literal, shell, shell-always, c, escape
-r, --reverse Inverser l'ordre lors du trie
-R, --recursive Afficher les sous-répertoires récursivement
-s, --size Afficher la taille de chaque fichier en blocs
-S Trier selon la taille des fichiers
--sort=CODE Trier selon le CODE suivant: -c pour ctime, -X pour extension, -U pour aucun, -S pour la taille, -t
pour la date, -v pour la version, -c pour le statut, -u pour la date d'accès, -u pour l'accès
--time=CODE Afficher les temps d'accès en mots au lieu de date de modification: atime, access, use, ctime ou
status
-t Trier par la date de modification; avec -l: afficher 'mtime'
-T, --tabsize=TAILLE Utiliser la tabulation de la TAILLE pour chaque colonne au lieu de 8
-u Trier selon la date du dernier accès; avec -l: afficher
-U Ne pas trier: afficher selon l'ordre original des entrées d'un répertoire
-v Trier par version
-w, --width=LARGEUR Utiliser la LARGEUR d'écran au lieu des valeurs courantes
-x Afficher les entrées par lignes plutôt que par colonnes
-X Trier alphabétiquement par extension des entrées
-1 Afficher un fichier par ligne

3
--help Afficher l'aide-mémoire
--version Afficher le nom et la version du logiciel

Par défaut, la couleur n'est pas utilisée pour distinguer les différents types de fichiers. Cela est équivalent à l'utilisation de
l'option --color=none. L'utilisation de l'option --color sans le paramètre WHEN est équivalent à l'utilisation de --
colors=always. Avec l'option --color=auto, les codes de couleur sont transmis vers la sortie standard si celle-ci est reliée à
un terminal (tty).

ls -l : Permet de lister les attributs des fichiers


ls -d: Affiche uniquement les répertoires
ls -a : Liste tous les fichiers du répertoire y compris les fichiers cachés.
ls -m : Affiche les fichiers en les séparant par une virgule.
ls -t : Affiche les fichiers par date. C’est-à-dire en les classant du récent au plus ancien:
ls -lu : Affiche les fichiers par date du dernier accès et indique la date.
ls -F : Affiche les fichiers par type
ls –R : Pour Afficher récursivement le contenu d’un répertoire
ls -S : Affiche les fichiers triés par ordre de taille décroissante.
ls -X : Affiche les fichiers par type d'extension
ls -r : Affiche les fichiers en ordre alphabétique inverse
ls -alR / : Affiche tous les fichiers d'un système
ls -alR |grep doc : Affiche tous les fichiers contenant doc

Créer des fichiers: (touch) : touch [options] fichiers...

Modifie la date d’acces et la date de modification de chaque fichier indiqué.


-a modifier l’heure du dernier accés au fichier
-c ne pas créer les fichiers n’existant pas
-m changer l’heure de derniere modification du fichier
-r fichier de reference utiliser les horodatages du fichier_réference a la place de l’heure actuelle.
-t date utiliser la date indiquée à la place de la date actuelle. L’argument est un nombre décimal de la forme
[[SS]AA]MMJJhhmm[.ss] (Mois, Jour, Heure, Minute, éventuellement siécle et Année, éventuellement seconde) .

Créer des répertoires: (make directory) : mkdir [options] répertoires...


Il suffit d’avoir le droit d’écriture dans le répertoire père. Si on veut créer une arborescence directement, il
faut utiliser l’option -p.

mkdir : Créer un répertoire


mkdir -p rep1/rep2/rep3 : Créer un répertoire et ses sous répertoires associés

Créer des RÉPERTOIRES, s'ils n'existent pas déjà.


Usage: mkdir [OPTION] RÉPERTOIRE...

Options Explication
-m, --mode=MODE Utiliser le MODE des permissions d'accès (comme avec chmod), et non pas le mode rwxrwxrwx -
umask
-p, --parents Si l'exécution est sans erreur parce qu'existant: créer des répertoires parents si nécessaire
--verbose Utiliser le mode bavard et afficher un message pour chaque répertoire créé
--help Afficher l'aide-mémoire
--version Afficher le nom et la version du logiciel

Copier un fichier ou un répertoire: (copy)

cp : Demande s'il peut écraser le nom de fichier : répondre par Oui(y) ou Non (n)
cp -i : Avertit de l'existence d'un fichier du même nom et demande s'il peut ou non le remplacer.
cp -l : Permet de faire un lien en "dur" entre le fichier source et sa copie
cp -s : Permet de faire un lien "symbolique" entre le fichier source et sa copie
cp -p : Permet lors de la copie de préserver toutes les informations concernant le fichier.
cp -r : Permet de copier de manière récursive l'ensemble d'un répertoire et de ses sous répertoires
cp -b : Permet comme l'option -i de s'assurer que la copie n'écrase pas un fichier existant : le fichier écrasé est
sauvegardé, seul le nom du fichier est modifié et cp ajoute un tilde(~) à la fin du nom de fichier
4
Copier le fichier SOURCE vers une DESTINATION, ou plusieurs fichiers SOURCE vers un RÉPERTOIRE.
Usage: cp [OPTION]... SOURCE DESTINATION
ou: cp [OPTION]... SOURCE... RÉPERTOIRE

Options Explication
-a, --archive Identique à -dpR
-b, --backup Archiver avant de détruire
-d, --no-dereference Préserver les liens
-f, --force Détruire les destinations existantes, ne pas demander confirmation
-i, --interactive Demander confirmation avant d'écraser
-l, --link Établir des liens sur les fichiers au lieu de copier
-p, --preserve Préserver les attributs des fichiers si possible
-P, --parents Accoler le chemin du répertoire source au REPERTOIRE
-r Copier récursivement, les non-répertoires comme des fichiers
--sparse=DATE Contrôler la DATE de création des fichiers dispersés
-R, --recursive Copier récursivement les répertoires
-s, --symbolic-link Créer des liens symboliques au lieu de copier

-S, --suffix=SUFFIXE Écraser le suffixe usuel d'archivage par le SUFFIXE


-u, --update Copier seulement les vieux ou les nouveaux fichiers
-v, --verbose Utiliser le mode bavard et indiquer ce qui a été fait
-V, --version-control=MOT Écraser le contrôle de version usuel par le MOT
-x, --one-file-system Demeurer sur ce système de fichiers
--help Afficher l'aide-mémoire
--version Afficher le nom et la version du logiciel

Par défaut, les fichiers SOURCES dispersés sont détectés par le biais d'une heuristique grossière et le fichier CIBLE
correspondant est aussi construit de façon dispersé. Il s'agit d'un comportement sélectionné par l'option --sparse=auto.
Spécifiez --sparse=always pour créer un fichier CIBLE dispersé lorsque le fichier SOURCE contient de longues séquences
de d'octets de valeur zéro. Utilisez --sparse=never pour inhiber la création de fichiers dispersés.
Le suffixe d'archive est ~, à moins que l'option SIMPLE_BACKUP_SUFFIX soit utilisée. Le contrôle de version
VERSION_CONTROL peut être initialisée selon les valeurs suivantes:

Options Explication
t, numbered Faire des archives numérotées
nil, existing Numéroter si des archives numérotées existent, ne pas numéroter autrement
never, simple Toujours faire des archives de type simple

Un cas spécial où "cp" archive la SOURCE lorsque les options `force' et `backup' sont utilisées et que la SOURCE et la
DESTINATION portent le même nom qu'un fichier régulier existant.

Supprimer des fichiers et répertoires: (remove & remove directory)


Comme pour les fichiers, la commande rm (avec l’option -r) permet de supprimer des répertoires.
Il existe une autre commande: rmdir répertoires...

Enlever (remove) les FICHIER(s).


Usage: rm [OPTION]... FICHIER...

Options Explication
-d, --directory Enlever le répertoire, même si non vide (usager root seulement)
-f, --force Ignorer les fichiers inexistants, ne pas demander de confirmation
-i, --interactive Demander une confirmation avant chaque destruction
-r, -R, --recursive Enlever le contenu des répertoires récursivement
-v, --verbose En mode bavard expliquer ce qui a été fait
--help Afficher l'aide-mémoire
--version Afficher le nom et la version du logiciel

Supprimer un fichier
Pour pouvoir supprimer un fichier sous Unix, il faut avoir l’autorisation d’écriture sur le répertoire contenant
ce fichier, mais pas forcément la lecture ou l’écriture sur le fichier lui même (si l’utilisateur n’a pas
l’autorisation d’écriture sur le fichier, une confirmation lui est demandée). Attention: la suppression d’un
5
fichier est une opération sensible sous Unix. En effet, elle agit physiquement, c’est à dire qu’il n’y a pas de
moyen facile de pouvoir récupérer un fichier supprimé par erreur. Cette opération nécessite de faire appel aux
sauvegardes (type sauvegardes temporaires ou directement aux bandes).
La commande à lancer est la suivante: rm [options] fichiers...
Si le fichier est un lien vers un autre, le lien est supprimé mais pas le fichier destination du lien.

rm -d : Permet de supprimer un répertoire qu'il soit plein ou non


rm -r : Permet de supprimer un répertoire et ses sous répertoires
rm -f : Permet de supprimer les fichiers protégés en écriture et répertoires sans confirmation
rm –i : option par défaut à la création du compte, cette option demande confirmation pour chaque fichier. En
cas de suppression en cascade, il peut être intéressant d’enlever cette option, attention toutefois à être sûr de
l’opération et à bien remettre cette option pour les suppressions suivantes.
rmdir : Supprime un répertoire
rmdir -p rep1/rep2/rep : Supprime le répertoire et ses sous répertoires associés

exemple :
luser@localhost $ rm -i fichier
rm: remove fichier?
luser@localhost $ rm fichier (si pas de droit d’écriture sur fichier)
rm: override protection 444 for fichier?

RMDIR
Enlever les RÉPERTOIRES, s'ils sont vides.
Usage: rmdir [OPTION]... RÉPERTOIRE...

Options Explication
--ignore-fail-on-non-empty Ignorer les échecs qui sont causées par un répertoire qui n'est pas vide
-p, --parents Enlever les parents explicites de répertoires s'ils sont vides
--help Afficher l'aide-mémoire
--version Afficher le nom et la version du logiciel

Déplacer ou renommer un fichier ou un dossier : (move)


Il est aussi nécessaire parfois de pouvoir renommer ou déplacer des fichiers. La commande à lancer est alors:
mv fichier_source fichier_destination ou mv fichiers... répertoire

Elle permet de déplacer un ou plusieurs fichiers dans un répertoire avec possibilité de changer leur nom.
# mv file1 to destination…./ …
# mv rep1 to destination…./ …

Renommer la SOURCE selon DESTINATION, ou déplacer les fichiers SOURCES vers le RÉPERTOIRE.
Usage: mv [OPTION]... SOURCE DESTINATION
ou: mv [OPTION]... SOURCE... RÉPERTOIRE

Options Explication
-b, --backup Archiver avant de détruire
-f, --force Détruire les destinations, sans demander confirmation
-i, --interactive Demander confirmation avant d'écraser
-S, --suffix=SUFFIXE Écraser le suffixe d'archivage usuel en utilisant SUFFIXE
-u, --update Déplacer seulement les vieux ou les tous nouveaux fichiers
-v, --verbose Utiliser le mode bavard et indiquer ce qui a été fait
-V, --version-control=CODE Écraser le contrôle de version par le CODE
--help Afficher l'aide-mémoire
--version Afficher le nom et la version du logiciel

Le suffixe d'archive est ~, à moins que l'option SIMPLE_BACKUP_SUFFIX soit utilisée. Le contrôle de version
VERSION_CONTROL peut être initialisée selon les valeurs suivantes:

Options Explication
t, numbered Faire des archives numérotées
nil, existing Numéroter si des archives numérotées existent, ne pas numéroter autrement

6
never, simple Toujours faire des archives de type simple

Pour renommer un fichier ou un répertoire :

# mv file1 my_file1
#mv rep1 my_rep1

mv -b : Va effectuer une sauvegarde des fichiers avant de les déplacer


mv -i : Demande pour chaque fichier et chaque répertoire s'il peut ou non le déplacer
mv -u : Demande a "mv" de ne pas supprimer le fichier si la date de modification est la même ou plus récente que son
remplaçant.

Exemple :

luser@localhost $ mv fic fic.old (on renomme le fichier "fic" en "fic.old")


luser@localhost $ mv fic* rep (on déplace tous des fichiers commençant par fic dans le répertoire
"rep").
luser@localhost $ mv fic rep/fic1 (on déplace le fichier "fic" dans le répertoire "rep" et on le renomme "fic1").

DU
Produire un sommaire de l'utilisation de l'espace disque de chaque FICHIER et récursivement dans les répertoires.
Usage: du [OPTION]... [FICHIER]...

Options Explication
-a, --all Afficher le décompte pour tous les fichiers, pas seulement pour les répertoires
--block-size=TAILLE Utiliser la TAILLE de blocs
-b, --bytes Afficher la taille en octets
-c, --total Produire le grand total
-D, --dereference-args Ne pas tenir compte des CHEMINS lorsqu'il y a des liens symboliques
-h, --human-readable Afficher les tailles dans un format lisible par un humain (i.e. 1K 234M 2G)
-H, --si Idem mais utiliser un multiple de 1000 au lieu de 1024
-k, --kilobytes Utiliser des blocs de 1024 octets, et non pas de 512 octets malgré l'option

POSIXLY_CORRECT

Options Explication
-l, --count-links Dénombrer les tailles aussi souvent qu'il y a de liens directs
-L, --dereference Ne pas tenir compte de tous les liens symboliques
-m, --megabytes Utiliser des blocs de 1024K-octets, et non pas de 512 octets malgré l'option
-S, --separate-dirs Ne pas inclure la taille des sous-répertoires
-s, --summarize Afficher seulement un total pour chaque type de paramètre
-x, --one-file-system Escamoter les répertoires de différents
-X FICHIER,
--exclude-from=FICHIER Exclure les fichiers qui concordent avec le nom du FICHIER
--exclude=EXPRES Exclure les fichiers qui concordent avec l'expression
--max-depth=N Afficher le total pour un répertoire (ou un fichier, avec l'option --all) seulement si N a
moins de niveau dans la ligne de commande;
--max-depth=0 Est identique à --summarize systèmes de fichiers
--help Afficher l'aide-mémoire
--version Afficher le nom et la version du logiciel

DF
Afficher les informations à propos du système de fichiers sur lequel réside chaque FICHIER ou de tous les systèmes de
fichier par défaut.
Usage: df [OPTION]... [FICHIER]...

Options Explication
-a, --all Inclure les systèmes de fichiers ayant 0 bloc
--block-size=TAILLE Utiliser la TAILLE de blocs
-h, --human-readable Afficher les tailles dans un format lisible par un humain (i.e. 1K 234M 2G)

7
-H, --si Idem mais utiliser un multiple de 1000 au lieu de 1024
-i, --inodes Lister les informations sur les 'inodes' plutôt que sur l'utilisation des blocs
-k, --kilobytes Utiliser des blocs de 1024 octets, et non pas de 512 octets malgré l'option

POSIXLY_CORRECT

Options Explication
-m, --megabytes Utiliser des blocs de 1024K-octets, et non pas de 512 octets malgré l'option
--no-sync Ne pas effectuer une synchronisation avant d'obtenir les informations d'utilisation des
disques (par défaut)
-P, --portability Utiliser le format de sortie POSIX
--sync Demander une synchronisation avant d'obtenir les informations d'utilisation des disques
(par défaut)
-t, --type=TYPE Limiter l'affichage au TYPE de système de fichiers
-T, --print-type Afficher le type du système de fichiers
-x, --exclude-type=TYPE Limiter l'affichage en excluant le TYPE de système de fichiers
-v (ignorée)
--help Afficher l'aide-mémoire
--version Afficher le nom et la version du logiciel

PWD
Affiche le nom du répertoire de travail courant.
Usage: pwd [OPTION]...

Options Explication
--help Print A usage message on standard output and exit successfully.
--version Print version information on standard output then exit successfully.

Les liens symboliques


Syntaxe :
ln [-s] fichier1 fichier2
ln [-s] fichier1 [fichier2...] répertoire

Un lien est un type spécial de fichier qui permet à plusieurs noms de fichiers de faire référence au même fichier sur le disque.

La commande ln permet de créer des entrées multiples dans l'arborescence d'un système de fichiers pour un
même fichier physique.
Ce qui revient à dire que si l'on modifie un fichier, ses liens le sont aussi. ln permet aussi de faire des liens dans
des systèmes de fichiers différents par la méthode des liens symboliques (un peu comme les raccourcis de
chez MS).
Si le dernier argument de la ligne de commande est un répertoire, ln crée des liens dans ce répertoire pour
tous les fichiers pré-cités (fichier1, fichier2, ...).

Les liens forment un axe central du fonctionnement de linux. Qu'est ce qu'un lien ?
Un lien est un type spécial de fichier qui permet à plusieurs noms de fichiers de faire référence au même fichier sur le disque.
On doit distinguer deux sortes de liens :
1. les liens durs associent deux ou plusieurs fichiers à un même espace sur le disque, les deux fichiers sont pourtant indépendants. On
peut dire que physiquement les fichiers sont les mêmes mais que virtuellement ils ne le sont pas. Prenons un exemple : $ln linux-test
/home/delcros/linux-test-liendur
Le fichier linux-test-lien-dur est créé dans le répertoire /home/delcros. si vous faites un ls -l vous constaterez que linux-test et linux-
test-lien ont la même taille.
Au niveau de leur existence sous linux, ils sont indépendants. Mais sur le disque, il n'existe qu'un seul fichier, simplement linux-test-
lien-dur et linux-test sont sur le même espace (ou inode) sur le disque dur lorsqu'on les appelle.
Ainsi si nous modifions le fichier linux-test-lien-dur, nous aurons automatiquement une modification du fichier linux-test (et vice et
versa), car la modification s'effectuera physiquement sur le disque dur sur l'inode "partagé" par les deux fichiers.

2. Les liens symboliques :


Si nous faisons maitenant un lien symbolique : $ln -s linux-test /home/delcros/linux-test-liensymb
Faites un ls -F dans le répertoire /home/delcros, vous verrez que le fichier linuxtest-lien-symb est précédé du signe "@". Ce fichier
pointe sur linux-test. Si vous avez fait un peu de programmation en C, nous retrouvons le concept de pointeur.
Quand on appelle le fichier linux-test-lien-sym, il va automatiquement se diriger vers le fichier linux-test.
8
Quelles sont les points communs entre les liens symboliques et les liens durs ?
Le lien symbolique fait référence à un fichier dans un répertoire alors que le lien dur fait référence à un espace sur le disque dur.
- Les liens symboliques sont des fichiers de petite taille qui ont une existence propre sur le disque dur. Ces fichiers contiennent les
références des fichiers sources auquels ils correspondent.
- Dans le cas d'un lien dur, la suppression de l'un des deux fichiers n'affectera pas l'autre.
Dans le cas d'un lien symbolique, la suppression du fichier source entraînera un changement de comportement du fichier lien qui ne
correspondra plus à un fichier valide et sera donc dit "cassé" ("broken").

Utilité des liens


Les liens sont utiles si vous souhaitez qu'un fichier apparaisse dans plusieurs répertoires, ou sous un nom différent. Imaginez que ce
fichier fasse quelques megaoctets ... une copie à l'aide "cp" entraînera une perte de place non négligeable alors qu'un lien permettra de
limiter l'utilisation de l'espace disque. Mieux :un lien garanti que toute modification effectuée sur ce fichier concernera toutes les
apparentes « copies » dispersées.
Syntaxe de ln :
ln fichier-source fichier-lien ln -s permet d'effectuer un lien symbolique.
ln -b réalise une sauvegarde d'un fichier existant et dont nous aurions utilisé le nom avant de l'écraser.
ln -i demande à l'utilisateur s'il souhaite écraser le fichier qui a un lien sur le fichier source au cas ou celui-ci existerait déjà.
ln -d effectue des liens durs sur des répertoires ... seuls les utilisateurs possédant les droits adéquats pourront le faire.

Autre commandes :

which : Permet de connaître le chemin d'un exécutable


diff : Affichage des différences entre fichiers
cmp : Comparaison binaire
df : Emplacement du montage des systèmes de fichiers (partitions) et l'espace restant sur chacun d'eux
Sed : Permet d'appliquer des commandes sur un fichier et d'afficher le résultat (sans modification du fichier)
du : Donne la place du disque utilisée par le répertoire courant
file : Donne le type de fichier
pwd : Où suis-je ? Afficher le répertoire courant: permet de connaître le répertoire dans lequel on se trouve.
mdir : Affiche la liste des fichiers d'une disquette MS-Dos
mkmode : Crée un nom de fichier temporaire unique
emacs, joe : Éditer un fichier
who : Liste les utilisateurs connectés sur la station
free : Mémoire utilisée
clear : Efface l'écran
touch : Met à jour les dates d'accès des fichiers
logout : Permet de fermer son compte utilisateur
logname : Permet de savoir sous quel nom on est logué

Démarrage, Redémarrage & Arrêt

startx : demarrer Xwindows sous linux


reboot : redémarre de la machine
shutdown -r : arrête et redémarrer (rebooter).
shutdown -h : arrêter proprement linux.
exit : Déconnexion de l'utilisateur courant

Commande d'administration système Linux

at : Commande permettant de lancer une autre commande ou un processus en différé.


cron : Outil logiciel disponible sous Unix permettant de lancer périodiquement les processus indiqués dans la crontab.
crontab : table contenant des commandes qui doivent être exécutées périodiquement. C'est le programme cron qui
lance la commande. Les périodes peuvent être des heures (cron.hourly), des jours (cron.daily), des semaines
(cron.weekly) ou des mois (cron.monthly).
chmod : Placer les droits d'utilisation des fichiers
chown : Désigner l'utilisateur et le groupe propriétaire des fichiers
adduser : Ajouter un utilisateur
passwd : Spécifier ou modifier un mot de passe
chfn : Décrire un utilisateur
userdel : Supprimer un utilisateur
9
mount : Utiliser votre CD-ROM, votre lecteur de disquette
shutdown -h : Arrêter le système
mkbootdisk (device /dev/fd0 2.2.13-4.mdk): Crée une disquette de Boot
lilo -u : Désinstalle LILO

Messages Système

cat /proc/interrupts : Affiche les IRQ utilisés


cat /proc/ioports : Affiche les ports I / O utilisés
cat /proc/dma : Affiche l'utilisation des canaux DMA
cat /proc/pci : Affiche l'utilisation des ports PCI

La gestion des processus

top : permet de suivre les ressources que le processus utilise


ps : permet de connaître les processus actifs à un moment donné
pstree : permet d'afficher les processus sous forme d'arborescence et donc de voir leurs interdépendances
kill : Permet de tuer un processus en court : syntaxe kill [option] PID.
Pour tuer le processus, je peux d'abord faire un ps -ax pour connaître le numero du PID et ensuite si par exemple le PID
est 3600, je peux tuer la connexion en faisant :[root@localhost/root]# kill 3600

o l'éditeur vi ;

Les modes de vi

Les trois modes de fonctionnement de l'éditeur vi sont le mode de commande, le mode d'édition/de saisie et le mode de
dernière ligne. Pour pouvoir utiliser l'éditeur vi, vous devez impérativement comprendre le fonctionnement de ces trois
modes. Toutes les commandes disponibles avec l'éditeur vi peuvent être classées dans l'un de ces trois modes.
L'élément principal à savoir est que l'éditeur vi ne fonctionne pas comme un éditeur de texte standard. Tout type de
texte peut y être saisi mais cet outil ne fonctionne pas selon un mode tel écrit tel écran comme Microsoft Word.
L'éditeur vi ne propose aucune fonction de formatage. Par exemple, il ne permet pas d'insérer un retrait pour décaler
une chaîne. L'utilisateur doit réellement taper la commande permettant d'insérer ce retrait. Le résultat apparaîtra
uniquement sur la copie imprimée.
Ce cours à lui seul ne suffira pas à vous présenter intégralement l'éditeur vi et ses fonctions. Des livres et des cours sont
dédiés à son étude. Vous devez savoir qu'il est impossible de tirer totalement parti des fonctions d'un serveur Linux sans
une parfaite connaissance de l'éditeur vi et de ses commandes de base, notamment en ce qui concerne l'exploration et
la modification des fichiers de script et de configuration.

Éditer un fichier: (éditeur vi)


Passer du mode commande aux mode texte, taper du mode texte, enregistrer.
après le lancement de vi nous sommes en mode commande : appuyez sur la touche "Echap" puis sur "a" ("a", comme
"append", permet d'ajouter du texte après le curseur). Vous voyez en bas de l'écran apparaître la ligne "INSERT".
Sauvez un fichier : Il faut sortir du mode texte en appuyant à nouveau sur la touche "Echap". La mention "INSERT"
disparaît, nous sommes en mode commande. Tapez maintenant ":w nomfichier" et sur la touche retour chariot (afin
d'écrire ("write") le fichier). Vous devez obtenir en bas de l'écran ceci : "nomfichier" [New File] 3 lines, 142 characters
written
Supprimer du texte et quitter vi J'ai fait une faute d'orthographe! Nous allons supprimer le "p" qui est en trop dans
"suppprime" : déplacez le curseur sur un des "p" en trop, passez en mode commande ("INSERT" ne doit pas apparaître à
l'écran), appuyez sur "x", le "p" a disparu.
Sauver les modifications effectuées : Passez en mode commande et tapez " :wq" (write et quit). Vous êtes sorti de vi et
votre fichier a été sauvegardé sous linux-test. Pour revenir à vi en ouvrant le fichier linux-test au démarrage tapez :
[root@localhost/root]# vi linux-test Si vous souhaitez quitter sans enregistrer les dernières modifications, il vous faudra
passer en mode commande et taper " : q!".

D'autres commandes vi.


A : permet d'ajouter du texte à la fin de la ligne.
i : permet d'ajouter du texte avant le curseur.
o : permet d'ajouter une ligne en dessous du curseur.

10
O : permet d'ajouter une ligne au dessus du curseur.
Le retour chariot : permet d'aller à la ligne suivante.
dd : permet de supprimer la ligne courante.
X : permet de supprimer le caractère avant le curseur.
u : permet d'annuler la dernière commande effectuée.

L'éditeur VIm
Nous avons choisis de vous présenter cet éditeur de texte car c'est le plus utilisé sur la plupart des systèmes
UNIX. VIm est une version améliorée de l'éditeur VI, possédant plus de commandes et d'options. VI est
toujours le plus distribué sur les systèmes Unix, mais une maîtrise de VIm vous permettra de vous débrouiller
avec l'éditeur VI.

Appel de l’éditeur
Editer un fichier s’il existe, sinon, éditer un nouveau fichier vide :
vi fichier
Editer chacun des fichiers :
vi fichier_1 fichier_2

Modes d’édition
Contrairement aux éditeurs wysiwyg (what you see is what you get) VIm fonctionne par mode. 2 modes bien
distincts existent :
Le mode insertion :
Les caractères tapés s'insèrent directement dans le texte en cours
Le mode commande
Les caractères tapés sont considérés comme des commandes d'édition de texte
Le logiciel démarre par défaut en mode commande.
i permet de passer en mode insertion
: permet de passer en mode commande
ESC permet de sortir des différents modes.
Le tableau ci-dessous présente les commandes principales à utiliser en mode commande.

Mode Edition
Après l'utilisation de ces commandes, l'éditeur passe en mode édition :

11
o contrôle d'accès;

Les administrateurs système obtiennent un plus grand contrôle en utilisant trois catégories de droits d'accès distinctes:
lecture, écriture et exécution. Pour obtenir un exemple de fichiers Linux, accompagné d'explications détaillées
concernant les droits d'accès par défaut des fichiers et des répertoires, le droit d'accès en lecture détermine si
l'utilisateur est autorisé à accéder à un répertoire et à en visualiser le contenu. Cette fonctionnalité est divisée en deux
droits d'accès dans Linux. Le droit d'accès en exécution détermine si un utilisateur peut accéder à un répertoire, tandis
que le droit d'accès en lecture détermine s'il peut en lire le contenu. Il est ainsi possible de gérer de manière très précise
les droits d'accès au système. Cela entraîne des problèmes de sécurité car des utilisateurs inexpérimentés risquent de ne
pas être conscients des failles de sécurité qu'ils auront eux-mêmes créées. La plus grande vigilance est par conséquent
de mise.

Le fichier de commandes chown

Et les droits d'accès des répertoires dans Linux sont gérés par l'utilisation de deux commandes très importantes: les
commandes chown et chmod. La commande chown est à la disposition de tous les utilisateurs qui souhaitent indiquer le
propriétaire (utilisateur et groupe) d'un fichier ou d'un répertoire. Sa syntaxe est la suivante:
chown nom d'utilisateur:nom du groupe nom de fichier
Exemple:
chown user:cadres rapport_01
Dans cet exemple, l'utilisateur user et le groupe cadres sont maintenant les propriétaires du fichier rapport_01.

Changer l'appartenance de chaque FICHIER au PROPRIÉTAIRE et/ou au GROUPE.


Usage: chown [OPTION]... PROPRIÉTAIRE[:[GROUPE]] FICHIER...
ou: chown [OPTION]... [GROUPE] FICHIER...
ou: chown [OPTION]... --reference=FICHIER_RÉFÉRENCE...

Options Explication
-c, --changes Utiliser le mode bavard mais rapporter seulement les modifications lorsqu'elles surviennent
--dereference Modifier les références de chaque lien symbolique, plutôt que le lien symbolique lui-même
-h, --no-dereference Modifier les liens symboliques au lieu des fichiers référencés (disponible seulement sur les
systèmes offrant l'appel système lchown)
-f, --silent, --quiet Supprimer la plupart des messages d'erreur
--reference=FICH Utiliser l'appartenance du propriétaire et du groupe du FICHIER de référence au lieu de valeurs
explicites PROPRIÉTAIRE.GROUPE
-R, --recursive Modifier récursivement fichiers et répertoires
-v, --verbose Indiquer ce qui a été fait
--help Afficher l'aide-mémoire
--version Afficher le nom et la version du logiciel

Si non spécifié, le propriétaire demeure le même. Si non spécifié, le groupe d'appartenance reste inchangé, autrement il
est attribué au groupe d'établissement de session lorsqu'un point est présent. Un ':' peut remplacer le point.

Le fichier de commande chmod

CHMOD
Changer le modificateur des droits d'accès d'un fichier ou d'un répertoire.
Usage: chmod [OPTION]... MODE[,MODE]... FICHIER...
ou: chmod [OPTION]... MODE_OCTAL FICHIER...
ou: chmod [OPTION]... --reference=FICHIER_RÉFÉRENCE...

12
Options Explication
-c, --changes Utiliser le mode bavard mais rapporter seulement les modifications lorsqu'elles surviennent
-f, --silent, --quiet Supprimer la plupart des messages d'erreur
-v, --verbose Produire un diagnostic pour chaque fichier traité
--reference=FICHIERS Utiliser le mode des FICHIERS de référence au lieu de valeurs
-R, --recursive Modifier récursivement fichiers et répertoires
--help Afficher l'aide-mémoire
--version Afficher le nom et la version du logiciel

Chaque MODE se compose d'une ou plusieurs des options: ugoa (user, group, others, all), un des symboles +-= et d'une
ou plusieurs des options: rwx (read, write, execute).
Calcul de la valeur octale des droits d'accès

Signification des droits d'accès pour un fichier normal.

Signification des droits d'accès pour un répertoire

Affichage des droits (ls –l)

13
Les propriétés des répertoires sont des concepts importants dans Linux car les droits d'accès sont déclarés pour les
utilisateurs et les groupes sur la base de leur propriété. Par exemple, si le fichier rapport_01 permet un accès complet
des utilisateurs mais refuse tous les accès de groupes, user peut accéder au fichier, mais pas les membres du groupe
cadres. Ces droits d'accès sont déclarés par le biais de l'utilisation de la commande chmod:

chmod mode nom du fichier


Exemple:
chmod 700 rapport_01
Dans cet exemple, la commande a attribué à l'utilisateur tous les droits d'accès en lecture, écriture et exécution, mais a
refusé tout droit d'accès à son groupe et aux autres utilisateurs. Ces éléments sont indiqués dans le mode de la
commande. Dans ce cas, il s'agit du mode 700. Chaque chiffre correspond à un type d'utilisateur du système. À partir de
la gauche, le premier chiffre correspond à l'utilisateur ou au propriétaire. Le chiffre du milieu correspond au groupe,
tandis que le chiffre de droite correspond à l'ensemble des autres utilisateurs du système (utilisateur-groupe-autres).
Les trois types de droit d'accès sont: lecture, écriture et exécution. Ils sont associés aux valeurs numériques suivantes:
Lecture = 4
Écriture = 2
Exécution = 1
Pour attribuer à un utilisateur des droits d'accès spécifiques, il est nécessaire d'associer les bons numéros et de les
répertorier dans le bon ordre. Par exemple, pour attribuer au propriétaire des droits d'accès en lecture et en exécution,
au groupe des droits d'accès en exécution et à tous les autres utilisateurs des droits d'accès en écriture, la valeur
appropriée est 512. Bien entendu, pour n'accorder aucun droit d'accès, il suffit d'utiliser 0 pour la catégorie d'utilisateur.
L'attribution de droits d'accès dans Linux est un peu plus pénible qu'avec le système de menus de l'interface de
Windows 2000. Toutefois, la flexibilité de Linux permet à l'administrateur système expérimenté d'exercer un contrôle
plus précis sur le système.

L'attribut sticky bit

Les droits d'accès aux répertoires Linux stipulent que si un utilisateur possède des droits d'accès en écriture sur un
répertoire, ils peuvent modifier ou supprimer les fichiers du répertoire, même s'ils n'en sont pas propriétaires. De
nombreuses versions de Linux permettent d'éviter cela. Le propriétaire d'un répertoire peut définir l'attribut sticky bit.
Dans ce cas, les seules personnes habilitées à renommer ou à supprimer un fichier de ce répertoire sont le propriétaire
du fichier, le propriétaire du répertoire et le compte root. L'exemple suivant définit le droit d'accès sticky bit du
répertoire testdir:
Root$ chmod 1777 testdir
Root$ ls -l testdir
drwxrwxrwt 2 rtalbot rtalbot 512 Jul 15 21:23 testdir

Les Droits sous Linux


Droit de lecture (r pour Read) Pour un fichier: Autorise la lecture du contenu. Pour un répertoire: Autorise à lister les
fichiers contenus dans ce répertoire, si le droit d'exécution sur ce répertoire est positionné également.
Droit d'écriture (w pour Write) Pour un fichier: Autorise à en modifier le contenu. Pour un répertoire: autorise à créer
des fichiers et à en effacer, même si l'on n'est pas le propriétaire de ces fichiers.

14
Droit d'exécution (x pour exécute) Pour un fichier: Autorise l'exécution. Pour un répertoire: Autorise l'utilisateur à le
traverser, c'est-à-dire de s'y rendre ou de se rendre dans l'un de ses répertoires fils.
Champ 1 2 3 4 5 6 7
-rwxr-xr-x 1 Dupond labo2 3528 04 août 02 10:10 linux
drwxrwxr-- 3 Dupond labo2 512 02 jan 2002 conso
l rwxr-xr-- 2 Dupond labo2 210 16 dec 01 10:30 awk --> gawk

Définition des champs du tableur ci-dessus:

1 - Le premier (-) indique un fichier ou (d) indique un répertoire ou (l) indique un lien (raccourci). En suite par groupe de
trois nous avons d'abord sur la première ligne:

Les droits du propriétaire (rwx) lecture, écriture, exécution 7


Les droits groupe (r-x) lecture, exécution 5
Les droits de tout le monde (r-x) lecture, exécution 5

2 - Indique le nombre de répertoires.


3 - Indique le nom du propriétaire du fichier, du répertoire ou du lien.
4 - Indique le nom du groupe aux quels appartiennent fichiers & répertoire.
5 - Indique la taille.
6 - Indique la date de dernière modification & l'heure de création dans le cadre d'un (ls -l).

Indique le nom du fichier, répertoire ou lien

C'est la commande chmod qui permet de modifier les permissions qu'ont les utilisateurs sur les fichiers. Évidemment,
seul le propriétaire du fichier a le pouvoir de modifier ces permissions (à part bien sur le super utilisateur"root" qui peut
faire absolument tout ce que bon lui semble.

La commande à utiliser est: chmod mode fichiers...


Le paramètre mode indique quelles sont les autorisations données, il peut être «symbolique» ou «absolu»:
• mode symbolique: le paramètre mode prend la forme suivante:
[qui]... op permissions..., [op permissions...]
* «qui» désigne celui ou ceux qui recevront ces autorisations (u pour le propriétaire, g pour le groupe, o pour
les autres et a pour les trois précédents - c’est l’option par défaut),
* «op» sert à indiquer l’ajout ou la suppression de droits (+ pour ajouter, - pour enlever),
* les permissions à donner sont r, w et x
• mode absolu: le paramètre mode est représenté par un nombre octal composé de 3 chiffres.
Le premier chiffre représente les autorisations du propriétaire, le second ceux du groupe et le troisième
correspond à tous les utilisateurs. Pour calculer chacun des chiffres, on ajoute les valeurs des autorisations (4
pour lecture, 2 pour écriture, 1 pour exécution).

Exemple :
luser@localhost $ chmod u+rwx,go+rx fichier
Donne tous les droits au propriétaire, et les droits en lecture et exécution aux autres utilisateurs.
La commande précédente est équivalente à:
luser@localhost $ chmod 755 fichier
Un autre moyen de fixer ces autorisations au moment de la création du fichier est d’utiliser le bon masque. La
commande:
umask [nnn]
Donne cette valeur par défaut. Chaque fois qu’un nouveau fichier sera créé par l’utilisateur, il aura comme
droits le complément à 7 du nombre passé à umask.
Par exemple: umask 026 est équivalent à un chmod 751 sur le nouveau fichier créé.

Par exemple, décidons que n'importe qui pourra modifier le fichier linux :
[dupont@localhost/dupont]$ chmod a+w linux
"a" indique que tous les utilisateurs seront touchés par la modification des permissions
15
"+" signifie que c'est une permission supplémentaire que l'on donne. Pour en supprimer une il suffit de remplacer le
signe "+" par "-".
"w" signifie que c'est la permission d'écriture que nous donnons.

Pour vérifier que tout a bien fonctionné, faites un "ls -l linux", nous obtenons :
-rw-rw-rw- 1 dupont dupont 04 aoû 02 10:10 linux:
Si maintenant nous voulons supprimer ce droit d'écriture mais aussi le droit de lecture pour le groupe propriétaire et les
autres utilisateurs nous utilisons la syntaxe suivante : [dupont@localhost/dupont]$ chmod go-wr linux

"go"signifie que la commande affectera le groupe propriétaire et les autres utilisateurs.


"wr" signifie que la modification portera sur les droits d'écriture ou de lecture.

Chmod 644 - droit d'accès par défaut


Propriétaire lecture X écriture X exécution 4+2+0 6
Groupe lecture X écriture exécution 4+0+0 4
Tous lecture X écriture exécution 4+0+0 4

Chmod 755 - droit d'accès le plus utilisé


Propriétaire lecture X écriture X exécution X 4+2+1 7
Groupe lecture X écriture exécution X 4+0+1 5
Tous lecture X écriture exécution X 4+0+1 5

Chmod 777 - droit d'accès total (root)


Propriétaire lecture X écriture X exécution X 4+2+1 7
Groupe lecture X écriture X exécution X 4+2+1 7
Tous lecture X écriture X exécution X 4+2+1 7

Comme vu précédemment, la commande ls -l nous donne beaucoup d'informations sur un fichier.


root@localhost # ls -l
-r-xr-xr-x 1 root wheel 32464 27 May 09:35 /bin/ls
Nous allons nous intéresser aux parties : droits et propriétaire du fichier.

1. Propriétaire
Un fichier appartient à un utilisateur et à un groupe. Généralement le groupe dans lequel est l'utilisateur. Dans
l'exemple ci-dessus, root est l'utilisateur propriétaire et wheel le groupe propriétaire.

1.1 Changer l'utilisateur propriétaire


Nous allons pouvoir changer l'utilisateur propriétaire grâce à la commande : chown
La commande chown n'est utilisable que par root.
Remarque : les options entre crochets [ ] sont des options facultatives

Syntaxe : chown [-R] user[:group] fichier


L'option -R est utilisée pour changer le propriétaire de façon récursive pour les dossiers.

Exemple :
root@localhost # ls -l fichier
-rw-r--r-- 1 andrew kernel 0 7 Sep 10:52 fichier
root@localhost # chown linus
-rw-r--r-- 1 linus kenrel 0 7 Sep 10:52 fichier
root@localhost # chown richard:gpl
-rw-r--r-- 1 richard gpl 0 7 Sep 10:52 fichier

1.2 Changer le groupe propriétaire


16
La commande chown n'étant utilisable que par root, les utilisateurs disposent de la commande chgrp pour
changer le groupe propriétaire. L'utilisateur doit appartenir au nouveau groupe.
Syntaxe : chgrp [-R] group fichier

Exemple :
omar@localhost # ls -l fichier
-rw-r--r-- 1 omar gpl 0 7 Sep 10:52 fichier
omar@localhost # chgrp gnu fichier
-rw-r--r-- 1 omar gnu 0 7 Sep 10:52 fichier

2. Les droits
Sous linux il y a trois actions que l'on va autoriser ou non :
lire : Read
écrire : Write
exécuter : eXecute
Ces trois actions vont être définies pour trois types de personnes :
l'utilisateur propriétaire : User
le groupe propriétaire : Group
les autres : Others

2.1 Les fichiers


Read : lire le contenu du fichier
Write : modifier le contenu du fichier
eXecute : exécuter le fichier

2.2 Les dossiers


Read : lister le contenu du dossier
Write : modifier le contenu (supprimer un fichier, renommer un fichier)
eXecute : exécuter des commandes à l'intérieur du dossier.
2.3 Modifier les droits
Nous allons pouvoir modifier les droits avec la commande chmod. Cette commande peut être utilisée de deux
façons différentes : avec des lettres ou avec des chiffres.

Syntaxe : chmod [–R] droits fichier


Mode lettré
Dans ce mode, nous allons utiliser des lettres et des opérateurs pour ajouter ou supprimer des droits.
lettre signification lettre signification
u utilisateur r read
g groupe w write
o others x execute
a tous

Les opérateurs disponibles sont :


+ ajoute un droit
- supprime un droit
= ajoute un droit et supprime les autres

Exemple :
root@localhost # ls -l fichier
-rw-r--r-- 1 root wheel 0 7 Sep 10:52 fichier
root@localhost # chmod u+x fichier
-rwxr--r-- 1 root wheel 0 7 Sep 10:52 fichier
root@localhost # chmod g+wx,o-r fichier
-rwxrwx--- 1 root wheel 0 7 Sep 10:52 fichier
17
root@lab# chmod a=r fichier
-r--r--r-- 1 root wheel 0 7 Sep 10:52 fichier

Mode chiffré
Dans ce mode, nous allons transformer les droits en valeurs octales :

Chiffre signification
4 read
2 write
1 execute

En additionnant ces chiffres, on arrive à un nombre à trois chiffres. Les centaines pour l'utilisateur, les dizaines
pour le groupe et les unités pour les autres.

Exemple :
Nous allons donner les droits de lecture, écriture et exécution à l'utilisateur. Les droits de lecture et exécution
au groupe et aux autres.
4+2+1 = 7
4+1 = 5
root@localhost # ls -l fichier
-rw-r--r-- 1 root wheel 0 7 Sep 10:52 fichier
root@localhost # chmod 755 fichier
-rwxr-xr-x 1 root wheel 0 7 Sep 10:52 fichier

CHGRP
Changer le groupe d'appartenance de chaque FICHIER au GROUPE.
Usage: chgrp [OPTION]... GROUPE FICHIER...
ou: chgrp [OPTION]... --reference=FICHIER RÉFÉRENCE...

Options Explication
-c, --changes Utiliser le mode bavard mais rapporter seulement les modifications lorsqu'elles surviennent
-h, --no-dereference Modifier les liens symboliques au lieu des fichiers référencés (disponible seulement sur les
systèmes offrant l'appel système lchown)
-f, --silent, --quiet Supprimer la plupart des messages d'erreur
--reference=FICH Utiliser le groupe de référence des FICHIERS au lieu d'une valeur de groupe
-R, --recursive Modifier récursivement fichiers et répertoires
-v, --verbose Produire un diagnostic pour chaque fichier traité
--help Afficher l'aide-mémoire
--version Afficher le nom et la version du logiciel

3. Umask
Par défaut, tous les fichiers créés ont comme droit 666 et les dossiers 777. L'umask est un masque qui va
réduire ces droits. Lors de la création d'un fichier, le système va soustraire l'umask aux droits par défaut. Par
l'umask est à 0022.
On a donc 666 - 022 = 644.

Vérifions en créant un fichier.


root@localhost # touch document
root@localhost # ls -l document
-rw-r--r-- 1 root wheel 0 7 Sep 11:02 document

On peut définir le umask grâce à la commande umask.


root@localhost # umask 077

UMASK

18
Modifier la valeur octale de base lors de la création d'un fichier ou d'un répertoire.
Usage: umask VALEUR
Masque d'un fichier

4. Les droits spéciaux


Il existe trois droits spéciaux : suid, sgid et sticky bit. Ils sont ajoutés grâce à la commande chmod.

Droit lettre chiffre


suid s 4
sgid s 2
sticky t 1

4.1 SUID
Lorsque vous exécutez une commande, celle-ci se lance avec votre uid. Cette commande aura donc accès
seulement aux fichiers où vous possédez des droits.
Si le suid est placé sur un exécutable, ce dernier se lancera avec l'uid de son propriétaire.

4.2 SGID
Le droit sgid fonctionne de la même façon que le suid en ce qui concerne les exécutables.
Mais le sgid peut aussi être attribué à un dossier. Tout fichier créé dans un dossier portant le sgid aura comme
groupe propriétaire le groupe du dossier.

4.3 Sticky
Si vous possédez le droit d'écriture sur un dossier, vous pouvez renommer ou supprimer tous les fichiers qu'il
contient. Ce fonctionnement n'est pas adéquat pour un dossier public, où tout le monde à accès en écriture
comme "/tmp". Si le sticky bit est placé sur un dossier, seul le possesseur d'un fichier pourra le renommer ou
le supprimer.

 La hiérarchie des répertoires :


o répertoires racines, courant et maison;

Organisation des répertoires - arborescence d'un système UNIX classique


/ : Répertoire racine, tous les autres répertoires en dépendent.
/bin : contient les binaires fondamentaux à la gestion de Linux.
/dev : contient les points d'entrée des périphériques. De même /dev/hda1 correspond à la première partition de mon
disque dur IDE, si mon disque dur est un SCSI, son nom sera /dev/sda1. Un dernier exemple : /dev/fd0 correspond à
mon lecteur de disquettes.
/etc : contient tous les fichiers de configuration de linux. On y retrouve par exemple le fichier /etc/passwd, (fichiers
passwd, group, inittab, ld.so.conf, lilo.conf, ...)
/sbin : contient les binaires du système. On y trouve par exemple la commande shutdown qui permet d'arrêter
l'ordinateur.
/home : répertoire qui contient les répertoires des utilisateurs du système. Le répertoire des utilisateurs est
automatiquement créé avec la création d'un compte. Tous mes fichiers personnels sont dans /home/
/lost+found : est le répertoire des fichiers perdus. Ces fameux fichiers qui, du fait d'erreur disque, se retrouvent sans
chemin d'accès. Le binaire fsck, qui est lancé régulièrement au démarrage de linux, se charge de les détecter et de les
stocker dans le répertoire /lost+found
/tmp : est un répertoire accessible par tous les utilisateurs du système, il permet de ne pas encombrer son répertoire
19
personnel par des fichiers que l'on souhaite de toute manière détruire ou modifier. Il contient les fichiers temporaires
/var contient des données variables
/var/spool : répertoire des fichiers qui servent de file d'attente. Par exemple, les files d'attente de l'imprimante se
trouvent sous ce répertoire. Les données à imprimer, envoyer, ... sont stockées dans ces files d'attentes jusqu'à ce
qu'elles soient traitées.
/lib contient des bibliothèques partagées essentielles au système lors du démarrage
/mnt contient les points de montage des partitions temporaires (cd-rom, disquette, ...)
/opt contient des packages d'applications supplémentaires
/root répertoire de l'administrateur root
/boot fichiers statiques du chargeur de lancement
/proc système de fichiers virtuel d'information du noyau et des processus
/sys état des périphériques (model device) et sous-systèmes (subsystems) /sys/block, /sys/bus, /sys/class, /sys/devices,
/sys/firmware, /sys/module, /sys/power,
/net
/selinux
/media
/misc
/usr : contient tout ce qui concerne les binaires utiles à tous les utilisateurs et quelques commandes d'administration.
On y trouve cependant d'autres choses: /usr/bin contient donc les binaires disponibles pour les utilisateurs et les scripts.

FHS (Filesystem Hierachy System) est une convention qui organise l'arborescence des répertoires sous Linux.
Cette convention est aussi valable pour Unix. Cette convention est primordiale, grâce au FHS lorsque vous
installez un programme sous linux, peu importe votre distribution, les fichiers iront toujours dans les mêmes
répertoires.
1. Hiérarchie root
Sous Linux, toute l'arborescence part de "/" appelé root. Ici se trouvent tous les dossiers élémentaires dont
voici la description.

2. Hiérarchie usr
Le répertoire "/usr" contient certains dossiers déjà présents dans "/" (bin, sbin, lib, tmp)
Mais ceux-ci ne sont pas nécessaires au fonctionnement minimal du système. On va donc y trouver les fichiers
relatifs aux programmes tierce partie, par exemple le navigateur web ou les lecteurs multimédias.

20
3. Hiérarchie var
Un fichier variable est un fichier dont le contenu va changer fréquemment et sans l'intervention directe de
l'homme (ex : fichier de log). Ils sont opposés aux fichiers statiques, fichiers dont le contenu ne varie pas (ex :
fichier de configuration) Le dossier "/var" contient tous les fichiers variables.

Commandes liées à l’arborescence de fichiers


Nom d’un fichier (nom absolu / nom relatif)
Les noms de fichiers sont "case sensitives", c’est à dire qu’ils tiennent compte des majuscules et des
minuscules. Le nom d’un fichier peut contenir jusqu’à 255 caractères.
Pour accéder à un fichier comportant des caractères spéciaux dans son nom, on doit placer le nom du fichier
entre guillemets (ou utiliser des backslash avant les caractères spéciaux) :
luser@localhost $ vi "ceci est un test.txt"
luser@localhost $ vi ceci\ est\ un\ test.txt
Deux notions sont liées au nom du fichier: son chemin absolu et son chemin relatif.
• Le chemin absolu est composé du nom du fichier précédé par le chemin d’accès à ce fichier depuis la racine
de l’arborescence (exemple: /u/students/tri/user/.profile);
• Le chemin relatif, quand à lui est une troncature de cette arborescence par rapport au répertoire courant
(exemples: ~/.profile, ../other_user/.profile, ./.oracle). En ce qui concerne les chemins relatifs, un certain
nombre de raccourcis sont utilisés:
• . désigne le répertoire courant,
• .. désigne le répertoire parent du répertoire courant,
• ~/ est la contraction de votre HOME directory.

Visualisation de l’arborescence
La commande ls permet d’obtenir la liste des fichiers d’un répertoire ou d’une arborescence de répertoires.
Un certain nombre d’options permettent d’afficher plus ou moins d’informations sur ces fichiers et répertoires
• -l: format détaillé (cf. exemple),
• -a: liste aussi les fichiers qui commencent par «.» (et qui normalement n’apparaissent pas dans la liste
normale),
• -d: si l’argument est un répertoire, la commande liste seulement son nom et pas les fichiers qu’il contient,
• -t: affiche en triant par date de dernière modification
• -R: listage récursif des sous répertoires,
• -F: fait suivre le nom des répertoires par un «/», le nom des exécutables par une «*» et le nom des liens
symboliques par un «@»...
• -g: pour afficher les informations sur le groupe...

21
Exemple :
luser@localhost $ ls
toto profile tools

luser@localhost $ ls -a
. .profile
.. .rhosts
.cshrc .shrc
.login tools
.login_conf profile
.mailàliases toto
.mailrc test.c

La première information concerne le type du fichier. Cet indicateur peut prendre les valeurs suivantes:
• - pour un fichier ordinaire,
• d pour un répertoire,
• b pour un fichier spécial de type bloc (périphériques...),
• c pour un fichier spécial de type caractère (disque, streamer...),
• l pour un lien symbolique,
• s pour un socket.
La seconde concerne les droits (utilisateur-propriétaire, groupe de travail, autres utilisateurs), vient ensuite le
nombre de liens sur le fichier (ou le répertoire), puis le propriétaire effectif, la taille, la date de dernière
modification et le nom du fichier.

Rappel sur les droits :

o création et suppression de répertoires;

À l'image de l'exploration du système de fichiers Linux, la création de fichiers et de répertoires dans Linux suppose
uniquement de connaître les commandes à utiliser et leur fonctionnement. Les commandes présentées ici permettront
à l'utilisateur de créer, de copier, de déplacer, de renommer et de supprimer des fichiers et/ou des répertoires.
Remarque: certaines commandes utilisent la même syntaxe pour les fichiers et les répertoires, d'autres non. Comme
dans les autres systèmes d'interface de ligne de commande, l'utilisateur doit mémoriser et comprendre le moment
d'utiliser chaque commande. Avant d'utiliser ces commandes pour la première fois, en particulier les commandes de
suppression, il est judicieux de les tester sur des fichiers et des répertoires factices.

REMARQUE:
22
Les utilisateurs ne peuvent modifier que les fichiers et répertoires pour lesquels ils possèdent les permissions système
nécessaires. Ainsi, les utilisateurs ne peuvent pas apporter de modifications aux données par accident ou par
malveillance, comme supprimer les fichiers indispensables pour les systèmes Linux.

o recherche de fichiers;

Recherche, analyse, modification de contenus


Recherche de fichiers dans l’arborescence

La commande find sert à rechercher de façon récursive des fichiers dans des répertoires et selon les options spécifiées.
Usage: find [répertoire(s)] [critères de sélection]

Options Explication
-name Recherche par le nom
-type Recherche par le type :
f (normal)
d (directory - répertoire)
c (caractère)
b (bloc)
-user Recherche par le nom d'utilisateur
-group Recherche par le nom de groupe
-size Recherche par la taille
-size n (taille exacte de bloc)
-size nc (taille exacte en octet)
-size +n (plus de n)
-size -n (moins de n)
-atime Recherche selon : access time (dernier accès)
-mtime modification time (dernière modification)
-ctime creation time (date de création) + ou - détermine le nombre de jours de plus ou de moins selon le
type de recherche
-perm Recherche selon la permission
-link Recherche par nombre de lien
-exec Permet l'exécution de la commande qui suit immédiatement le mot \exec sur chacun des fichiers
trouvés. Notez que l'option -exec doit être la dernière de la commande find.
Le nom de la commande suivant \exec doit être suivi de "\;"
Les deux accolades "{ }" devront suivre le nom de la commande donné pour spécifier que les
arguments de la commande sont les fichiers trouvés.
-ok Identique à \exec sauf que celle-ci requiert une confirmation avant l'exécution de la commande
-print Affiche la liste de fichiers trouvés. Cette option est nécessaire, sur certains systèmes, si l'on veut
obtenir un affichage à l'écran

Il est utile de pouvoir retrouver certains fichiers dans l’arborescence du système et d’effecteur certains
23
traitements avec cette liste de fichiers. La commande utilisée est: find répertoires... [options...]
Où répertoires... permet d’indiquer le (ou les) répertoire(s) de départ de la recherche et les options
permettent de traiter et de récupérer les données.
La commande find de nombreuses options qui permettent de rechercher des fichiers qui ont certaines
caractéristiques:
• -name modèle_nom: tous les fichiers dont le nom répond au modèle modèle_nom,
• -size n: tous les fichiers dont la taille est n (en blocs de 512 octets),
• -mtime n: tous les fichiers dont le nombre de jours depuis la dernière modification est n,
• -atime n: tous les fichiers dont le nombre de jours depuis le dernier accès est n,
• -user nom: tous les fichiers dont le propriétaire est nom,
• -type t: tous les fichiers du type t (f pour un fichier ordinaire, et les autres abréviations comme pour la
commande ls -l),
• -perm nombre: tous les fichiers dont les autorisations sont de la forme nombre,
• -perm -nombre: tous les fichiers dont les autorisations sont au moins de la forme nombre...

D’autres options permettent de traiter les informations reçues:


• -print: pour afficher à l’écran le résultat de la commande,
• -exec commande \;: permet d’exécuter une commande sur les fichiers qui vérifient les critères de la
commande find. Ces fichiers sont passés à la commande –exec par les signes {}.
Attention à bien terminer la commande par \ ;
• -ok commande \;: effectue la même opération que ci-dessus mais demande une confirmation de l’utilisateur
avant l’exécution de la commande.
Il est possible de passer plusieurs critères de sélection des fichiers. Pour cela, il faut utiliser les opérateurs
logiques ! (négation), -o (ou) et regrouper tous ces critères dans des parenthèses. L’opérateur et étant obtenu
par juxtaposition des critères.

find / : Chercher a partir de la racine du fichier en cours


find -name : Spécifier un nom de fichier
find -print : Afficher le résultat a l'écran

Exemples :
luser@localhost $ find / -name "*info*" –print
Affiche le nom de tous les fichiers de toute l’arborescence du système qui contiennent le mot info,

luser@localhost $ find ~ -mtime -20 -print


Affiche les fichiers à partir du répertoire de l’utilisateur qui ont été modifiés dans les vingt derniers jours,

luser@localhost $ find /u/students ! -user X -exec ls -lia {} \;


Affiche un listing détaillé de tous les fichiers qui n’appartiennent pas à l’utilisateur X dans l’arborescence
/u/students,

luser@localhost $ find /u/students/X -perm -002 -exec ls -l {} \;


Affiche un listing détaillé des fichiers de l’arborescence /u/students/X qui ont au moins l’autorisation
d’écriture pour les autres,

luser@localhost $ find . \( -name a.out -o -name core -o -name "*.o" \) -ok rm {} \;


Supprime après confirmation de l’utilisateur tous les fichiers à partir du répertoire courant (et dans tous les
sous répertoires) avec noms a.out, core et .o ...

La commande find

Pour mieux comprendre l'utilisation de la commande find, imaginez que vous ayez tapé un document et que vous ayez
oublié son nom. Vous vous rappelez seulement que vous l'avez créé il y a moins de 4 jours, que sa taille est inférieure à
24
350 Ko et qu'il contient votre projet Expérience_scientifique_biologie. Pour utiliser la commande find afin de localiser le
fichier, vous pouvez par exemple avoir recours à la syntaxe suivante.
$ find /home/test -type f -size -350k -atime -4 | xargs -0 grep 'Expérience _scientifique _biologie'
La commande find parcourt la hiérarchie des répertoires et applique la chaîne logique à chaque élément du dossier.
Dans l'exemple mentionné précédemment, la commande find commence dans le dossier d'accueil /test. Elle applique
ensuite la chaîne logique à chaque élément de ce dossier. Dans ce cas: -type f -size -350k -atime -4. Chaque test
d'attribut est évalué: s'il est vrai, le système passe au test d'attribut suivant. Si l'entrée est un répertoire, la commande
find le parcourt.
La liste suivante décrit les divers attributs de l'exemple précédent:
 '-type f' l'entrée est-elle un fichier?
 '-size -350k ' l'entrée est-elle inférieure à 350 Ko?
 '-atime -4' le dernier accès a-t-il eu lieu au cours des 4 derniers jours?
Si un test d'attribut échoue, la commande find arrête le processus et passe directement à l'entrée suivante. Dans
l'exemple cité précédemment, les fichiers dont la taille est inférieure à 350 Ko échouent au test d'attribut de taille. Les
autres attributs, tels que l'heure du dernier accès, ne sont pas testés.

La commande locate
La commande locate a la même mission que find. Pourtant vous verrez qu'en utilisant la commande locate, le fichier sera trouvé
beaucoup plus rapidement. Pourquoi ? Parce que locate ne va pas chercher le fichier dans toute l'arborescence des répertoires mais
va localiser la position du fichier dans une base de données qui contient la liste des fichiers existants. Cette base de données est en
général automatiquement générée une fois par jour par le système grâce à une commande appelée updatedb. Sur un système Linux
Redhat, cette base de donnée se trouve dans le répertoire /usr/lib et se nomme locatedb.

La syntaxe est donc simple: $locate nom_du_fichier

Bien que la commande locate soit très intéressante, elle ne possède pas la puissance des options de find. De plus, si vous créez des
fichiers pendant la journée et que vous les recherchez avec la commande locate, il n'est pas sûr que la base de données ait été
remise à jour. Bref, locate est un complément de find.

La commande which
which vous permet simplement de connaître le chemin d'un exécutable. Exemple: $which ls
/bin/ls

o Fichiers spéciaux de périphériques.

Un fichier spécial constitue le moyen d'accès à un périphérique physique (device) (comme un disque, un dérouleur de
bande ou une ligne de communication) ou une FIFO (pour "first-in-first-out"), qui est l'un des mécanismes utilisés pour
transférer des données entre processus.
Il existe deux espèces de fichiers spéciaux de périphériques : les fichiers "blocs" et les fichiers "caractère". Un fichier
spécial organisé par bloc contient un tableau de blocs de taille fixe (en général de 512 octets). Un ensemble de tampons
du noyau est utilisé comme "mémoire cache" pour accélérer les E/S. Un fichier spécial de type caractère n'a pas de
structure interne fixe. Les E/S peuvent se faire en unités très petites (caractère par caractère) ou très grandes (pistes
entières de disque).
La même unité physique peut contenir à la fois des fichiers spéciaux organisés par bloc et des fichiers spéciaux de type
caractère ; ceci est en général le cas pour les disques. Le système de fichiers accède aux fichiers ordinaires et aux
répertoires à travers un fichier spécial organisé par bloc, afin de profiter du "buffer cache" (antémémoire). Parfois,
principalement pour les applications en base de données, un accès plus direct est nécessaire. Un gestionnaire de base de
données peut contourner complètement le système de fichiers et utiliser un fichier spécial de type caractère pour
accéder au disque (mais il n'accédera pas à la même région du disque que celle utilisée par le système de fichiers). A cet
effet, la plupart des systèmes de UNIX possèdent un fichier spécial de type caractère qui permet le transfert direct des
données entre l'espace d'adressage d'un processus et le disque, en utilisant l'accès direct à la mémoire (DMA). On gagne
ainsi en performance.
Un fichier spécial possède un noeud d'index (inode), mais ce noeud ne pointe sur aucune donnée sur disque. A la place,
cette partie du noeud d'index contient un numéro de périphérique. C'est un index dans une table utilisée par le noyau
pour localiser une collection de sous-programmes appelée un programme de gestion de périphérique ou pilote (device
driver).
Lorsqu'une primitive doit réaliser une opération sur un fichier spécial, elle appelle le sous-programme approprié du
"driver" du périphérique. La suite dépend alors exclusivement du concepteur du programme de gestion de périphérique
: puisque le pilote s'exécute dans le noyau et non comme un processus utilisateur, il peut accéder à toute partie du
25
noyau, à tout processus utilisateur, aux registres et à la mémoire de l'ordinateur lui-même. Il est relativement facile
d'ajouter de nouveaux gestionnaires de périphériques au noyau. On dispose ainsi d'une manière détournée de réaliser
de nombreuses choses autres que la gestion d'E/S de nouveaux terminaux. Elle est employée de façon courante pour
contourner UNIX et lui faire des choses qui n'étaient pas parmi les buts de ses concepteurs.

Type d’un fichier:


Il est possible sous Unix/Linux de connaître aussi le type de fichier sur lequel on travaille. En dehors de
l’extension qui peut être trompeuse, tous les fichiers ont un en-tête permettant de déterminer leur type
(répertoire, exécutable, texte ASCII,…). L’ensemble de ces en-têtes est défini dans le fichier /etc/magic. La
commande: file nom_de_fichier
Permet de visualiser le type du fichier en question.

Exemple :
luser@localhost $ file fichier.ps
fichier.ps: PostScript document

o méthode d'accès;

Monter, démonter un système de fichiers

La commande mount est utilisée par linux dès son démarrage. Elle permet de monter un système de fichiers. Ce
montage est parfois effectué automatiquement grâce au fichier de configuration /etc/fstab. Ce fichier contient tout ce
que linux doit monter lors de son démarrage, mount n'est accessible que par root.

Montage, démontage d'une partition Dos (Ne doit pas être en cours d'utilisation)

1: mount -t vfat /dev/hda1 /dos/c


2: mount /dev/hda1 /dos/c
Pour convertir automatiquement les fins de lignes des fichiers ASCII ms-dos au format unix, utiliser l'option conv.
conv=binary/conv=auto -t vfat /dev/hda1 /dos/c mount -o conv=auto -t vfat /dev/hda1 /dos/c
Démontage d'une partition Dos (Ne doit pas être en cours d'utilisation)
umount /dos/
Montage du lecteur de CD-ROM
1: mount -t iso9660 /dev/hdb /cdrom
2: mount /dev/cdrom /cdrom
On peut préciser l'option –o ou -r pour monter un périphérique en lecture seule, tel qu'un cdrom ou une disquette
protégée en écriture par exemple. Montage du lecteur de disquettes
mount /dev/fd0 /floppy

mount
La commande mount permet d’accéder aux périphériques de type blocs (les partitions) sur lesquels un système
de fichiers existe. La commande mount attache le répertoire racine du système de fichiers à un répertoire pré-
existant appelé point de montage (mountpoint).
mount -t typefs -o options périphérique point_de_montage

Elle sert à intégrer un système de fichier dans le système de fichier de la racine. Elle doit être exécutée en tant que root. Sa syntaxe
habituelle est :
# mount -t type_de_système_de_fichier -o options /dev/periphérique /mnt/répertoire_de_montage
à condition que le type de système de fichier soit supporté par le noyau et que le répertoire
/mnt/répertoire_de_montage existe déjà.

a. Montage par périphérique


La partition sdb1 disposant de nouveau d’un système de fichiers ext3, la commande suivante rattache la racine
du système de fichiers contenu dans sdb1 au répertoire /mnt/DATA.
# mount -t ext3 /dev/sdb1 /mnt/DATA
La commande mount utilisée seule donne tous les détails sur les systèmes de fichiers actuellement montés
(périphériques, système de fichiers, point de montage, options) :
# mount
26
/dev/sda6 on / type ext3 (rw,acl,user_xattr)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
debugfs on /sys/kernel/debug type debugfs (rw)
udev on /dev type tmpfs (rw)
devpts on /dev/pts type devpts (rw,mode=0620,gid=5)
/dev/sda7 on /home type ext3 (rw,acl,user_xattr)
/dev/sda1 on /windows/C type fuseblk (rw,noexec,nosuid,nodev,noatime,
allow_other,default_permissions,blksize=4096)
securityfs on /sys/kernel/security type securityfs (rw)
/dev/sdb1 on /mnt/DATA type ext3 (rw)

Les mêmes informations sont accessibles en affichant le contenu du fichier /etc/mtab.

Montage par label


On peut souligner l’intérêt pratique d’utiliser des labels pour ses systèmes de fichiers. En cas de réorganisation
des disques (déplacement dans une chaîne SCSI par exemple), l’ordonnancement des périphériques est modifié.
L’utilisation des noms de périphériques oblige dans ce cas à modifier le fichier /etc/fstab à chaque
modification. Ce n’est pas le cas avec les labels. Utilisez le paramètre -L de mount, suivi du nom du volume.
# mount -t ext3 -L DATA /mnt/DATA
# mount
...
/dev/sdb1 on /mnt/DATA type ext3 (rw)
La liste des labels actuellement connus de Linux peut être obtenue en listant le répertoire /dev/disk/by-label.
Notez que le label est un lien symbolique vers le fichier périphérique correspondant :
# ls -l /dev/disk/by-label/
total 0
lrwxrwxrwx 1 root root 10 mar 18 14:00 DATA -> ../../sdb1
lrwxrwxrwx 1 root root 10 mar 18 14:00 DATAFAT -> ../../sdb5

Montage par UUID


Chaque système de fichiers dispose d’un identifiant unique appelé UUID : Universal Unique Identifier,
généralement un nombre aléatoire codé sur assez de bits pour que sur un ou plusieurs systèmes donnés, ils
soient tous différents. Ainsi si le disque change de position logique, l’UUID ne varie pas et mount retrouve le
système de fichiers, alors qu’il est théoriquement bien plus possible que deux systèmes de fichiers portent le
même label.
Il existe plusieurs moyens de connaître l’UUID d’une partition. Si udev est utilisé sur votre Linux, alors la
commande vol_id est probablement disponible. Il se peut qu’elle ne soit pas présente dans le path, par exemple
sur une /lib/udev.
# ./vol_id -u /dev/sdb1
67f6e4b8-635c-4103-9a81-877fb7db29fe
Si votre système de fichiers est en ext2 ou ext3 la commande dumpe2fs retourne énormément d’informations
dont l’UUID :
# dumpe2fs -h /dev/sdb1 | grep UUID
dumpe2fs 1.40.2 (12-Jul-2007)
Filesystem UUID: 67f6e4b8-635c-4103-9a81-877fb7db29fe
Enfin tout comme pour les labels, le contenu de /dev/disk/by-uuid contient les liens symboliques des UUID
pointant sur le fichier périphérique correspondant :
# ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 mar 18 14:00 47DF-9209 -> ../../sdb5
lrwxrwxrwx 1 root root 10 mar 18 14:00 67f6e4b8-635c-4103-9a81-877fb7db29fe -> ../../sdb1
lrwxrwxrwx 1 root root 10 mar 3 09:23 a1cc2282-b6f4-46e1-bc94-91585f1c5872 -> ../../sda5
lrwxrwxrwx 1 root root 10 mar 3 09:23 C2B072B5B072AF91 -> ../../sda1
lrwxrwxrwx 1 root root 10 mar 3 09:23 c56b96b5-e52f-453a-ba9daa1df6f0c3c0-> ../../sda7
lrwxrwxrwx 1 root root 10 mar 3 09:23 dd5e92d3-b931-4c18-91a3-5edccc57ced9 -> ../../sda6
O Notez que vol_id reconnaît les UUID de la plupart des systèmes de fichiers, y compris FAT et NTFS. Vol_id
27
et dumpe2fs retournent bien plus d’informations. Par exemple vol_id -l <périphérique> retourne le label
(volume name, étiquette).
Pour monter un système de fichiers par UUID, utilisez le paramètre -U de mount :
# mount -t ext3 -U 67f6e4b8-635c-4103-9a81-877fb7db29fe /mnt/DATA
# mount
/dev/sdb1 on /mnt/DATA type ext3 (rw)

Remonter un système de fichiers


Vous n’êtes pas obligé de démonter puis de remonter un système de fichiers si vous modifiez une option. Si
vous modifiez une option de montage du système de fichiers (via le paramètre -o) vous pouvez passer l’option
remount pour que la modification soit prise tout de suite en compte. Ne retapez pas la ligne de commande
complète, mais seulement le périphérique ou le point de montage. Dans l’exemple suivant le système de fichiers
est remonté en lecture seule :
# mount -o ro,remount /mnt/DATA
# mount
...
/dev/sdb1 on /mnt/DATA type ext3 (ro)

b. Options de montage
Chaque système de fichiers accepte un certain nombre d’options de montage qui peuvent être spécifiées après le
paramètre -o de mount. Les options sont séparées par des virgules. Sauf indication contraire les options
suivantes fonctionnent avec ext2 et ext3.

28
c. umount
La commande umount détache le système de fichiers du point de montage.
# umount /mnt/DATA
Si un ou plusieurs fichiers du système de fichiers à démonter sont encore en cours d’utilisation, alors umount
ne marchera pas. Vous devez vous assurer qu’aucun processus n’accède au système de fichiers.
# umount /mnt/DATA
umount: /mnt/DATA: périphérique occupé
La commande lsof vous aide à déterminer quel processus est actuellement en train d’utiliser un fichier du point
de montage. Ici c’est le shell bash lancé par l’utilisateur seb qui y est présent (probablement que le répertoire
courant est /mnt/DATA).
# lsof /mnt/DATA
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
bash 5366 seb cwd DIR 8,17 4096 2 /mnt/DATA
De manière très violente vous pouvez forcer l’arrêt des processus accédant au point de montage avec fuser. Il
est fort probable que l’utilisateur concerné n’apprécie pas du tout (dans le cas présenté ici son shell sera arrêté et
il sera déconnecté).

29
# fuser -km /mnt/DATA

d. /etc/fstab
Le fichier /etc/fstab contient une configuration statique des différents montages des systèmes de fichiers. Il est
appelé à chaque démarrage du système car c’est ici qu’on indique les périphériques et leurs points de montage.
Il contient six champs.
périphérique point_de_montage typefs options dump fsck
Les champs sont séparés par des espaces ou des tabulations.

Voici un exemple tronqué (les systèmes de fichiers virtuels n’apparaissent pas) de fichier /etc/fstab :

Plutôt que de préciser des noms de périphériques statiques, il peut être préférable de préciser une étiquette
(label, volume) ou un UUID.
LABEL=BOOT /boot ext3 acl,user_xatt r 1 2
UUID=f0bed37c-9ddc-4764-ae7f-133205c36b5d ext3 acl,user_xattr 12
Enfin, si vous n’appréciez aucune de ces solutions mais que vous souhaitez utiliser des chemins, vous pouvez
utiliser les liens présents dans /dev/disk/by-XXX où xxx représente :
• id : les identifiants de contrôleur, matériel et partition des différents volumes
• label : les identifiants par label
• uuid : les identifiants par uuid
• path : les identifiants par chemin matériel (bus, lun, etc.).
Voici un exemple :
./by-id:
lrwxrwxrwx 1 root root 9 mar 20 08:16 ata-HDT722516DLA380_VDKD1CTCE25WSK-> ../../sda
lrwxrwxrwx 1 root root 10 mar 20 08:16 ata-HDT722516DLA380_VDKD1CTCE25WSK-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 mar 20 08:16 ata-HDT722516DLA380_VDKD1CTCE25WSK-part2 -> ../../sda2
lrwxrwxrwx 1 root root 10 mar 20 08:16 ata-ST3160811AS_6PT1LX2M-part1 ->../../sdb1

./by-label:
lrwxrwxrwx 1 root root 10 mar 20 13:44 EXTERNE -> ../../sdc1
lrwxrwxrwx 1 root root 10 mar 20 08:16 ROOT -> ../../sda3
lrwxrwxrwx 1 root root 10 mar 20 08:16 BOOT -> ../../sda2
...
./by-path:
lrwxrwxrwx 1 root root 9 mar 20 13:44 pci-0000:00:1a.7-usb-0:2:1.0-scsi-0:0:0:0 -> ../../sdc
lrwxrwxrwx 1 root root 10 mar 20 13:44 pci-0000:00:1a.7-usb-0:2:1.0-scsi-0:0:0:0-part1 -> ../../sdc1
lrwxrwxrwx 1 root root 9 mar 20 08:16 pci-0000:00:1f.2-scsi-0:0:0:0 ->../../sda

30
./by-uuid:
lrwxrwxrwx 1 root root 10 mar 20 08:16 02FCDA46FCDA339F -> ../../sda1
lrwxrwxrwx 1 root root 10 mar 20 13:44 470E-63A6 -> ../../sdc1
lrwxrwxrwx 1 root root 10 mar 20 08:16 527585d3-1e52-4aba-b7fc-70f183884
58d -> ../../sda6

Montage au boot
Lors de la séquence de démarrage le fichier /etc/fstab est balayé par l’un des scripts, presque au tout début du
boot, entre le chargement du noyau et le démarrage des services. Tous les systèmes de fichiers ne possédant pas
noauto comme option sont automatiquement montés (le auto est implicite). Le premier à l’être est le système de
fichiers racine /. Puis viennent ensuite le swap et les autres systèmes de fichiers s’ils sont spécifiés (ex : /home,
/usr, etc.) ainsi que les systèmes de fichiers virtuels /proc, /sys , /dev/pts, etc.
Montage manuel
Le contenu de /etc/fstab peut être utilisé après l’initialisation du système pour monter et démonter
ponctuellement les systèmes de fichiers qui n’ont pas par exemple l’option noauto, ou les supports de masse
comme les lecteurs CD/DVD. Dans ce cas vous utilisez simplement les labels, les points de montage ou le
périphérique sans avoir à réécrire toute la ligne de commande. Mount va chercher ses renseignements dans
/etc/fstab.
mount /home
mount -L /u01
mount LABEL=/boot
mount /dev/hda5
Tout monter
Si vous avez effectué des modifications importantes dans la fstab comme le rajout de plusieurs nouveaux points
de montage, vous pouvez, au lieu de monter chaque système de fichiers un par un, tous les monter d’un coup
avec le paramètre -a de mount :
# mount -a
bind
L’option particulière bind peut être très pratique pour faire apparaître une partie de système de fichiers sur
plusieurs points de montages. Elle permet d’éviter l’utilisation des liens symboliques et de ses défauts
(modification du fichier pointé et nom du lien lui-même). Dans l’exemple suivant le système de fichiers ayant le
label u01 est rattaché au répertoire / u 0 1 . Puis on rattache /u01/applis au répertoire /applis.
LABEL=/u01 /u01 ext3 defaults 1 2
/u01/applis /applis none bind
e. Cas des CD et images I SO
Les CD-Rom, DVD-Roms et autres supports de ce type se montent comme n’importe quel disque. Les CD-
Roms et certains DVD-Roms utilisent le système de fichiers iso9660.
# mount -t iso9660 /dev/sr0 /media/cdrom
La plupart des DVD-Roms utilisent plutôt le format UDF (Universal Disk Format).
# mount -t udf /dev/sr1 /media/dvd
© Les distributions Linux récentes s’affranchissent du montage manuel des supports externes qu’il s’agisse
d’un CD, DVD, clé USB ou disque externe. Les services udev se chargent au branchement ou à l’insertion du
support de créer les fichiers spéciaux associés, et de monter et de démonter les supports automatiquement.
Une image ISO est une image du contenu d’un CD ou d’un DVD. C’est un système de fichiers iso9660 ou udf
dans un fichier. Il est possible d’utiliser cette image comme un périphérique, à l’aide des périphériques de
loopback. L’image est rattachée à un périphérique de loopback, et les outils passent par ce périphérique comme
s’il s’agissait d’un disque.
# mount -o loop -t iso9660 image.iso /mnt/iso

 Outils de maintenance de disque dur inclus dans le système d’exploitation :


o compression des données

Archivage

gzip Compression et décompression des fichiers au format gz


gzip groupe : ce qui donne le fichier compressé groupe.gz
gzip -d groupe.gz : Décompression du fichier groupe
31
Options:
- c affiche le résultat de la compression sans modifier les fichiers originaux
- d décompresse le ou les fichiers
- f force l'écrasement sans demander confirmation
- h obtenir l'aide
- l affiche des informations sur le fichier
- L affiche la licence d'utilisation du programme
- q affiche les éventuels messages d'erreurs
- r pour agir sur les fichiers des sous-répertoires
- S modifie en .xxx l'extension des fichiers compressés
- t teste l'intégrité des fichiers compressés
- V affiche la version du programme
- [x] de 1 et 9 permet de choisir le taux de compression (1:faible, 9:maximum).

tar, Archiver plusieurs fichiers en un seul avec ou sans compression.


Syntaxe : tar cvf nom_de_fichier.tar motif
tar cvf groupe.tar *.c : Création d'une archive qui porte le nom "groupe.tar" et qui contient tous les fichiers ayant
l'extension C
tar xvf groupe.tar *.c: Extraction de l'archive groupe.tar.
tar zcvf groupe.tar *.c: Utilisation de l'option z pour compresser l'archive au moment de sa création.
tar zxvf groupe.tar *.c: Décompression de groupe.tar pour Extraction des fichiers
Options:
tar c groupe.tar *.c: pour archiver
tar x groupe.tar: pour dé-archiver
tar cz groupe.tar.gz *.c: pour archiver et compresser
tar xz groupe.tar.gz: pour décompresser et extraire.

tar
syntaxe : tar [options] [fichiers]
La commande tar est une ancienne commande Unix qui permet aisément d’archiver, c’est-à dire de réaliser la
sauvegarde d’un ensemble de fichiers en un seul fichier. Ce fichier peut être compressé après, mais tar ne
compresse pas les fichiers qu'il archive.
La plupart des archives se trouvent sous ce format.
fichiers désigne un ensemble de fichiers ou toute une arborescence précédée d’un chemin absolu (à partir de
/) ou relatif.
Si c’est un chemin absolu qui est indiqué, il sera conservé dans l’archive et permettra ensuite d'être récupéré
par la suite.
Options
-x : Extraire le contenu d’une archive
-c : Créer une nouvelle archive
-t : Afficher seulement la liste du contenu de l’archive, sans l’extraire
-f fichier : Indiquer le nom du fichier archive
-v : Mode verbeux, affiche le détail des opérations
-z : Compresser ou décompresser en faisant appel à l’utilitaire gzip
-j : Compresser ou décompresser avec l’utilitaire bzip2
-p : Préserver les permissions des fichiers

Exemples :
Création d'archives
1 - Effectuer la sauvegarde de tous les fichiers du répertoire /home/toto dans le fichier sauve.toto.tar placé
dans le répertoire courant :
luser@localhost $ tar -cvf sauve.toto.tar /home/toto
2 - Effectue, en plus de l’archivage, une compression des fichiers :
luser@localhost $ tar -cvzf sauve.toto.tar.gz /home/toto
32
Listing
luser@localhost $ tar -tvf sauve.toto.tar

Extraction
1 – Extrait tout le contenu de l'archive dans le répertoire courant :
user@localhost $ tar -xvf sauve.toto.tar
2 - Décompresse et extrait :
luser@localhost $ tar -xvfz sauve.tar.gz
3 – Extrait de l’archive le répertoire passé en argument :
luser@localhost $ tar -xvfz sauve.tar.gz home/toto/tmp

gzip
Elle est utilisée pour compresser un fichier quelconque, et en particulier une archive tar.
L'extraction se fait par la commande gunzip, ou de manière équivalente par gzip -d
gzip [options] [fichiers]
Elle peut décompresser les fichiers .gz, mais aussi les fichiers .z , .Z

Options :
-1 à -9 : Fixe le niveau de compression -1 étant le plus faible
-d : Décompresse l'archive passée en argument
-c : Ecrit sur la sortie standard au lieu de remplacer le fichier d’origine
-l : Affiche des infos sur les fichiers de l'archive (taux de compression...)
-r : gzip parcoure tous les répertoires de manière récursive lors de la dé/compression

Exemples :
1 - Compresse backup.tar et le remplace par le fichier backup.tar.gz d’une taille beaucoup plus réduite :
luser@localhost$ gzip backup.tar /home/toto
2 - Compresse au maximum chaque fichier .txt séparément, et les renomme en ajoutant le suffixe .gz :
luser@localhost $ gzip -9 *.txt

bzip2
bzip2 admet la même syntaxe que gzip, mais effectue une compression plus efficace au détriment d'un besoin
accru de mémoire et cpu.

o statut du processus;
1. La vie d'un processus
Un processus durant tout sa vie évolue par états et ce jusqu'à sa mort. Les principaux états connus sont : l'état
"actif", désigné comme tel lorsque le processus est pris en charge par le processeur, l'état "prêt", indiquant
que le processus attend sa prise en charge par le processeur et l'état "attente" permettant au processus de se
mettre en mode sommeil afin d'attendre l'arrivée d'un signal qui le passera à l'état prêt. Il existe beaucoup
d'autres états qui seront mis en évidence par l'utilisation de certaines commandes.
Une fois un processus lancé, le système lui affecte non seulement une identification numérique unique
portant le nom de PID (Process Identifier) permettant de le reconnaître dans la masse des processus mais
aussi un héritage. En effet lorsqu'un processus est lancé celui-ci fait partie d'une descendance, tout processus
est le "fils","le petit fils», ou "l'arrière petit fils" d'un processus parent dénommé "init". C'est le premier
processus lancé par le système et c'est lui qui prend en charge l'exécution de l'ensemble des processus lancés
par l'utilisateur par l'intermédiaire du shell (interpréteur de commande).
Ainsi le processus init a un pid égale à 1. De même qu'il existe des commandes indiquant l'état d'un processus,
des commandes mettant en évidence l'arbre généalogique d'un processus existant.
Voyons un peu l'ensemble de ces commandes :

Commande Description
33
ps Permet de lister les processus suivant un certain nombre de critères
top Permet d'avoir un suivi de l'évolution des processus et ce faisant, d'effectuer des traitements
comme on pourrait le faire avec ps, mais de façon interactive
pstree Permet de lister les processus dans un arbre indiquant les liens de parentés entre eux
jobs Permet de lister les processus lancés dans le shell courant

Découvrons plus précisément les sorties des commandes ps et top qui sont similaires : elles possèdent des
champs définis ainsi :
PID Identifiant du processus
USER Le propriétaire du processus
PRI Priorité de la tâche (plus le chiffre est petit plus la tâche est prioritaire)
SIZE Taille du processus en mémoire incluant la partie données et la pile
RSS Quantité totale de mémoire occupée par la tâche (les bibliothèques chargées sont
comptabilisées pour les programmes ELF)
SHARE Quantité de mémoire partagée
Ce champ identifie par des lettres les différents états possibles pour un processus
· D : En sommeil imperturbable (surtout pour certain modules kernel)
STAT · R : En cours d'exécution
· S : En sommeil
· T : Stoppé ou stracé (notamment pour le débugage)
· Z : Zombie (peut arriver lorsqu'un processus n'a pas attendu la fin de l'exécution de l'un de ses
fils)
LIB Nombre de pages occupées par les bibliothèques (sauf pour les exécutables au format ELF ;
autant dire que ça ne fonctionne quasiment jamais)
%CPU Taux d'occupation du(des) processeur(s) par ce processus. Il peut être supérieur à 100% dans le
cadre de machine ayant plusieurs processeurs
%MEM Taux d'occupation de la mémoire physique du processus
TIME Temps total d'exécution au sein du(des) processeur(s) depuis le lancement du processus
COMMAND Affiche la ligne de commande qui a permis de lancer le processus

2. Envoi de signaux aux processus


Ce procédé se c oncentre essentiellement autour de la commande kill. Il n'est pas, comme son nom pourrait le
laisser supposer, dédié à tuer des processus. Il va permettre de faire effectuer un certain nombre de tâches à
l'un ou plusieurs d'entres eux.
Tout dépend, finalement, de comment réagissent les programmes aux signaux qui leurs sont envoyés.
Pour obtenir la liste des signaux disponibles, il suffit de taper dans l'invite de commande du shell : kill -l
Voici dans un tableau les principaux signaux utilisés :

Nom du SIGNAL Nombre Description


SIGHUP 1 Ce signal est envoyé directement lors de la déconnection à un modem ou
oblige un daemon à relire son fichier de configuration
SIGKINT 2 Ce signal est équivalent au Ctrl-C et met fin à l'exécution d'un processus
SIGKILL 9 Tue un processus de manière immédiate. Ce signal est à envoyé dans des
mesures drastiques et ne peut être ignoré par le processus
SIGTERM 15 Termine un signal "proprement" si possible
SIGTSTP 18 Mets un processus en attente et, équivalent à Ctrl-Z

3. Arrière plan / Avant plan / Détachement


Lorsque vous lancez un programme, le shell prend en compte l'exécution du processus, ainsi il faut attendre la
fin de celui-ci avant d'avoir à nouveau le prompt. On dit que le processus est en "Avant Plan" dans cet état il
peut recevoir directement des signaux par les combinaisons de touches Ctrl-?. Il existe un autre mode dans
lequel le processus est dit en "Arrière plan", contrairement au mode "Avant Plan" lors de l'exécution du
programme, le shell affiche le prompt directement sans attendre la fin du processus. Afin de mettre le

34
processus dans ce mode il suffit de placer un "&" à la fin de la commande, il est ainsi vu comme un job
possédant un numéro, attaché au terminal (tty) ou pseudo terminal (pts/?) dans lequel il a été lancé. Dans cet
état aucun caractère de contrôle (Ctrl-?) n'est possible.
Si nous nous trouvons dans les cas présentés plus haut, nous savons dès le départ dans quel mode nous
voulons être, mais imaginons que l'on voudrait "switcher" d'un état à un autre. Des commandes ont été crées
spécialement à cette effet.

fg %N° de Job * Permet de mettre un processus en avant plan


bg %N° de Job * Permet de mettre un processus en arrière plan
Ctrl-Z Permet de mettre un processus en attente

* : lorsque vous utilisez ces commandes et que vous avez mis un processus en attente, il met
le processus dans l'état prêt et dans le mode pour lequel il a été crée.
Toutes les commandes que nous avons vues jusqu'à maintenant sont placées dans un mode
d'arrière ou d'avant plan mais le processus est attaché à un terminal. Il existe un mode appélé
mode de "détachement" où un processus n'est attaché à aucun terminal ou pseudo terminal.
Généralement c'est le cas des daemon. On identifie facilement un daemon par le champ TTY
d'une sortie des commandes ps ou top ou il y a le symbole "?"
La commande permettant le détachement des processus est : disown et possède un paramètre qui est le PID
du processus.
Exemple :
disown 1394
4. Modification des priorités du Scheduler
Nous avons vu en introduction que les processus avaient des priorités et qu'elles étaient modifiables. En effet
les propriétés évoluent sur une échelle de -20 à +19. Tout processus, au lancement, peut avoir une priorité
quelconque supérieure ou égale à zéro. Par contre un processus lancé par un utilisateur, à son exécution et
durant celle-ci ne peut avoir une priorité négative. Seul l'administrateur système possède ce droit. Par défaut
un processus est lancé avec la priorité 10.
Les commandes permettant de contrôler les priorités des processus sont nice et renice.

Commande Description Options


nice priorité Permet d'affecter une priorité aux –n processus dès N : permet d'ajuster la priorité
leur lancement par défaut à N
renice priorité Permet de modifier la priorité d'un "User" : change la priorité de
-u processus alors que celui-ci est déjà lancé tous les processus d'un utilisateur
-p "PID" change la priorité d'un processus ayant un pid précis

o caractères joker;

Le globbing
Le globbing est l’utilisation de caractères spéciaux tels que "*", "?".
*: correspond à aucun ou plusieurs caractères
? : correspond à un caractère
[a-z] : correspond à un ensemble de caractères
[^a-z] : correspond à tous les caractères sauf ceux de cet ensemble
Voici la liste des fichiers utilisés pour l'exemple :
luser@localhost $ ls
index.htm sommaire.htm t0st.c table.htm test.c

On affiche tous les fichiers finissant par ".htm"


luser@localhost $ ls *.htm
index.htm sommaire.htm table.htm

35
On affiche tous les fichiers sauf les fichiers finissant par la chaîne "htm".
luser@localhost $ ls *[^htm]
t0st.c test.c

Exemple avec "?" qui signifie un caractère non vide :


luser@localhost $ ls t?st.c
t0st.c test.c

On affiche tous les fichiers comportant "st" dans le nom :


luser@localhost $ ls *st*
t0st.c test.c

Le globbing permet de développer des motifs génériques dans les noms de fichiers, en remplaçant une partie d’un nom de fichier par
un caractère joker ayant une signification bien définie.
Comment demander par exemple au shell d’effacer tous les fichiers commençant par la chaîne « rapport » ?
Voici les caractères de globbing couramment utilisés :
• * équivaut à zéro ou plusieurs caractères quelconques, autrement dit à n’importe quoi.
• ? Correspond à un seul caractère, n’importe lequel.
• [a-d] permet de spécifier un caractère se trouvant dans l’ensemble spécifié, soit ici a, b, c, ou d.
• [^a-w] correspond à tous les caractères non compris dans l’ensemble, soit ici x, y, z.
• {a,b,c} : distributivité de la commande sur tous les éléments entre accolades.
• ls dossier{1,22} va exécuter la commande ls sur dossier1 et dossier22.
Pour effacer tous les fichiers dont le nom commence par la chaîne « rapport », on saisira donc rm rapport*.
De même, pour effacer « rapport_oct_b2 » et « rapport_oct_b3 » mais pas « rapport_dec_b2 » on écrira :
rm *oct?b?
Enfin, pour effacer « rapport_oct_b1 » et « rapport_oct_b2 » mais pas « rapport_oct_b3 », il convient de saisir :
rm *oct_b[1-2]

o redirection et tubes.

Pipes et Redirections
Une des bases essentielles d'un système Unix / Linux est la redirection d'un flux émanant d'un programme en
direction d'un autre.
7.1 Les flux standards
Les flux standards sont au nombre de trois :
STDIN (0) : STDIN n’est ni plus ni moins que l’entrée au clavier (dite "entrée standard").
Cela veut dire que tout ce que vous tapez au clavier va passer par ce canal d’entrée/sortie.
STDOUT (1) : STDOUT est ce que l’on appelle la "sortie standard". Les informations qui apparaissent à l’écran
passent par le canal STDOUT.
STDERR (2) : STDERR est la "sortie d’erreur standard". L’utilité d’avoir deux flux de sortie permet de séparer
les messages d’erreurs et la sortie normale.
Les numéros 0, 1, 2 désignent respectivement STDIN, STDOUT et STDERR, et peuvent être utilisés dans les
commandes shell.
7.2 Redirections
Ainsi, si nous exécutons un programme comme ls, il va afficher le résultat sur la sortie standard, c'est à dire
l'écran par défaut. Il est possible de rediriger ces différents flux vers des fichiers, d’autres flux…
Ceci se fait par le biais des signes "<" et ">" Une commande "commande > un fichier" va créer un fichier "un
fichier" contenant le résultat de la commande "commande".
De même, avec le signe "<" au lieu de ">" aurait utilisé le contenu du fichier "un fichier" en entrée de la
commande "commande".

Exemples :

36
$ cd /tmp $ ls -l /bin > un_fichier
$ ls -l /bin $ cat un_fichier
total 4872 total 4872
-rwxr-xr-x 1 root root 3180 Jan 22 2001 arch -rwxr-xr-x 1 root root 3180 Jan 22 2001 arch
-rwxr-xr-x 1 root root 54905 May 22 2001 attr -rwxr-xr-x 1 root root 54905 May 22 2001 attr
-rwxr-xr-x 1 root bin 477692 Mar 22 2000 bash -rwxr-xr-x 1 root bin 477692 Mar 22 2000 bash
… ...

Si on utilise plusieurs fois des redirections sur un même fichier, avec ce que l’on a vu, le fichier est écrasé à
chaque fois. Pour éviter cela il est possible d’utiliser "<<" à la place de "<" et ">>" à la place de ">", auquel cas
les données seront concaténées dans le fichier (mises à la suite).

luser@localhost $ ls linux-lfs/ luser@localhost $ ls evolution/


linux-lfs-flat.vmdk linux-lfs.vmx nvram addressbook-sources.xml config mail shortcuts.xml
linux-lfs.vmdk linux-lfs.vmx.WRITELOCK vmware.log cache gtkrc-mail-fonts meta vfolders.xml
camel-cert.db local searches.xml views

luser@localhost $ ls linux-lfs/ >> fichier


luser@localhost $ ls evolution/ >> fichier

luser@localhost $ cat fichier


linux-lfs-flat.vmdk
linux-lfs.vmdk
linux-lfs.vmx
linux-lfs.vmx.WRITELOCK
searches.xml
shortcuts.xml
vfolders.xml
views

Voici un exemple montrant la redirection de la sortie standard et de la sortie d’erreur standard:


Avec l’outil find, on va rechercher un fichier dont le nom comporte "tes" dans le répertoire /etc. On redirige
les résultats dans le fichier "fichier" et les erreurs dans le fichier "erreurs" :
2> signifie que l’on redirige l’erreur standard et > signifie implicitement 1>

luser@localhost $ find /etc/ -name "*tes*" > fichier 2> erreurs

luser@localhost $ cat fichier


/etc/CORBA/servers/gnotesàpplet.gnorba
/etc/sysconfig/network-scripts/ifup-routes
/etc/dumpdates
/etc/openldap/ldaptemplates.conf

luser@localhost $ cat erreurs


find: /etc/cups/certs: Permission denied
find: /etc/default: Permission denied

Notons que l’on peut rediriger l’erreur standard et la sortie standard vers le même fichier :

luser@localhost $ find /etc/ -name "*tes*" > fichier 2>&1


luser@localhost $ cat fichier
find: /etc/cups/certs: Permission denied
find: /etc/default: Permission denied
/etc/CORBA/servers/gnotesàpplet.gnorba
/etc/sysconfig/network-scripts/ifup-routes
37
/etc/dumpdates
/etc/openldap/ldaptemplates.conf

7.3 Pipes
Le pipe ("|") (ou tube en français) est un mécanisme permettant la communication entre plusieurs
commandes. Par exemple si nous faisons "commande 1 | commande 2", le résultat de la commande
"commande 1" va être utilisé en entrée de la commande "commande 2".Il est possible de chaîner ce type de
commande autant que l’on veut. Rien de tel qu’un exemple:

Exemple :
luser@localhost $ ls -la /bin > un_fichier
luser@localhost $ grep "bzip" un_fichier
lrwxrwxrwx 1 root root 5 Feb 12 2001 bunzip2 -> bzip2
-rwxr-xr-x 1 root bin 27380 May 18 2000 bzip2
-rwxr-xr-x 1 root bin 6708 May 18 2000 bzip2recover

luser@localhost $ ls -la /bin | grep "bzip"


lrwxrwxrwx 1 root root 5 Feb 12 2001 bunzip2 -> bzip2
-rwxr-xr-x 1 root bin 27380 May 18 2000 bzip2
-rwxr-xr-x 1 root bin 6708 May 18 2000 bzip2recover

TR
Transformer une chaîne de caractère en une autre.
Usage: tr [OPTION]... [CHAÎNE1] [CHAÎNE2]

Options Explication
-d Détruis (delete) les éléments de la chaîne

 Filtres et tubes :
o entrées, sorties et files d'erreurs;

La redirection 6
La redirection des entrées-sorties est une des principales caractéristiques du shell, dont la puissance n'a d'égal que la
simplicité. La réputation de Linux, comme système d'exploitation souple et performant, est due en grande partie aux
possibilités offertes de rediriger directement ou indirectement, les entrées-sorties.
Beaucoup d'utilitaires Linux envoient des informations à l'écran. Il est parfois difficile d'avoir une vue d'ensemble
immédiate de ces informations. Dans ce cas, il serait intéressant de pouvoir envoyer ces données dans un fichier, de les
rediriger. Grâce à un éditeur de texte, vous pourrez ensuite les modifier ou en prendre connaissance tranquillement.
Toutes les commandes utilisent des canaux d'entrées-sorties pour lire des données ou transmettre leurs informations. Le
canal d'entrée utilisé en général pour la lecture est lié au clavier. Linux pilote les canaux d'entrées-sorties de manière
indépendante pour chaque utilisateur, chacun voyant son clavier lié à un canal d'entrée. Linux gère de la même façon les
canaux de sortie. Le canal de sortie par défaut est lié à l'écran devant lequel est assis l'ordinateur.

38
Caractères de redirection Nom
< fichier Redirection d'entrée par fichier
> fichier Redirection de sortie vers fichier
<< fichier Redirection d'entrée ajout au fichier (rare)
>> fichier Redirection de sortie ajout au fichier
n > fichier Envoi un canal (0, 1, 2) vers fichier. Cette commande est très pratique pour éviter
les messages d'erreur à l'écran.
Ex: 2> err.txt Envoi tous les messages d'erreurs vers err.txt

Les canaux
Voici les différents canaux dont dispose chaque application.
Numéro du canal Fonction
0 Entrée standard (clavier)
1 Sortie standard (écran)
2 Sortie d'erreur standard (écran)

Les tubes
Pour établir une liaison directe entre le canal de sortie standard d'une commande et le canal d'entrée standard d'une
autre, il existe le signe | (le tube ou pipe ou pipeline). Toutes les données renvoyées par la commande placée à gauche
de ce signe à travers le canal de sortie standard sont envoyés au canal d'entrée standard de la commande placée à
droite.
Ex: commande 1 | commande 2 | commande3 ...

o sort : tri ;

SORT
Écrire la concaténation triée de tous les FICHIERS sur la sortie standard.
Usage: sort [OPTION]... [FICHIER]...

Options Explication
+POS1 [-POS2] Débuter avec la clé de position POS1, et terminer *avant* POS2 (désuet) les numéros de champs
et les positions relatives des caractères sont comptés à partir de zéro (contrairement au
décompte à partir de un de l'option -k)
-b Ignorer les blancs de tête dans les champs ou les clés triés
-c Vérifier si un fichier soumis a déjà été trié, si oui ne pas trier
-d Considérer seulement les caractères [a-zA-Z0-9 ] comme clés
-f Considérer les minuscules comme des majuscules et comme clés
-g Comparer selon la valeur numérique générale, implique -b
-i Considérer seulement les caractères [\040-\0176] comme clés
-k POS1[,POS2] Débuter à la position POS1 et terminer *à* POS2, les numéros de champs et les positions
relatives des caractères sont comptés à partir de un (contrairement au décompte à partir de zéro
de la forme +POS1)
-m Fusionner les fichiers triés, ne pas trier
-M Comparer selon (inconnu) < `JAN' < ... < `DÉC', implique -b
-n Comparer selon la valeur numérique de la chaîne, implique -b
-o FICHIER Produire le résultat dans le FICHIER au lieu de la sortie standard
-r Inverser le résultat des comparaisons
-s Stabiliser le trie en inhibant la dernière comparaison
-t SÉPARATEUR Utiliser le SÉPARATEUR au lieu de la transition non blanc à blanc
-T RÉPERTOIRE Utiliser le RÉPERTOIRE temporaire, non pas $TMPDIR ou /tmp
-u Avec -c, vérifier l'ordonnancement strict avec -m, afficher seulement la première séquence
identique
-z Terminer les lignes avec un octet de valeur 0, pour la commande find find -print0
--help Afficher l'aide-mémoire
--version Afficher le nom et la version du logiciel

POS is F[.C][OPTS], where F is the field number and C the character position in the field, both counted from one with -k,
from zero with the obsolescent form. OPTS is made up of one or more of Mbdfinr; this effectively disables global -Mbdfinr
settings for that key. If no key is given, use the entire line as the key. With no FILE, or when FILE is -, read standard
input.

39
Trier les lignes d’un fichier
La commande:
sort [options] [fichiers...]
trie les lignes des fichiers, la sortie se faisant sur la sortie standard.
Le tri s’effectue sur une ou plusieurs clés extraites de chaque ligne. Voici les principales options qui vont
permettre de réaliser ce tri:
• +pos1 -pos2: permet d’indiquer le début et la fin d’un clé de tri; celle-ci peut être composée de plusieurs
zones de tri concaténées. Le tri commence au champ pos1+1 et se termine au champ pos2+1. S’il n’y a pas de
pos2, la zone de tri va jusqu’à la fin de la ligne,
• -t séparateur: indique le caractère qui sépare les différents champs. Si un séparateur n’est pas défini, les
champs sont séparés par toute suite d’espace ou de tabulations contigus,
• -b: ignore les espaces et les tabulations de tête dans chaque champ,
• -n: effectue un tri numérique sur les champs,
• -f: ignore la différence entre majuscules et minuscules,
• -c: affiche un message si les lignes ne sont pas dans le bon ordre,
• -o fichier: sort le résultat du tri dans fichier (attention sort fich > fich détruit fich avant de le trier, préférer
cette option à toute redirection!),
• -r: inverse l’ordre de tri,
• -u: ne garde qu’une ligne par clé...

Exemples :
luser@localhost $ sort -t: +2 -3 /etc/passwd
tri le fichier /etc/passwd par numéro d’utilisateur
luser@localhost $ ls -l / | sort -b +2 -3 +7
tri de la liste des fichiers sous la racine par propriétaire (+2 -3) et par nom de fichier

Trier avec sort


Le programme sort permet de trier les lignes d'un fichier. Les caractères \+" et \-" permettent de
spècifièr de quelle colonne à quelle colonne le tri doit s'exèctuer (1ere colonne pour 0, 2eme colonne
pour 1. . .) : sort +1 -2 /etc/passwd
Si on spèciè plusieurs critères, le tri se fera d'abord sur le premier champ, puis sur le second si le tri
sur le premier champ n'a pas suffit à dèpartager certaines lignes, et ainsi de suite. . .
Il existe diverses options (tableau 1.5) :
On peut spècièr la recherche sur un caractère situè a une position particulière, par exemple a la
2eme position du 6eme champ :

sort -t: +5.1 /etc/passwd


40
Pour plusieurs critères de recherche, il faut spècièr derrière chaque champ le type de tri à mettre en
oeuvre pour ce critère. Par exemple :
sort -t: +0d -1 +2nr -3
triera le 1er champ par ordre dictionnaire, et le 3eme champ par ordre numèrique inverse, et
sort -t: +4.3n -4.5 +4.0n -4.2
triera du 4eme au 6eme caractère du 5eme champ par ordre numèrique, et du 1er au 3eme caractère
du 5eme champ par ordre numèrique, si le premier tri s'est avèrè insuffisant.
Bien sur, on peut combiner les commandes cut et sort. Par exemple :
cut -d: -f3 /etc/passwd | sort -n > Nombres

o cat : enchaînement ;

Affichage du contenu d’un fichier:


La commande: cat [-v] [fichier...] sert à afficher le contenu d’un fichier si ce dernier est passé en paramètres.
Sinon, c’est l’entrée standard qui est prise par défaut (clavier ou résultat d’une autre commande). L’option -v
permet d’afficher les caractères non visibles.
Cette commande permet aussi de concaténer des fichiers: cat fichier1 fichier2 > fichier3
Cette opération permet de créer un fichier (fichier3) en concaténant les fichiers fichier1 et fichier2. Les notions
de redirection seront plus amplement abordées dans la partie langage de commande.
Le seul inconvénient de cet outil est qu’il affiche le contenu du fichier dans sa totalité (sans possibilité simple
de contrôler le défilement par pages).

Une option utile de cat est -n qui permet de numéroter les lignes (ne pas oublier que cat permet de lire et non de modifier un fichier.
Ainsi la numérotation de ligne apparaît à l'écran mais le fichier .bashrc n'en est pas pour autant modifié).

Les groupes de commandes


Il existe plusieurs méthodes pour enchaîner des commandes sur une même ligne :
· Exécution séquentielle :
cmd1; cmd2;...; cmdN
· Exécution sous condition d'erreur :
cmd1 || cmd2 || ... || cmdN
si cmd1 ne se termine pas correctement, alors cmd2 est exécuté, et ainsi de suite.
· Exécution sous conditions de réussite :
cmd1 && cmd2 && ... && cmdN
si cmd1 s'est bien déroulée, alors cmd2 sera exécutée; et ainsi de suite
Les groupes de commandes peuvent remplacer les commandes simples dans les pipes; mais dans ce cas, il
faudra entourer le groupe de commande avec des accolades {}; cela permet les combinaisons les plus variées;
par exemple :
{ cmd1 && cmd2; cmd3 || cmd4; } | cmd5
ATTENTION: l'espace après { et le ; avant } sont indispensables.
L'utilisation des parenthèses () est possible et a le même effet à la différence qu'elles invoquent un nouveau
shell qui sera chargé de l'exécution des commandes.

o grep : recherche de motifs ;

La commande grep
La commande grep vous permet de rechercher un motif dans une liste de fichiers. Ces motifs se présentent sous la
forme de chaînes normales, comme des mots ou des bouts de phrases. Pour rechercher une chaîne à l'aide de la
commande grep, vous devez placer entre apostrophes les mots à rechercher. La syntaxe de la commande grep est la
suivante:
$ grep pattern nom-fichier-1 nom-fichier-2 …nom-fichier-n
Vous pouvez également ajouter les noms de fichiers «TPà», «TP_B» et «TP_C» après la chaîne de recherche
«Expérience_scientifique_biologie» comme dans l'exemple ci-après :
$ grep 'Expérience _scientifique _biologie' TPà TP_B TP_C
Il en résulte l'affichage de l'ensemble des lignes des fichiers TPà, TP_B et TP_C qui contiennent la chaîne «Expérience
_scientifique _biologie».
41
Recherche d’une chaîne de caractères
La commande:
grep [option] expression-régulière [fichiers...]
Affiche à l’écran les lignes des fichiers qui contiennent une chaîne de caractères correspondant à l’expression
régulière donnée. Cette commande est souvent utilisée après un pipe.
Les options les plus courantes sont:
• -c: qui affiche seulement le nombre de lignes contenant la chaîne,
• -i: qui ignore la différence entre minuscules et majuscules,
• -n: qui affiche les numéros de lignes.
• -l qui permet de n'afficher que les noms des fichiers contenant ce que l'on cherche

Recherche un PATTERN ou PATRON dans un FICHIER ou une sortie standard.


Usage: grep [OPTION]... PATRON [FICHIER] ...

Options Explication
-E, --extended-regexp PATTERN is an extended regular expression
-F, --fixed-strings PATTERN is a set of newline-separated strings
-G, --basic-regexp PATTERN is a basic regular expression
-e, --regexp=PATTERN Utiliser le PATRON comme expression régulière
-f, --file=FILE Obtenir le PATRON du FICHIER
-i, --ignore-case Ignorer la distinction de la casse
-w, --word-regexp Forcer l'appariement du PATRON que sur des mots complets
-x, --line-regexp Forcer l'appariement du PATRON que sur des lignes entières
-z, --null-data Terminer la ligne de données par ZÉRO et non pas par un retour de chariot

Miscellaneous:
Options Explication
-s, --no-messages Suppress error messages
-v, --invert-match Select non-matching lines
-V, --version Print version information and exit
--help Display this help and exit
--mmap Use memory-mapped input if possible

Contrôle de sortie:

Options Explication
-b, --byte-offset Afficher les adresses relatives des lignes traitées
-n, --line-number Afficher les numéros de lignes des lignes traitées
-H, --with-filename Afficher le nom de fichier pour chaque concordance
-h, --no-filename Supprimer le préfixe du nom de fichier sur la sortie
-q, --quiet, --silent Supprimer tout affichage en sortie
-a, --text Ne pas supprimer la sortie binaire
-d, --directories=ACTION Traiter les répertoires selon l'ACTION 'read' (lecture), 'recurse' (récursivité), ou 'skip'
(escamotage).
-r, --recursive Équivalent à --directories=recurse.
-L, --files-without-match Afficher seulement les noms des fichiers ne contenant pas de concordance
-l, --files-with-matches Afficher seulement les noms des fichiers contenant des concordances
-c, --count Afficher seulement le décompte des lignes concordantes par fichier
-Z, --null Afficher l'octet ZÉRO après le nom du fichier

Context control:

Options Explication
-B, --before-context=NUM Print NUM lines of leading context
-A, --after-context=NUM Print NUM lines of trailing context
-C, --context[=NUM] Print NUM (default 2) lines of output context unless overridden by -A or -B
-NUM Same as --context=NUM
-U, --binary Do not strip CR characters at EOL (MSDOS)
-u, --unix-byte-offsets Report offsets as if CRs were not there (MSDOS)

`egrep' means `grep -E'. `fgrep' means `grep -F'. With no FILE, or when FILE is -, read standard input. If less than two
FILEs given, assume -h. Exit status is 0 if match, 1 if no match, and 2 if trouble.

42
Les caractères spéciaux sont:

Caractères Signification
[ ] Les crochets délimitent un ensemble de caractères représentant l'emplacement d'un seul
caractère qui peut être n'importe quel de l'ensemble.
[ ^ ...] Négation des caractères de l'ensemble.
. Un caractère quelconque.
* Un caractère de répétition.
$ Une fin de ligne.
^ Un début de ligne.

-c Imprime le nombre de lignes du fichier correspondant au motif.


-h Permet de ne pas précéder la ligne trouvée du nom du fichier en cas de recherche sur plusieurs fichiers.
-i Ignore la distinction entre les majuscules et les minuscules (la casse).
-l N’imprime que le nom du fichier contenant la chaîne de caractères, sans répétitions.
-n Chaque ligne trouvée est précédée par son numéro de ligne.
-v Imprime les lignes du fichier qui ne correspondent pas au motif.

Exemples :
luser@localhost $ ls -l | grep *.c
affiche tous les fichiers .c du répertoire courant
luser@localhost $ grep -i mot *
affiche le nom du fichier et la ligne contenant le mot

o wc : comptage ;

Compter les caractères, les mots, les lignes


La commande:
wc [options] [fichiers...]
Permet de compter le nombre de lignes, de mots et de caractères de chaque fichier. Si des fichiers ne sont pas
spécifiés, l’entrée standard est prise par défaut.
Les options sont:
• -l: pour afficher seulement le nombre de lignes,
• -w: pour afficher seulement le nombre de mots,
• -c: pour afficher seulement le nombre de caractères.

o tail.

Affiche les 10 dernières lignes de FICHIER dans la sortie standard.


Usage: tail [OPTION]... [FICHIER]...

Options Explication
--retry Keep trying to open a file even if it is inaccessible when tail starts or if it becomes
inaccessible later --useful only with -f
-c, --bytes=N Output the last N bytes
-f, --follow[={name|descriptor}] Output appended data as the file grows; -f, --follow, and --follow=descriptor are
equivalent
-n, --lines=N Output the last N lines, instead of the last 10
--max-unchanged-stats=N See the texinfo documentation (the default is 5)
--max-consecutive-size-changes=N See the texinfo documentation (the default is 200)
--pid=PID With -f, terminate after process ID, PID dies
-q, --quiet, --silent Never output headers giving file names
-s, --sleep-interval=S With -f, sleep S seconds between iterations
-v, --verbose Always output headers giving file names
--help Display this help and exit
--version Output version information and exit

If the first character of N (the number of bytes or lines) is a `+', print beginning with the Nth item from the start of each file,
otherwise, print the last N items in the file. N may have a multiplier suffix: b for 512, k for 1024, m for 1048576 (1 Meg). A
first OPTION of –VALUE or +VALUE is treated like -n VALUE or -n +VALUE unless VALUE has one of the [bkm] suffix
43
multipliers, in which case it is treated like -c VALUE or -c +VALUE.
With --follow (-f), tail defaults to following the file descriptor, which means that even if a tail'ed file is renamed, tail will
continue to track its end. This default behavior is not desirable when you really want to track the actual name of the file,
not the file descriptor (e.g., log rotation). Use --follow=name in that case. That causes tail to track the named file by
reopening it periodically to see if it has been removed and recreated by some other program.

Affichage page à page:


La commande: more [fichier...] permet d’afficher le contenu d’un fichier page à page. Le fichier par défaut est
l’entrée standard (en général le résultat de la commande située avant le «|»).

Exemple :
luser@localhost $ ls -lR | more (redirige la sortie de la commande ls -lR vers le more)
luser@localhost $ more .profile (affiche page à page le fichier .profile)

En bas de chaque page de la commande more, un certain nombre d’action sont possibles:
• h: permet d’afficher la liste des commandes disponibles à ce niveau,
• [espace]: permet de passer à la page suivante,
• [entrée]: permet de passer à la ligne suivante,
• b: permet de revenir à la page précédente,
• i[espace]: permet d’afficher i lignes en plus,
• =: permet d’afficher le numéro de la dernière ligne affichée,
• /mot: permet de se positionner 2 lignes avant la prochaine occurrence du mot «mot»,
• n: continue la recherche précédente (identique à /),
• :f: permet d’afficher le nom du fichier et le numéro de dernière ligne affichée,
• .: effectue de nouveau la commande précédente,
• q ou Q: permet de sortir de more.

Extraire le début ou la fin d’un fichier


Début du fichier
La commande:
head [-n] [fichiers...]
Affiche sur la sortie standard les n premières lignes de chacun des fichiers. Par défaut, la valeur de n est fixée à
10.

Fin du fichier
La commande:
tail [début] [fichier]
Affiche la fin du fichier sur la sortie standard. La première ligne affichée est indiquée par début qui peut être
du type:
• +n: nième ligne du fichier,
• -n: nième ligne à partir de la fin du fichier.
Autres commandes utiles:
Les commandes suivantes peuvent aussi vous être utiles:
• split: fractionnement horizontal d’un fichier,
• cut: fractionnement vertical d’un fichier,
• paste: recollement vertical de plusieurs fichiers,
• uniq: sélection/rejet de lignes consécutives en double,
• comm: sélection/rejet de lignes communes à deux fichiers,
• join: jointure (relationnelle) de 2 fichiers sur une zone commune,
• od: visualisation des octets d’un fichier,
• dd: copie d’un fichier avec conversion...

o cut
44
Copier des sections de certaines lignes d'un fichier.
Usage: cut -b byte-list, --bytes=byte-list [-n] [--help] [--version] [file...]
ou: cut -c character-list, --characters=character-list [--help] [--version] [file...]
ou: cut -f field-list, --fields=field-list [-d delim] [-s] [--delimiter=delim] [--only-delimited][--help] [--
version] [file...]

The byte-list, character-list, and field-list are one or more numbers or ranges (two numbers separated by a dash)
separated by commas. The first byte, character, and field are numbered 1. Incomplete ranges may be given: `-m' means
`1-m'; `n-' means `n' through end of line or last field.

Options Explication
-b, --bytes byte-list Print only the bytes in positions listed in byte-list. Tabs and backspaces are
treated like any other character; they take up 1 byte.
-c, --characters characterlist Print only characters in positions listed in character-list.
The same as -b for now, but internationalization will change that. Tabs and
backspaces are treated like any other character; they take up 1 character.
-f, --fields field-list Print only the fields listed in field-list. Fields are separated by a TAB by default.
-d, --delimiter delim For -f, fields are separated by the first character in delim instead of by TAB.
-n Do not split multibyte characters (no-op for now).
-s, --only-delimited For -f, do not print lines that do not contain the field separator character.
--help Print a usage message and exit with a status code indicating success.
--version Print version information on standard output then exit.

La commande cut
La commande cut permet d'afficher des zones spècifiques d'un fichier. Par exemple :
cut -c1 /etc/passwd
Affichera la première colonne du fichier /etc/passwd. Il existe d'autres spècifications (tableau 1.4) :

On peut ègalement spècièr un sèparateur de champs avec l'option -d.


Par exemple :
cut -d: -f6 /etc/passwd
affichera le 6eme champ du fichier /etc/passwd, dont le sèparateur de champs est le caractère
double point (\ :").

Gestion des utilisateurs et groupe


1.1 Les utilisateurs
Unix est un système multi-utilisateurs. Plusieurs personnes peuvent l'utiliser de façon simultanée (dans le cas
de configurations en réseau).
Pour le système, un utilisateur n'est pas obligatoirement une personne physique. Un utilisateur peut détenir
des fichiers, exécuter des programmes ou encore déclencher automatiquement des fonctions systèmes.
Un utilisateur possède un nom d'utilisateur appelé aussi login lui permettant d'établir une connexion. Ce login
est associé à un mot de passe personnel. Pour accéder aux ressources du système, l'utilisateur doit entrer la
bonne paire login/mot de passe : c'est l'authentification (le login).
Les utilisateurs sont identifiés par le système grâce à un UID (identifiant d'utilisateur) unique.
Cet identifiant est une valeur numérique.

1.1.1 Le fichier /etc/passwd


Le fichier /etc/passwd contient les informations relatives à tous les utilisateurs du système. On y trouve leur :
· login
· mot de passe (chiffré)
· UID
· GID principal
45
· nom complet et autres informations
· répertoire principal
· leur shell

La syntaxe de "/etc/passwd" est très simple, chaque ligne concerne un utilisateur. Les différents champs sont
séparés par des ":" :
login:mot-de-passe:UID:GID:info-utilisateur:répertoire-principal:shell
Détaillons les champs :
· Login : c'est l'identifiant que doit entrer l'utilisateur pour s'authentifier. La convention veut qu'un utilisateur
Ahmed ARABI possède aarabi ou arabià comme login.
· Mot de passe : il est évident que le mot de passe n'apparaît pas en clair dans le fichier, il est chiffré en md5.
C'est la commande passwd qui s'occupe de chiffrer le mot de passe. Ce champ peut prendre plusieurs
significations :
o "*" : il est impossible de s'authentifier sur le système avec ce compte
o "!!" : Le compte est désactivé
o "x" ou "!" : le mot de passe est dans un fichier shadow (voir ci-après)
o champ vide : Il n'y a pas de mot de passe pour ce compte.
· UID : il s'agit de l'identifiant unique de l'utilisateur.
o L'utilisateur root possède l'UID 0
o Par convention, les UID inférieurs à 100 sont réservés aux comptes système.
· GID : l'identifiant du groupe principal de l'utilisateur
· Info utilisateur : des informations sur l'utilisateur. Chaque information est séparée par une virgule (le nom
complet, numéro de poste ...).
· répertoire personnel : Il s'agit du répertoire dans lequel sont stockés les fichiers appartenant à l'utilisateur. En
général de la forme /home/login.
· shell : c'est l'interpréteur de commandes qui sera lancé après l'authentification.

1.1.2 Le fichier /etc/shadow


Le fichier /etc/passwd est accessible à tout le monde. En effet, certaines commandes ont besoin de connaître
la liste des utilisateurs ou la correspondance login/UID.
La présence du mot de passe dans /etc/passwd, même crypté, pose un problème de sécurité.
La solution à ce problème est de stocker les mots de passe dans un fichier différent :
/etc/shadow. Pour garantir la sécurité, seul l'administrateur peut le lire.
Remarque : sous Linux, si le fichier /etc/shadow n'est pas utilisé, l'utilitaire pwconv permet, à partir d'un
fichier /etc/passwd unique, de créer le fichier /etc/shadow qui lui correspond.

1.2 Les Groupes


Le fichier /etc/group contient les informations relatives aux groupes présents sur le système.
Voici sa syntaxe :
groupe:*:GID:utilisateurs
· groupe : le nom du groupe
· * : la présence de ce champ est lié aux anciennes versions d'Unix et n'est plus utilisé. Il peut rester vide ou
contenir le caractère "*" ou "x".
· GID : c'est l'identifiant unique du groupe sous la forme d'une valeur numérique.
· utilisateur : il s'agit de la liste des utilisateurs appartenant au groupe. Ils sont séparés par des virgules :
tri:x:230:ahmed,omar,ali

1.3 Les commandes de gestion des utilisateurs


Afin de manipuler les fichiers passwd, shadow et group facilement, des commandes ont été crées. Elles
automatisent les vérifications (l'utilisateur à créer existe-t-il déjà ? le mot de passe est-il assez compliqué ?...)
évitant ainsi toute erreur de saisie.

1.3.1 Ajouter un utilisateur


46
La commande useradd permet de créer un utilisateur : useradd [options] login

Principales options de useradd

Option Explication
-c commentaire Informations concernant l'utilisateur (nom, poste)
-d répertoire Chemin du répertoire personnel de l'utilisateur
-e date Date d'expiration du compte. Le format est AAAA-MM-JJ
-f nombre de jours C'est le nombre de jours suivant l'expiration du mot de passe après lequel le compte est
désactivé. La valeur 0 permet de désactiver le compte dès que le mot de passe expire. La
valeur - 1 permet de désactiver cette caractéristique. La valeur par défaut est -1
-g groupe principal Le nom du groupe ou le numéro du groupe de connexion initial de l'utilisateur. Le nom
ou le numéro du groupe doivent exister.
Le numéro de groupe par défaut est 1
-G groupes supplémentaire Les autres groupes auxquels appartient l'utilisateur (séparés par des virgules)
-m Le répertoire de l'utilisateur sera créé (par défaut, cela n'est pas fait)
-k [ répertoire ] A utiliser si et seulement si l'option -m est présente. Permet de copier les fichiers et
répertoires contenus dans le répertoire répertoire (/etc/skel si non spécifié) dans le
répertoire de l'utilisateur
-p le mot de passe chiffré Vous pouvez saisir le mot de passe en option. Il doit être chiffré (pour récupérer
la version cryptée d'un mot de passe il faut utliser la bibliothèque crypt). Le
comportement par défaut est de désactiver le compte
-s chemin vers un exécutable Shell lancé à la connexion de l'utilisateur
-u uid L'identifiant unique de l'utilisateur

Exemple : nous voulons créer l'utilisateur ahmed :


· commentaire : "utilisateur ahmed"
· son shell : /bin/zsh
· son répertoire personnel : /home/ahmed
· nous recopions le contenu de /etc/skel dans son répertoire
· il appartient aux groupes "dev" et "final"
· le compte sera désactivé immédiatement après expiration du mot de passe

root@localhost # useradd -c "utilisateur ahmed" -f 0 -G final,dev -m -k /etc/skel –s /bin/zsh ahmed

La commande useradd -D montre les options par défaut :


GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=
SKEL=/etc/skel

Il est possible de changer les valeurs par défaut grâce aux options suivantes : Options de useradd -D

Option Explication
-h répertoire Répertoire dans lequel créer les répertoires utilisateurs
-e date La date d'expiration du compte
-f nombre de jours Délai de désactivation après expiration du mot de passe
-g GID Le groupe par défaut
-s chemin vers un exécutable Le shell par défaut

1.3.2 Suppression d'un utilisateur


La commande userdel permet de supprimer un utilisateur : root@localhost # userdel options login
47
L'option -r efface le répertoire personnel de l'utilisateur.

1.3.3 Changer le mot de passe d'un utilisateur


La commande passwd permet de changer le mot de passe d'un utilisateur. L'administrateur peut changer
n'importe quel mot de passe. Un utilisateur normal ne peut changer que son propre mot de passe.
passwd [ options ] [ login ]
Si l'argument login n'est pas spécifié, le changement de mot de passe s'applique sur l'utilisateur courrant.

Options passwd
Option Explication
-k Indique que seul le mot de passe doit être mis à jour sans toucher aux propriétés d'expiration
-l Permet de verrouiller le compte spécifié en préfixant le mot de passe crypté par le caractère "!".
Seul l'utilisateur root peut utiliser cette option
--stdin Le mot de passe doit être lu à partir de l'entrée standard qui peut alors être un tube (pipe)
-u Déverrouille le mot de passe du compte. Seul l'utilisateur root peut utiliser cette option
-d Supprime le mot de passe d'un compte. Le champ réservé au mot de passe crypté sera
supprimé dans le fichier de configuration. Seul l'utilisateur root peut utiliser cette option
-S Affiche des informations sur le statut du mot de passe pour un compte donné. Seul l'utilisateur
root peut utiliser cette option

1.3.4 Afficher des informations sur un utilisateur


Pour connaître l'identité de l'utilisateur courant (bien que cela soit affiché dans la majorité des prompts par
défaut) on utilise la commande whoami.
Elle affiche le login de l'utilisateur courant. Les commandes who, users et w permettent de connaître les
utilisateurs actuellement connectés sur la machine.

1.4 Les commandes de gestion des groupes


1.4.1 Créer un groupe
La commande groupadd permet de créer un nouveau groupe : root@localhost # groupadd option groupe

Options de groupadd
Option Explication
-g Permet de choisir la valeur numérique du GID du nouveau groupe. Cet identifiant doit être
unique
-r Cette option permet d'ajouter un groupe système (dont le GID est inférieur à 500)
-f Permet de stopper la commande lorsque le groupe ou le GID du nouveau groupe existe déjà

1.4.2 Suppression d'un groupe


Pour supprimer un groupe, on utilise la commande groupdel : groupdel GID
Remarque : on ne peut pas supprimer un groupe si c'est le groupe principal d'un utilisateur

1.4.3 Modifier les groupes secondaires d'un compte


Pour modifier les groupes secondaires d'un utilisateur, on utilise la commande usermod qui est similaire à
useradd et supporte les mêmes options : root@localhost # usermod -G toto,users,fileshare,dev toto
Ceci permet d'ajouter l'utilisateur "toto" dans les groupes "toto", "users", "fileshare" et "dev".
Attention : lors de l'utilisation de la commande usermod -G il est nécessaire de rappeler l'ensemble de
groupes secondaires auxquels appartient l'utilisateur.
On peut aussi ajouter et enlever des utilisateurs d'un groupe grâce à la commande gpasswd

Options de gpasswd
Option Explication
-a Ajout d'un utilisateur
-d Suppression d'un utilisateur
48
1.4.4 Afficher des informations sur les groupes
Pour connaître les groupes auxquels appartient un utilisateur, on utilise la commande groups.
Sans argument, elle affiche les groupes de l'utilisateur courant. Pour connaître les groupes d'un utilisateur
particulier, il suffit de passer son login en argument de la commande :

root@localhost # groups
root wheel disk adm sys daemon bin
luser@localhost $ groups toto
toto users fileshare

Sur de très anciens SystemV, il n'était pas possible d'activer plusieurs groupes simultanément pour le même
utilisateur. La commande id permet de connaître les groupes actifs :
root@localhost # id
uid=0(root) gid=0(root) groupes=0(root), 10(wheel),6(disk),4(adm),3(sys),2(daemon),1(bin)

Pour changer le groupe actif sur un tel système, on utilise la commande newgrp. Lorsqu'elle est utilisée sans
argument, elle active le groupe principal de l'utilisateur (le groupe qui figure dans "/etc/passwd").

1.5 Changer d'identité


Il se peut qu'un utilisateur soit obligé d'effectuer des tâches avec une identité différente. La situation la plus
courante étant un utilisateur normal voulant effectuer quelques tâches en tant qu'administrateur.
La commande su (switch user), permet de changer d'identité:

Commande Explication
su Sans option, su permet de se connecter en tant qu'administrateur
su ahmed Agir en tant qu'utilisateur ahmed
su -ahmed Se connecter en tant que ahmed. Avec "-" on récupère tout l'environnement de l'utilisateur
ahmed
su -c "mount /dev/cdrom
/mnt/cdrom" l'option -c permet simplement d'exécuter la commande entre guillemet en tant que root (pas
d'option). Une fois la commande terminée, on reprend son identité.

49

Vous aimerez peut-être aussi