Académique Documents
Professionnel Documents
Culture Documents
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.
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.
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).
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
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
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.
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.
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
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
# mv file1 my_file1
#mv rep1 my_rep1
Exemple :
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.
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.
Autre commandes :
Messages Système
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.
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.
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.
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.
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
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:
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
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
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:
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.
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
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.
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
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
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.
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.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.
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.
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.
À 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;
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...
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,
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.
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
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.
Exemple :
luser@localhost $ file fichier.ps
fichier.ps: PostScript document
o méthode d'accès;
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)
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à.
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
Archivage
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
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.
* : 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.
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
35
On affiche tous les fichiers sauf les fichiers finissant par la chaîne "htm".
luser@localhost $ ls *[^htm]
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).
Notons que l’on peut rediriger l’erreur standard et la sortie standard vers le même fichier :
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
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
o cat : enchaînement ;
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é).
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
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.
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 ;
o tail.
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.
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.
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) :
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.
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
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
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
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à
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").
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