Ce manuel est la propriété intellectuelle de MandrakeSoft. Il peut être librement copié, distribué et/ou modifié selon les termes de la
Licence GNU Free Documentation License, Version 1.1 ou ultérieure publiée par la Free Software Foundation ; avec la section inaltérable
Au sujet de Mandrake Linux, page 1 ; les textes de couverture, cités ci-dessous, et sans texte de quatrième de couverture. Une copie
complète de la licence se trouve sur le site de GNU (http://www.gnu.org/licenses/fdl.html).
Textes de couverture :
« Mandrake », « Mandrake Linux » et « MandrakeSoft » sont des marques déposées par MandrakeSoft S.A. ; Linux est une marque
déposée de Linus Torvalds ; UNIX est une marque déposée de « The Open Group » aux États-Unis et dans d’autres pays. Toutes les autres
marques déposées et copyrights appartiennent à leurs propriétaires respectifs.
Outils utilisés dans la conception de ce manuel
Ce manuel a été rédigé avec la grammaire XML DocBook . Pour gérer l’ensemble des fichiers Borges
(http: // linux-mandrake. com/ en/ doc/ project/Borges/ ) a été utilisé. Les fichiers source XML ont été préformatés avec xsltproc ,
openjade et jadetex avec l’aide des feuilles de style personnalisées de Norman Walsh. Les images ont été prises avec xwd et GIMP , puis
converties avec convert. Tous ces logiciels sont libres et disponibles sur Mandrake Linux.
Mandrake Linux est une distribution GNU/Linux développée par MandrakeSoft S.A. La société MandrakeSoft est née sur Internet en 1998 ; son ambition première demeure de fournir un système GNU/Linux convivialet facile à utiliser. Les deux piliers de MandrakeSoft sont le logiciel libre et le travail coopératif.
1.1. Contacter la communaut´e Mandrake Linux
Nous présentons ci-dessous plusieurs liens Internet pointant vers de nombreuses ressources liées à Mandrake
Linux. Si vous souhaitez en savoir plus sur la société MandrakeSoft, consultez son site Web (http://www.
mandrakesoft.com/). Un site dédié à la distribution Mandrake Linux (http://www.mandrakelinux.com/) et
tous ses dérivés existe également.
MandrakeExpert (http://www.mandrakeexpert.com/) est la plate-forme d’aide en ligne de MandrakeSoft. Il
propose une nouvelle façon de partager les savoirs s’appuyant sur la confiance et le plaisir de récompenser
son prochain pour son aide. Il s’agit d’un concept différent des autres plate-formes d’aide en ligne.
Vous êtes également invité à participer aux nombreuses listes de diffusion (http://www.mandrake-inux.com/fr/flists.php3), où la communauté Mandrake Linux déploie tout son enthousiasme et sa vivacité.
Enfin, n’oubliez pas de vous connecter sur MandrakeSecure (http://www.mandrakesecure.net/). Ce site
rassemble tout ce qui traite de la sécurité des distributions Mandrake Linux. Vous y trouverez notamment des
avertissements de bogues et de sécurité, ainsi que des articles traitant de sécurité informatique et de privacité.
Bref, voilà un site incontournable pour tout administrateur système, ou tout utilisateur soucieux de sécurité.
1.2. Rejoignez le Club
MandrakeSoft est heureux d’offrir à ses utilisateurs une large palette d’avantages grâce au Club des utilisateurs de Mandrake Linux (http://www.mandrakelinux.com/fr/club/) :
• télécharger des logiciels commerciaux, qui ne sont normalement disponibles que dans les packs de détail,
tels que des pilotes logiciel, des applications commerciales, des partagiciels et des versions démo ;
• voter et proposer de nouveaux logiciels à travers un système de vote RPM que des bénévoles maintienne ;
• accéder à plus de 50.000 paquetages RPM pour toutes les distributions Mandrake Linux ;
• obtenir des remises pour des produits et services sur le MandrakeStore (http://www.mandrakestore.com) ;
• accéder à une meilleure liste de miroirs, exclusive aux membres du Club ;
• lire des forums et articles multilingues.
Le MandrakeClub est l’endroit idéal pour vous faire entendre !
En finançant MandrakeSoft par l’entremise du Mandrake Linux Users Club, vous améliorerez directement
la distribution Mandrake Linux et vous nous permettrez de proposer le meilleur poste de travail GNU/Linux
possible à nos utilisateurs.
1.3. Acqu´erir des produits MandrakeSoft
Il vous est désormais possible d’effectuer vos achats en ligne simplement sur le MandrakeStore (http://www.
mandrakestore.com). Vous y trouverez des logiciels Mandrake Linux , systèmes d’exploitation et outils réseau
(pare-feu) (Multi Network Firewall), mais aussi des offres spéciales d’abonnement, de l’assistance, des logiciels
tiers et des licences, des manuels et des livres GNU/Linux , ainsi que d’autres gadgets MandrakeSoft.
1
Préface
1.4. Contribuer `a Mandrake Linux
Quels que soient vos talents, vous êtes encouragé à participer à l’une des nombreuses tâches requise à la
construction du système Mandrake Linux :
• Paquetages. Un système GNU/Linux est principalement constitué de programmes rassemblés depuis Inter-
net. Ils doivent être mis en forme de façon à ce qu’ils puissent fonctionner ensemble, si tout se passe bien ;
• Programmation. Une foule de projets est directement développée par MandrakeSoft : trouvez celui qui
vous intéresse le plus et proposez votre aide au développeur principal ;
• Internationalisation. vous pouvez nous aider à traduire des pages de nos sites Web, des programmes et
leur documentation respective.
• Documentation. Afin de suivre l’évolution rapide du système, nous ne comptons plus le temps et les efforts
investis pour que le manuel que vous êtes en train de lire demeure à jour. Rédacteurs et traducteurs seront
accueillis à bras ouverts !
Consultez aussi les pages des contributeurs (http://www.mandrakesoft.com/labs/) pour en savoir plus sur
les différentes façons de contribuer à l’évolution de Mandrake Linux.
2. Introduction
Bienvenue, et merci d’utiliser Mandrake Linux ! Ce manuel est destiné à celles et ceux qui désirent plonger
dans les méandres de leur système GNU/Linux , et qui veulent bénéficier au maximum de son potentiel. Ce
manuel est constitué de trois parties :
• Dans la partie intitulée Le Système Linux, nous traiterons de l’utilisation de la ligne de commande et de ses
nombreuses possibilités. Nous discuterons également des bases de l’édition de texte, un concept essentiel
sous GNU/Linux .
Le chapitre Concepts UNIX de base, page 7 présentera les mondes UNIX et plus particulièrement, GNU/Linux .
C’est une introduction aux outils standards utilisés pour manipuler les fichiers et certaines fonctionnalités utiles du shell. Puis, Disques et partitions, page 15 aborde le système de gestion des disques durs sous
GNU/Linux , ainsi que le concept de partitions. Il est nécessaire de bien comprendre les concepts qui y sont
présentés avant de passer au chapitre Introduction à la ligne de commande, page 19.
Puis suivra L’édition de texte : Emacs et VI, page 29. Comme la plupart des fichiers de configuration sont en
format texte sous UNIX , vous aurez sûrement besoin de les modifier avec un éditeur de texte. Vous apprendrez comment utiliser deux des plus célèbres éditeurs du monde UNIX : le puissant Emacs et le vénérable
Vi .
Maintenant, vous devriez pouvoir mener à bien quelques tâches d’entretien de base sur votre système. Les
deux chapitres qui suivront présentent des utilisations pratiques de la ligne de commande (Les utilitaires enligne de commande, page 37) et le contrôle des processus en général (Contrôle des processus, page 49).
• Dans Linux en profondeur, nous discuterons brièvement du noyau Linux et de l’architecture du système de
fichiers.
Le chapitre Organisation de l’arborescence des fichiers, page 53 abordera l’organisation du système de fichiers.
Les systèmes UNIX tendent à grossir énormément, mais chaque fichier a sa place dans un répertoire spécifique. Après avoir lu ce chapitre, vous saurez où chercher les fichiers en fonction de leur rôle à même le
système.
Ensuite, nous traiterons de deux sujets, soit le système de fichiers et les points de montage (Systèmes de fichierset points de montage, page 57). Vous apprendrez alors ce que signifient ces deux termes et vous en verrez des
exemples pratiques.
Nous poursuivrons avec le chapitre Le système de fichiers Linux, page 61. Après une présentation des systèmes
de fichiers disponibles, vous en apprendrez plus au sujet des types de fichiers et autres concepts, comme les
i-nœds et les tubes. Le système de fichiers /proc, page 69, introduira pour sa part un système de fichiers bien
particulier sous GNU/Linux : /proc.
2
Préface
Dans Les fichiers de démarrage : init sysv, page 75, nous présenterons la procédure de démarrage de Mandrake
Linux et comment l’utiliser efficacement.
• Enfin, la partie Utilisations avancées traitera de sujets que seuls les téméraires ou les lecteurs expérimentés
voudront mettre en pratique. Installation d’un logiciel libre, page 77, vous guidera à travers les étapes nécessaires pour construire et installer des logiciels libres depuis leur source. La lecture de ce chapitre devrait vous
encourager à vous faire la main, même si, à première vue, ça peut paraître intimidant. Enfin, Compilation etmise en place de nouveaux noyaux, page 93, se présentera comme une des dernières étapes vers une autonomie totale sous GNU/Linux . Après avoir lu et appliqué la théorie expliquée dans ce chapitre, commencez à
convertir des utilisateurs Windows (si ce n’est déjà fait !).
Le livre se termine par deux annexes, soient respectivement les deux licences principalement utilisées pour
les applications GNU/Linux et la documentation : La licence Publique Générale GNU (GPL), page 103 et Licencede documentation libre GNU, page 107. Un Glossaire, page 113 et un index concluent cet ouvrage.
3. Note des traducteurs
En passant d’un chapitre à l’autre, vous remarquerez que ce livre est une œuvre composite. Même si la cohérence technique et lexicale a été notre priorité, vous remarquerez que le style spécifique de chaque auteur
(anglophone pour la plupart) a été quelque peu préservé.
Garder cette documentation à jour est un véritable défi ! Choisir le bon mot n’est pas toujours facile puisque la
plupart des termes informatiques utilisés par les professionnels de par le monde demeurent en fait des mots
de la langue anglaise. Inventer un terme français plus clair pour le novice risque alors de dérouter l’expert !
Que faire ? On aura en général opté pour un compromis : donner les deux termes, anglais et français, lors
de la première occurrence textuelle de la notion, puis un seul par la suite, afin de ne pas entraver la lecture.
N’hésitez pas à nous donner votre avis à ce sujet.
Car enfin, dans le droit fil de l’esprit particulier de la communauté du libre (open source), nous accueillons
les collaborations à bras ouverts ! Il vous est tout à fait possible d’apporter votre petite pierre à l’édification
de ce projet de diverses façons. Vous disposez de temps libre ? Proposez-nous un nouveau chapitre ! Vous
comprenez bien l’anglais ? Aidez-nous à traduire ! Vous avez des idées pour améliorer ce document ? Nous
sommes tout ouïe !
Pour toute information au sujet du projet de documentation de Mandrake Linux, communiquez avec le responsable de la documentation (mailto:documentation@mandrakesoft.com) ou visitez notre site Web (http://www.linux-mandrake.com/en/doc/project) (en anglais seulement).
4. Conventions utilis´ees dans ce manuel
4.1. Conventions typographiques
Afin d’accentuer clairement certains mots ou groupes de mots, nous avons utilisé certains attributs typographiques. Le tableau suivant en donne la signification symbolique :
Exemple format´eSignification
inœudSignale un terme technique.
ls -ltaTypes utilisés pour une commande et ses arguments, les options et les noms de fichier
(voir la section Synopsis d’une commande, page 4).
ls(1)Référence vers une page de manuel (aussi appelée page de man). Pour consulter la
page correspondante dans un shell (ou ligne de commande), exécutez la commande
man 1 ls.
$ ls *.pidCe style est utilisé pour une copie d’écran texte. Signale une interaction
utilisateur-ordinateur, le code source d’un programme, etc.
localhostDonnées littérales qui ne correspondent généralement pas à une des catégories
précédemment définies : citation d’un mot clé tiré d’un fichier de configuration, par
exemple.
3
Préface
Exemple format´eSignification
ApacheNom des applications. Notre exemple (« Apache ») n’est pas un nom de commande.
Toutefois, dans des contextes particuliers, l’application et le nom de la commande
peuvent être les mêmes, mais formatés de façon différente.
C onfigurerEntrée de menu ou label des interfaces graphiques, en général. La lettre soulignée
indique le raccourci clavier éventuel.
Bus SCSIPartie d’un ordinateur ou ordinateur lui-même.
Once upon a time...Citation en langue étrangère.
Attention !Types réservés pour les mots que nous voulons accentuer. Lisez-les à voix haute :-)
Cette icˆone introduit une note. Il s’agit g´en´eralement d’une remarque dans le contexte courant, pour donner une information additionnelle.
Cette icˆone introduit une astuce. Il peut s’agir d’un conseil d’ordre
g´en´eral sur la meilleure fa¸con d’arriver `a un but sp´ecifique, ou une
fonctionnalit´e int´eressante qui peut vous rendre la vie plus facile.
Soyez tr`es attentif lorsque vous rencontrez cette icˆone. Il s’agit
toujours d’informations tr`es importantes sur le sujet en cours de
discussion.
4.2. Conventions g´en´erales
4.2.1. Synopsis d’une commande
L’exemple ci-dessous présente les différents signes et symboles que vous rencontrerez lorsque nous décrivons
les arguments d’une commande :
command <argument non litt´eral> [--option={arg1,arg2,arg3}]
[argument optionnel...]
Ces conventions étant standardisées, vous les retrouverez en bien d’autres occasions (dans les pages de man,
par exemple).
Les signes « < » (inférieur) et « > » (supérieur) indiquent un argument obligatoire qui ne doit pas être recopié
tel quel mais remplacé par votre texte spécifique. Par exemple : <fichier> désigne le nom d’un fichier ; si ce
fichier est toto.txt, vous devrez taper toto.txt, et non <toto.txt> ou <fichier>.
Les crochets « [ ] » indiquent des arguments optionnels que vous déciderez ou non d’inclure dans la ligne de
commande.
Les points de suspension (« ... ») signifient qu’un nombre illimité d’options peut être inséré à cet endroit.
Les accolades (« { } ») contiennent les arguments autorisés à cet endroit. Il faudra obligatoirement insérer un
d’entre eux à cet endroit précis.
4.2.2. Notations particuli`eres
De temps à autre, il vous sera demandé de presser les touches Ctrl+R. Cela signifie que vous devez taper
et maintenir la touche Ctrl enfoncée pendant que vous appuyez sur la touche R. Il en va de même pour les
touches Alt et Shift.
De même, à propos des menus, aller sur l’entrée de menu Fichier→Relire la configuration utilisateur (Ctrl+R)
signifie : cliquez sur le label Fichier du menu (généralement en haut et à gauche de la fenêtre) puis sur le menu
vertical qui apparaît, cliquez sur Relire la configuration utilisateur. De plus, vous pouvez également utiliser la
combinaison de touches Ctrl+R, comme décrit ci-dessus pour arriver au même résultat.
4
4.2.3. Utilisateurs syst`eme g´en´eriques
À chaque fois que cela est possible, nous utiliserons deux utilisateurs génériques dans nos exemples :
Reine PingusaCet utilisateur est créé pendant l’installation.
Pierre PingusCet utilisateur est ensuite créé par l’administrateur système.
Préface
5
Préface
6
Chapitre 1. Concepts UNIX de base
Le nom « UNIX » dira quelque chose à certains d’entre vous. Peut-être même utilisez-vous un système UNIX
dans le cadre de votre travail, auquel cas la lecture de ce chapitre ne vous apprendra pas grand-chose.
Pour ceux et celles d’entre vous qui ne l’ont jamais utilisé, la lecture de ce chapitre est nécessaire ! La connaissance des concepts que nous allons présenter ici répondra à un nombre surprenant de questions que se posent
les débutants dans le monde GNU/Linux . De même, il est fort probable que ces seuls concepts vous donnent
des pistes de recherche sur les causes d’un problème que vous pourriez rencontrer.
1.1. Utilisateurs et groupes
Cette notion est sans doute la plus importante, car elle a une influence directe sur tous les autres concepts que
nous allons introduire dans ce chapitre.
Linux est un véritable système multiutilisateurs, et pour pouvoir se connecter à un système GNU/Linux , il
faut avoir un compte sur ce système. Quand vous avez créé des utilisateurs lors de l’installation, vous avez en
fait ajouté des comptes utilisateur. Vous vous souvenez sans doute que la création d’un compte a exigé que
vous entriez, entre autres, les éléments suivants :
• le « vrai nom » de l’utilisateur (en fait, ce que vous voulez) ;
• un nom de connexion ;
• un mot de passe.
Les deux paramètres importants ici sont le nom de connexion (très souvent appelé nom de login) et le mot de
passe. Ce sont en effet eux que vous devrez utiliser pour vous connecter au système.
Une autre action effectuée parallèlement à l’ajout d’un utilisateur est la création d’un groupe. Comme nous le
verrons plus loin, les groupes sont utiles dans le cadre du partage de fichiers entre différentes personnes. Un
groupe peut contenir autant d’utilisateurs que vous le souhaitez, et il est très courant de voir une telle séparation dans les gros systèmes. Dans une université, par exemple, vous pouvez avoir un groupe par département,
un autre pour les professeurs et ainsi de suite. L’inverse est également vrai : un utilisateur peut être membre
d’un ou de plusieurs groupes, la limite étant de trente-deux groupes. Un professeur de mathématiques, par
exemple, peut être membre du groupe des professeurs et également membre du groupe de ses étudiants.
Cela ne vous dit toujours pas comment vous connecter. On y arrive.
Si vous avez choisi d’avoir l’interface graphique au démarrage, votre fenêtre de connexion sera similaire à la
figure 1-1.
Figure 1-1. Connexion en mode graphique
Pour vous connecter, vous devez d’abord sélectionner votre compte dans la liste. Un nouveau dialogue apparaît pour rentrer le mot de passe. Notez que vous devrez taper ce mot de passe à l’aveugle, car chaque
caractère sera représenté par une étoile * à l’écran. Vous pouvez aussi choisir votre type de session selon vos
préférences. Pressez enfin sur le bouton Connexion.
Si vous êtes en mode console, vous obtiendrez une image similaire à celle de la figure 1-2.
7
Chapitre 1. Concepts UNIX de base
Figure 1-2. Connexion en mode console
Tapez votre nom de connexion à l’invite Login:, suivi d’une pression sur la touche Entrée. Ensuite, le programme de connexion (appelé, comme par hasard, login ) vous présentera une invite Password:, et vous vous
exécuterez en entrant le mot de passe de ce compte (toujours à l’aveugle !).
Notez que vous pouvez vous connecter plusieurs fois sous le même nom d’utilisateur, par exemple sur des
consoles additionnelles et sous X . Chaque session que vous ouvrirez sera indépendante, et il est même possible
d’ouvrir plusieurs sessions X simultanément. Par défaut, Mandrake Linux dispose de six consoles virtuelles,
en plus de celle réservée à l’interface graphique. Vous pouvez basculer de l’une à l’autre en tapant la séquence
de touches Ctrl-Alt-F<n>, où <n> représente le numéro de la console vers laquelle vous voulez vous diriger.
En général, l’interface graphique est sur la console numéro 7. Ainsi pour vous rendre sur la seconde console
vous presserez les touches Ctrl, Alt et F2 simultanément.
Lors de l’installation, DrakX vous a demandé d’entrer un mot de passe pour un utilisateur bien particulier :
root. Cet utilisateur est spécial pour une raison bien simple : root est l’administrateur du système, donc très
probablement vous. Pour la sécurité de votre système, il est très important que le compte root soit toujours
protégé par un bon mot de passe !
Si vous vous connectez régulièrement en tant que root, il très facile de faire une erreur qui pourrait rendre
votre système inutilisable. Une seule mauvaise manipulation peut suffire. En particulier, si vous n’avez pas
mis de mot de passe à ce compte, n’importe qui peut altérer votre système (y compris d’autres systèmes
d’exploitation sur votre machine !). Ce qui, évidemment, peut s’avérer fort ennuyeux.
Enfin, il est bon de mentionner qu’en interne, le système ne vous identifie pas par votre nom de connexion,
mais par un numéro unique associé à votre nom de connexion : un UID (User ID, soit un identifiant utilisa-teur). De même, chaque groupe est identifié par son identifiant de groupe ou GID (Group ID).
1.2. Notions de base au sujet des fichiers
Les fichiers sont un autre domaine où GNU/Linux diffère totalement de Windows et de la plupart des autres
systèmes d’exploitation. Nous n’aborderons ici que les différences les plus visibles. Si vous le souhaitez, vous
pouvez lire le chapitre Le système de fichiers Linux, page 61, qui approfondit ce sujet.
La première différence est une conséquence directe du fait que GNU/Linux soit un système multiutilisateurs :
chaque fichier est la propriété exclusive d’un utilisateur et d’un groupe. Un peu plus haut, nous avons parlé
des utilisateurs, mais une chose que nous n’avons pas mentionné est que chaque utilisateur dispose de son
propre répertoire (appelé son répertoire personnel, à savoir son home directory en anglais). Il est le propriétaire de ce répertoire, ainsi que de tous les fichiers qu’il y créera par la suite. Lui, et personne d’autre.
Cependant, la notion de propriété d’un fichier, prise seule, ne servirait pas à grand-chose. Mais il y a plus :
en tant que propriétaire d’un fichier, un utilisateur peut établir des droits sur ce fichier. Ces droits distinguent
trois catégories d’utilisateurs : le propriétaire du fichier, tout utilisateur qui est membre du groupe propriétaire
associé au fichier (appelé le groupe propriétaire) mais n’est pas le propriétaire lui-même, et les autres, catégorie
qui regroupe tout utilisateur qui n’est ni le propriétaire, ni membre du groupe propriétaire.
On distingue trois types de droits :
1. Droit de lecture (r pour Read ou lire). Sur un fichier, cela autorise la lecture de son contenu. Pour un
répertoire, cela autorise son contenu (c’est-à-dire les fichiers qu’il contient) à être listé.
2. Droit d’écriture (w pour Write ou écrire). Pour un fichier, cela autorise la modification de son contenu. Pour
un répertoire, l’accès en écriture autorise un utilisateur à ajouter et retirer des fichiers de ce répertoire,
même s’il n’est pas le propriétaire des-dits fichiers.
3. Droit d’exécution (x pour eXecute ou exécuter). Pour un fichier, cela en autorise l’exécution (par conséquent, seuls les fichiers exécutables devraient normalement avoir ce droit positionné). Pour un répertoire,
cela autorise un utilisateur à le traverser (ce qui signifie entrer dans ce répertoire ou passer par celui-
8
Chapitre 1. Concepts UNIX de base
ci). Notez bien la séparation avec le droit en lecture : il se peut très bien que vous puissiez traverser un
répertoire sans pouvoir lire son contenu !
Toutes les combinaisons de ces droits sont possibles : vous pouvez par exemple autoriser la lecture du fichier
à vous seul et l’interdire à tous les autres. Vous pouvez même faire l’inverse, même si ce n’est pas très logique
à première vue... En tant que propriétaire du fichier, vous pouvez en changer le groupe propriétaire (si et
seulement si vous êtes aussi membre du nouveau groupe), et même vous déposséder du fichier (c’est-à-dire
en changer le propriétaire). Bien entendu, si vous vous dépossédez d’un fichier, vous perdrez tous les droits
sur celui-ci...
Prenons l’exemple d’un fichier et d’un répertoire. L’affichage ci-dessous correspond à la frappe de la commande ls -l depuis une ligne de commande :
Les différents champs de sortie de la commande ls -l sont les suivants (de gauche à droite) :
• les dix premiers caractères désignent successivement le type du fichier et les droits qui lui sont associés ;
le premier caractère désigne le type du fichier : c’est un tiret (-) s’il s’agit d’un fichier ordinaire, d si le
fichier est un répertoire. Il existe d’autres types de fichiers dont nous parlerons dans ce manuel. Les neuf
caractères qui suivent représentent les droits associés au fichier. On constatera ici la distinction faite entre
les différents types d’utilisateur pour un même fichier : les trois premiers caractères représentent les droits
octroyés à l’utilisateur propriétaire, les trois suivants s’appliquent à tout utilisateur du groupe qui n’est pas
le propriétaire, et les trois derniers aux autres ; un tiret (-) signifie que le droit n’est pas octroyé ;
• vient ensuite le nombre de liens du fichier. Nous verrons plus loin que l’identifiant unique d’un fichier n’est
pas son nom, mais un numéro (le numéro d’inœud), et qu’il est possible pour un fichier sur disque d’avoir
plusieurs noms. Pour un répertoire, le nombre de liens a une signification spéciale, que nous aborderons
également un peu plus loin ;
• viennent ensuite le nom de l’utilisateur propriétaire du fichier et le nom du groupe propriétaire ;
• enfin sont affichés la taille du fichier (en octets) ainsi que la date de sa dernière modification. Pour finir,
vous trouverez également le nom du fichier ou du répertoire lui-même.
Observons maintenant en détails les droits associés à l’accès de chacun de ces fichiers : il faut tout d’abord
enlever le premier caractère, qui désigne le type. Donc, pour le fichier un_fichier, les droits accordés sont :
rw-r-----. Voici comment les interpréter :
• les trois premiers (rw-) sont les droits accordés à l’utilisateur propriétaire de ce fichier, en l’occurrence reine.
L’utilisateur reine peut donc lire le fichier (r), le modifier (w) mais ne peut pas l’exécuter (-) ;
• les trois suivants (r--) sont concédés à tout utilisateur qui n’est pas reine mais qui appartient au groupe
users : il pourra lire le fichier (r), mais ne pourra ni le modifier ni l’exécuter (--) ;
• les trois derniers (---) s’appliquent à tout utilisateur qui n’est pas reine et qui n’appartient pas au groupe
users : un tel utilisateur n’a tout simplement aucun droit sur ce fichier.
Pour le répertoire un_r´epertoire, les droits sont rwxr-xr--, et donc :
• pierre, en tant que propriétaire du répertoire, peut en lister le contenu (r), peut ajouter des fichiers dans ce
répertoire ou en supprimer (w), et il peut traverser ce répertoire (x) ;
• tout utilisateur qui n’est pas pierre mais qui appartient au groupe users pourra lister le contenu de ce
répertoire (r) mais ne pourra pas y ajouter des fichiers (-) ; par contre, il aura le droit de le traverser (x) ;
• tout autre utilisateur ne pourra que lister les fichiers de ce répertoire (r), mais c’est tout. Il sera incapable de
le traverser.
Il existe une exception à ces règles : root. root peut changer les attributs (droits, propriétaire, groupe propriétaire) de tous les fichiers, même s’il n’en est pas le propriétaire. Cela veut dire qu’il peut aussi s’en attribuer la
9
Chapitre 1. Concepts UNIX de base
propriété ! Il peut lire des fichiers sur lesquels il n’a pas le droit de lecture, traverser des répertoires auxquels
il n’aurait normalement pas accès, et ainsi de suite. Et s’il lui manque un droit, il lui suffit simplement de se le
rajouter...
Pour conclure, il est utile de mentionner les différences entres les noms de fichiers dans le monde UNIX et le
monde Windows . UNIX permet une flexibilité bien plus grande et a moins de limitation :
• un nom de fichier peut comporter n’importe quel caractère (à l’exception du caractère ASCII 0, qui dénote
la fin d’une chaîne de caractères, et /, qui est le séparateur de répertoires), même des caractères non imprimables. De plus, UNIX est sensible à la casse : les fichiers readme et Readme sont différents, car r et R sont
deux caractères distincts sous UNIX ;
• comme vous avez pu le remarquer, un nom de fichier ne comporte pas forcément une extension, à moins
que vous le vouliez. Les extensions de fichier n’identifient pas le contenu des-dits fichiers sous GNU/Linux .
D’ailleurs, il en va de même sur tous les systèmes d’exploitation. Cependant, ces « extensions » ainsi
nommées sont toujours très pratiques. Le caractère point (.) sous UNIX n’est qu’un caractère comme les
autres. Notons que les noms de fichier commençant avec un point sous UNIX sont des « fichiers cachés ».
Toutefois il est `a signaler que certaines applications graphiques (gestionnaires de fichiers, applications bureautiques, etc.) utilisent effectivement les extensions de noms de fichiers pour reconnaˆıtre facilement les formats de fichier. C’est donc une bonne id´ee d’utiliser
ces extensions pour les applications qui en tirent parti.
1.3. Les processus
On désigne par le terme de processus une instance de programme en cours d’exécution et son environnement.
Comme pour les fichiers, nous n’introduirons ici que les différences les plus importantes ; continuez la lecture
de ce manuel pour une discussion plus en profondeur sur le sujet.
La différence la plus importante est, encore une fois, liée au concept d’utilisateurs : en effet, chaque processus
s’exécute avec les droits de l’utilisateur qui l’a lancé. En interne, le système identifie les processus de façon
unique grâce à un numéro. Ce numéro est appelé le PID (Process ID, donc identifiant de processus). Avec ce
PID, le système sait, entreautres choses, qui (quel utilisateur) a lancé le processus. Il lui reste alors à vérifier que
le processus demandé est « légal ». Reprenons l’exemple du fichier un_fichier susmentionné. L’utilisateur
pierre sera capable d’ouvrir ce fichier en lecture seule, mais pas en lecture/écriture, puisque les droits associés
au fichier l’interdisent. Encore une fois, l’exception à la règle est root...
En conséquence, GNU/Linux est virtuellement immunisé contre les virus : pour opérer, les virus doivent infecter des fichiers exécutables du système. Mais avec le seul statut d’utilisateur, il leur est impossible de modifier ces fichiers, ce qui réduit d’autant plus les risques. Ajoutons que les virus sont, en général, très rares
dans le monde UNIX . Jusqu’à présent, il existe moins d’une douzaine de virus connus sous Linux , et ils sont
complètement inoffensifs lorsqu’ils sont lancés par un utilisateur normal. Un seul utilisateur peut vraiment
endommager le système en activant ces virus, et, encore une fois, c’est root.
Toutefois, il existe bien des logiciels antivirus sous GNU/Linux , la plupart d’entre eux étant destinés aux fichiers
DOS /Windows ... En effet, de plus en plus de serveurs de fichiers GNU/Linux desservent des machines windows
avec le paquetage logiciel Samba .
Linux permet également un contrôle aisé des processus, entre autres grâce aux signaux. Avec ceux-ci, vous
pouvez, par exemple, suspendre un processus ou le tuer. Envoyez simplement le signal correspondant au processus et c’est fait. Toutefois, vous serez limité à l’envoi de signaux à vos propres processus, pas aux processus
lancés par un autre utilisateur. L’exception à la règle est root. Oui, encore lui ! Dans le chapitre Contrôle desprocessus, page 49, vous apprendrez comment obtenir le PID d’un processus et lui envoyer des signaux.
1.4. Petite introduction `a la ligne de commande
La ligne de commande est le moyen le plus direct pour donner des ordres à la machine. Si vous utilisez la
ligne de commande de GNU/Linux , vous découvrirez vite qu’elle est bien plus puissante et polyvalente que
d’autres lignes de commande que vous avez déjà pu utiliser. La raison en est que vous avez non seulement
accès à toutes les applications de X , mais aussi à des milliers d’utilitaires en mode console (par opposition au
10
Chapitre 1. Concepts UNIX de base
mode graphique) qui n’ont pas d’équivalents graphiques, ou dont les nombreuses options et combinaisons
possibles seront difficilement accessibles sous la forme de boutons ou de menus.
Mais, il faut bien l’admettre, cette ligne de commande nécessite un peu d’aide pour débuter. Si vous n’êtes pas
déjà en mode console et utilisez l’interface graphique, la première chose à faire est de lancer un émulateur de
terminal. En accédant au menu GNOME ou KDE , vous trouverez ceux-ci dans le menu Terminaux. Ensuite, choi-
sissez celui que vous voulez, par exemple, Konsole ou XTerm. Une icône qui identifie clairement l’émulateur
de terminal se trouve également sur les tableaux de bord de GNOME et KDE (figure 1-3).
Figure 1-3. L’icône de l’émulateur de terminal sur le tableau de bord de KDE
Le shell est le nom du programme avec lequel vous entrez en relation. Vous êtes devant cette invite (prompt en
anglais) :
[reine@localhost reine]$
Ceci suppose que votre nom d’utilisateur soit reine et que votre nom de machine soit localhost (ce qui est
le cas si votre machine ne fait pas partie d’un réseau). L’espace après l’invite est disponible pour taper votre
commande. Notez que quand vous êtes root, le $ de l’invite devient un # (ceci est vrai dans la configuration par défaut, chacun de ces éléments pouvant être personnalisé). Lorsque vous avez lancé un shell en tant
qu’utilisateur et que vous désirez « devenir » root, utilisez la commande su :
# Entrez le mot de passe root ; il n’appara^ıtra pas `a l’´ecran
[reine@localhost reine]$ su
Password:
# exit vous fera revenir `a votre compte utilisateur normal
[root@localhost reine] # exit
[reine@localhost reine]$
Partout ailleurs dans cette documentation, l’invite sera représentée symboliquement par un $, que vous soyez
un utilisateur normal ou root. Il vous sera indiqué quand vous devez être root, alors n’oubliez pas su. Un #
en début de ligne de code représentera un commentaire.
Quand vous lancez le shell pour la première fois, vous vous retrouverez normalement dans votre répertoire
personnel. Pour savoir, à tout moment, dans quel répertoire vous vous situez, tapez la commande pwd (pour
Print Working Directory, soit afficher le répertoire de travail) :
$ pwd
/home/reine
Nous allons maintenant examiner quelques commandes de base, et vous verrez bientôt que vous ne pourrez
plus rien faire sans elles.
1.4.1. cd : changer de r´epertoire
La commande cd est exactement la même que celle sous DOS , avec quelques fonctionnalités en plus. Elle fait
exactement ce qu’énonce son acronyme : elle change le répertoire de travail. Vous pouvez utiliser . et .., qui
sont respectivement le répertoire courant et son répertoire parent. Taper simplement cd vous ramènera à votre
répertoire personnel. Taper cd - vous renverra dans le dernier répertoire visité. Et enfin, vous pouvez spécifier
le répertoire de l’utilisateur pierre en tapant ~pierre (~ seul signifie votre propre répertoire personnel). Notez
qu’en tant qu’utilisateur normal, vous ne pouvez, en général, pas accéder au répertoire d’un autre utilisateur (à
moins qu’il ne l’ait explicitement autorisé ou que tel soit le réglage de la configuration par défaut du système),
sauf si vous êtes root, donc soyons root et entraînons-nous :
11
Chapitre 1. Concepts UNIX de base
$ pwd
/root
$ cd /usr/share/doc/HOWTO
$ pwd
/usr/share/doc/HOWTO
$ cd ../FAQ-Linux
$ pwd
/usr/share/doc/FAQ-Linux
$ cd ../../../lib
$ pwd
/usr/lib
$ cd ~pierre
$ pwd
/home/pierre
$ cd
$ pwd
/root
Maintenant, redevenons un utilisateur ordinaire.
1.4.2. Quelques variables d’environnement et la commande echo
Tous les processus ont en fait leurs variables d’environnement . Le shell vous permet de les visualiser directement avec la commande echo. Voici quelques variables intéressantes :
1. HOME : cette variable d’environnement contient une chaîne de caractères désignant votre répertoire personnel.
2. PATH : elle contient la liste de tous les répertoires dans lesquels le shell doit chercher des exécutables quand
vous tapez une commande (notez que, contrairement à DOS , par défaut, le shell n’ira pas chercher les
commandes dans le répertoire courant !).
3. USERNAME : cette variable contient votre nom de login.
4. UID : elle contient votre identifiant utilisateur.
5. PS1 : cette variable abrite la définition de votre invite. C’est souvent une combinaison de séquences spécifiques, et vous pouvez lire bash(1) dans les pages de manuel pour plus de renseignements.
Pour que le shell affiche la valeur d’une variable, vous devez mettre un $ devant son nom. Ici, echo va vous
être utile :
$ echo Bonjour
Bonjour
$ echo $HOME
/home/pierre
$ echo $USERNAME
pierre
$ echo Bonjour $USERNAME
Bonjour pierre
$ cd /usr
$ pwd
/usr
$ cd $HOME
$ pwd
/home/pierre
Vous constaterez que le shell substitue la valeur de la variable avant d’exécuter la commande, sinon notre
cd $HOME n’aurait pas fonctionné. En fait, le shell a en premier lieu remplacé $HOME par sa valeur, soit
/home/pierre ; la ligne est donc devenue cd /home/pierre, ce que nous recherchions. Même chose pour
echo $USERNAME, etc.
12
Chapitre 1. Concepts UNIX de base
1.4.3. cat : afficher le contenu d’un ou de plusieurs fichiers `a l’´ecran
Peu de choses à dire, si ce n’est que cette commande fait simplement et littéralement ce qu’elle énonce : afficher
le contenu d’un ou de plusieurs fichiers sur la sortie standard, donc l’écran en temps normal :
Son nom est un jeu de mots sur le premier pager existant sous UNIX , qui se nommait more1. Un pager est un
programme dont le but est d’autoriser la visualisation de longs fichiers page par page (plus précisément, écran
par écran). Nous parlons de less plutôt que de more car son utilisation est beaucoup plus intuitive. Utilisez
donc less pour voir des gros fichiers, qui sont trop longs pour l’écran. Par exemple :
less /etc/termcap
Pour naviguer dans le fichier, utilisez simplement les touches fléchées haut et bas, et q pour quitter. En fait,
less peut faire bien plus : tapez simplement h pour avoir de l’aide (en anglais), et lisez. Mais de toute façon,
l’objectif de cette section était de vous permettre de lire de longs fichiers et, nous l’espérons, cet objectif est
maintenant atteint :-)
1.4.5. ls : faire une liste de fichiers
Cette commande est équivalente à celle nommée dir sous DOS , mais elle peut accomplir beaucoup plus de
choses. Ceci est dû en grande partie au fait que les fichiers, eux-mêmes, font nettement plus ! La syntaxe de la
commande ls est comme suit :
ls [options] [fichier|r´epertoire] [fichier|r´epertoire...]
Si aucun fichier ou répertoire n’est mentionné sur la ligne de commande, ls fera la liste des fichiers du répertoire courant. Ses options sont très nombreuses, et nous n’en citerons que quelques-unes :
1. More signifie « plus » et less signifie « moins »
13
Chapitre 1. Concepts UNIX de base
1. -a : fait une liste de tous les fichiers, y compris les fichiers cachés (rappelons que sous UNIX , les fichiers
cachés sont ceux dont le nom commence par un point (.)) ; l’option -A fait une liste de « presque » tous les
fichiers, à savoir tous les fichiers qu’afficherait l’option -a sauf « . » et « .. ».
2. -R : fait une liste récursivement, par exemple, tous les fichiers et sous-répertoires des répertoires mentionnés sur la ligne de commande.
3. -s : affiche la taille en kilo-octets à côté de chaque fichier.
4. -l : affiche des informations supplémentaires sur les fichiers.
5. -i : affiche le numéro d’inœud (le numéro unique du fichier sur un système de fichiers, voir le chapitre Lesystème de fichiers Linux, page 61) en face de chaque fichier.
6. -d : traite les répertoires comme des fichiers normaux au lieu de lister leur contenu.
Quelques exemples :
1. ls -R : fait une liste récursive des fichiers du répertoire courant.
2. ls -is images/ .. : fait une liste des fichiers du répertoire images/ et du répertoire parent, avec pour
chaque fichier son numéro d’inœud et sa taille en kilo-octets.
3. ls -l images/*.png : fait une liste de tous les fichiers du répertoire images/ dont le nom se termine par
.png. Notez que cela comprend aussi le fichier .png, si celui-ci existe.
1.4.6. Raccourcis clavier utiles
basics-chapter.xml Beaucoup de combinaisons de touches sont disponibles, lesquelles peuvent vous faire gagner un temps précieux. Nous vous proposons une liste de celles qui sont essentielles. Nous supposons ici que
vous utilisez le shell par défaut de Mandrake Linux, soit bash . Toutefois, ces séquences de touches devraient
aussi fonctionner avec d’autres shells.
D’abord, les touches fléchées : bash maintient un historique des commandes que vous tapez, dans lequel vous
pouvez vous déplacer avec les flèches haut et bas. Vous pouvez remonter jusqu’à un nombre de lignes définies
dans la variable d’environnement HISTSIZE. De plus, l’historique est persistant d’une session à l’autre, donc
vous ne perdrez pas les commandes que vous avez tapées lors d’une session précédente.
Les flèches gauche et droite déplacent le curseur dans le sens indiqué. Vous pouvez ainsi éditer vos lignes de
cette façon. Mais il y a plus en matière d’édition : Ctrl+a et Ctrl+e, par exemple, vous amèneront respectivement au début et à la fin de la ligne courante. Les touches <-- (Backspace) et Suppr fonctionneront comme
on s’y attend. Un équivalent de Backspace est Ctrl+h et un équivalent de Suppr est Ctrl+d. Ctrl+k effacera
toute la ligne depuis la position du curseur jusqu’à la fin de la ligne, et Ctrl+w effacera le mot qui précède la
position du curseur.
Taper Ctrl+d sur une ligne vide fermera la session actuelle, ce qui est un vrai raccourci par rapport à la
commande exit. Ctrl+c interrompra la commande en cours d’exécution, sauf si vous étiez en train d’éditer
une ligne. Dans ce cas, ce sera l’édition en cours qui sera interrompue et vous serez ramené à l’invite. Ctrl+l
nettoie l’écran.
Enfin, parlons un peu de Ctrl+s et Ctrl+q : ces combinaisons de touches servent respectivement à suspendre
et à restaurer le flux de caractères sur un Terminal . Elles sont très peu utilisées, mais il peut arriver que vous
tapiez Ctrl+s par inadvertance (après tout, les touches s et d sont très proches l’une de l’autre sur un clavier...).
Donc, si vous appuyez sur des touches mais ne voyez rien apparaître à l’écran, essayez Ctrl+q d’abord et faites
attention : tous les caractères que vous avez tapés entre le Ctrl+s non désiré et le Ctrl+q apparaîtront alors
sur l’écran.
14
Chapitre 2. Disques et partitions
Ce chapitre propose des informations pour ceux qui souhaitent mieux comprendre les détails techniques de la
gestion des disques sous GNU/Linux . Il donne une description complète du système de partitionnement du PC .
Il n’est utile que si vous décidez de partitionner manuellement votre disque dur. Le programme d’installation
pouvant partitionner vos disques dur de manière automatique, il n’est pas nécessaire de tout comprendre
pour effectuer une installation standard. Par contre si vous souhaitez modifier l’architecture des partition, ce
chapitre sera utile.
2.1. Structure d’un disque dur
Pour simplifier, disons qu’un disque est physiquement divisé en petits secteurs. Une suite de secteurs peut
former une partition. En fait, vous pouvez créer autant de partitions que vous le souhaitez, chacune d’entre
elles étant considérées comme un disque dur séparé.
2.1.1. Les Secteurs
Un disque dur n’est rien d’autre qu’une suite de secteurs. Un secteur est la plus petite unité d’information
sur un disque dur, et sa taille est en général de 512 octets. Les secteurs d’un disque dur de « n » secteurs sont
numérotés de « 0 » à « n-1 » .
2.1.2. Les Partitions
L’utilisation de plusieurs partitions vous permet de créer autant de disques durs virtuels sur votre disque dur
réel. Ceci comporte plusieurs avantages:
• Des systèmes d’exploitation différents utilisent des structures de disque (appelés systèmes de fichiers) diffé-
rents; cela est notamment le cas entre Windows et GNU/Linux . Avoir plusieurs partitions sur un disque dur
vous permet d’installer plusieurs systèmes d’exploitation sur le même disque matériel.
• Pour des raisons de performances, un système d’exploitation aura avantage à avoir plusieurs disques avec
des systèmes de fichiers différents puisqu’ils seront utilisés pour des tâches complètement distinctes. C’est
ainsi le cas pour GNU/Linux qui nécessite une deuxième partition appelée « swap » (échange), utilisée pour
accueillir la mémoire virtuelle.
• Même si toutes vos partitions utilisent le même système de fichiers, il peut s’avérer très utile de séparer les
différentes parties de votre OS en autant de partitions. Dans la configuration la plus simple, vous pouvez
répartir vos fichiers sur deux partitions, une pour vos données personnelles, une autre pour le système luimême. Cela vous permet de mettre à jour ce dernier en effaçant complètement la partition du système mais
en gardant vos fichiers personnels intacts.
• Les erreurs physiques sur un disque dur sont généralement situées sur des secteurs adjacents et non dis-
persées sur tout le disque. Distribuer vos fichiers sur des partitions différentes limitera les pertes de données
en cas de dommages physiques de votre disque dur.
Normalement, le type d’une partition spécifie le système de fichiers que la partition est censée héberger.
Chaque système d’exploitation en reconnaît certains, mais pas d’autres. Consulter Systèmes de fichiers et points
de montage, page 57 et Le système de fichiers Linux, page 61 pour plus d’information.
15
Chapitre 2. Disques et partitions
2.1.3. D´efinition de la structure du disque dur
2.1.3.1. Le plus simple
Avoir seulement deux partitions ! une pour l’espace d’échange, l’autre pour les fichiers1.
La r`egle g´en´erale pour la taille de la partition d’´echange est de choisir le double de la taille de votre m´emoire vive (RAM). N´eanmoins,
pour des configurations ayant beaucoup de m´emoire (>512 Mo),
cette r`egle ne s’applique plus, et des tailles plus petites sont alors
pr´ef´erables.
2.1.3.2. Une autre configuration courante
Opter pour la séparation des données et des programmes. Et pour être encore plus efficace, on ajoute généralement une troisième partition dite « racine » et étiquetée /. Elle accueillera les programmes nécessaires au
démarrage du système et les programmes de maintenance de base.
Nous pouvons ainsi définir quatre partitions :
Échange :
Une partition de type swap, dont la taille est équivalente à celle de la mémoire vive
Racine : /
C’est la partition la plus importante. Non seulement elle contient les données et les programmes les plus
importants pour le système, mais elle aura également à servir comme point d’accueil pour les autres
partitions.
Les besoins en terme de taille de la partition racine sont très limités, 300Mo sont suffisants. Néanmoins, si
vous envisagez d’installer des applications commerciales, résidant généralement dans /opt, vous devrez
augmenter cette taille en conséquence. Une autre option est alors de créer une partition /opt séparée.
Données statiques : /usr
La plupart des paquetages installent presque tous leurs exécutables et fichiers de données dans /usr.
L’avantage d’avoir l’ensemble sur une partition séparée est que l’on peut aisément la partager avec
d’autres machines du réseau.
La taille recommandée dépend des paquetages que vous souhaitez installer. Elle peut varier de 100Mo
pour une installation poids plume à plusieurs Go pour une installation complète. Un compromis de un
ou de deux Go (selon la taille disponible sur votre disque) est généralement suffisant.
Répertoires personnels : /home
Sont stockés ici les répertoires personnels de tous les utilisateurs du système. Il accueille aussi généralement les répertoires servis par HTTP ou FTP (respectivement pour la navigation Web ;et les transferts de
fichiers).
La taille de la partition est très variable: elle dépend du nombre d’utilisateurs (ou de services) hébergés et
de leurs besoins.
Une variante de cette solution est de ne pas utiliser une partition séparée pour /usr : /usr sera alors un simple
répertoire à l’intérieur de la partition /.
1. Le système de fichiers actuellement utilisé par les fichiers GNU/Linux est appelé ext3
16
Chapitre 2. Disques et partitions
2.1.3.3. Configurations exotiques
Lorsque votre machine est configurée pour des utilisations bien particulières, pour être un serveur Web
ou un pare-feu, ses besoins seront radicalement différents de ceux d’une machine de bureau standard. Par
exemple,un serveur FTP aura probablement besoin d’une grosse partition séparée pour accueillir /home/ftp,
alors que /usr sera plutôt limité. Dans de telles situations, il vaut mieux avoir soigneusement défini ses besoins avant même de commencer l’installation.
Si apr`es un certain temps d’utilisation de votre machine, vous vous
rendez compte que les partitions ou leur taille sont inad´equates, il
vous sera possible de redimensionner la plupart des partitions sans
avoir pour cela `a r´einstaller tout le syst`eme ;il n’y a en g´en´eral
pas de risque pour vos donn´ees. Consultez G´erer ses partitions du
manuel Guide de d´emarrage .
Avec un peu d’exp´erience, vous pourrez mˆeme d´eplacer une
partition comble vers un tout nouveau disque dur. Mais, ¸ca, c’est
une autre histoire...
2.2. Conventions pour nommer disques et partitions
GNU/Linux utilise une convention beaucoup plus logique pour nommer les partitions. D’une part, le type des
partitions éventuellement présentes n’entre pas en ligne de compte; d’autre part, les partitions sont nommées
en fonction du disque où elles se situent. Tout d’abord, voici comment les disques sont nommés :
• les périphériques IDE (que ce soient des disques durs, lecteurs CD-ROM ou autres) primaires, maître et
esclave, sont appelés respectivement /dev/hda et /dev/hdb
• sur l’interface secondaire, ce sont /dev/hdc et /dev/hdd pour maître et esclave respectivement
• si votre ordinateur contient d’autres interfaces IDE (par exemple l’interface IDE présente sur certaines cartes
Soundblaster), les disques s’appelleront alors /dev/hde, /dev/hdf, etc. Vous pouvez aussi avoir d’autres
interfaces IDE si vous avez des cartes RAID ou des puces RAID intégrées à la carte mère.
• les disques SCSI sont appelés /dev/sda, /dev/sdb, etc. dans l’ordre de leur apparition sur la chaîne SCSI
(en fonction des ID croissants). Les lecteurs de CD-ROM SCSI sont appelés /dev/scd0, /dev/scd1, toujours
dans l’ordre d’apparition sur la chaîne SCSI.
Ainsi, GNU/Linux nommera les partitions de la façon suivante :
• Les partitions primaires (ou étendues) sont nommées /dev/hda1 à /dev/hda4 lorsqu’il y en a
• Les partitions logiques, s’il y en a, sont nommées /dev/hda5, /dev/hda6, etc. dans leur ordre d’apparition
dans la table des partitions logiques.
Ainsi GNU/Linux nommera les partitions de la façon suivante :
Figure 2-1. Premier exemple de noms de partitions sous GNU/Linux
17
Chapitre 2. Disques et partitions
Figure 2-2. Second exemple de noms de partitions sous GNU/Linux
Vous voici maintenant à même de nommer les différentes partitions et disques durs quand vous en aurez
besoin. Vous remarquerez également que GNU/Linux nomme les partitions même s’il ne sait pas les gérer
d’entrée de jeu a priori (il ignore le fait que ce ne sont pas des partitions GNU/Linux autochtones).
Pour les noyaux r´ecents 2.4, Mandrake Linux, utilise le Syst`eme de
fichiers de p´eriph´eriques Linux Devfs (Device File System) (http://www.atnf.csiro.au/~rgooch/linux/docs/devfs.html). Ce
syst`eme assure une compatibilit´e totale avec les notations utilis´ees
ci-dessus, mais cette compatibilit´e pourrait disparaˆıtre ult´erieurement. En fait, chaque p´eriph´erique est ajout´e dynamiquement au
fur et `a mesure de leur disponibilit´e ou n´ecessit´e.
Par exemple, le premier disque dur IDE devient d´esormais
/dev/ide/host0/bus0/target0/lun0/disc au lieu de /dev/hda.
18
Chapitre 3. Introduction `a la ligne de commande
Dans le chapitre Concepts UNIX de base, page 7, nous avons vu comment lancer un shell et ses principes de
base, mais nous ne l’avons pas fait fonctionner. C’est ce que nous nous proposons de faire dans ce chapitre.
Le principal avantage du shell est le nombre d’utilitaires existants : des milliers sont disponibles et chacun
d’entre eux a une tâche bien définie. Nous n’en examinerons ici qu’un petit nombre. L’une des grandes forces
d’UNIX est la possibilité de combiner ces utilitaires, comme nous le verrons plus loin.
3.1. Utilitaires de manipulation de fichiers
La manipulation de fichiers signifie ici « copier », « déplacer » et « effacer » des fichiers. Le changement de
leurs attributs (propriétaire, permissions associées) sera examiné par la suite.
3.1.1. mkdir, touch : cr´eation de r´epertoires et fichiers vides
mkdir (MaKe DIRectory) est utilisé pour créer des répertoires. Sa syntaxe est simple :
mkdir [options] <r´epertoire> [r´epertoire ...]
En fait, une seule option est vraiment intéressante : l’option -p. Si cette option est passée en argument, elle
implique deux comportements :
1. mkdir créera les répertoires parents s’il n’existaient pas avant. Sans cette option, mkdir échouerait, se
plaignant que les répertoires parents n’existent pas ;
2. mkdir terminera silencieusement si le répertoire que vous désirez créer existe déjà. De même, si vous ne
spécifiez pas l’option -p, mkdir renverra un message d’erreur, se plaignant cette fois-ci que le répertoire à
créer existe déjà.
Voici quelques exemples :
• mkdir toto crée un répertoire du nom de toto dans le répertoire courant.
• mkdir -p images/divers docs crée un répertoire divers dans le répertoire images après avoir créé ce
dernier s’il n’existait pas (-p) ; il crée également un répertoire docs dans le répertoire courant.
Initialement, la commande touch n’a pas pour but de créer des fichiers mais de mettre à jour les dates d’accès
et de modification1. Toutefois, l’un des effets de bord de touch est de créer les fichiers mentionnés comme des
fichiers de taille 0 s’ils n’existaient pas déjà. La syntaxe est :
touch [options] fichier [fichier...]
Il faut donc lancer la commande :
touch fichier1 images/fichier2
ce qui créera un fichier vide appelé fichier1 dans le répertoire courant et un fichier vide appelé
fichier2 dans le répertoire images, si ces fichiers n’existaient pas déjà.
3.1.2. rm : supprimer des fichiers ou des r´epertoires
rm (ReMove) remplace les commandes del et deltree de DOS , et rajoute des options supplémentaires. Sa syn-
taxe est :
rm [options] <file|directory> [file|directory...]
Parmi les options, on trouve :
1. Il y a trois mesures de temps distinctes pour chaque fichier sous UNIX : la date du dernier accès au fichier (atime),
c’est-à-dire la date de la dernière ouverture du fichier en lecture ou en écriture ; la date de la dernière modification des
attributs de l’inœud (mtime) ; et enfin la date de la dernière modification du contenu du fichier (ctime).
19
Chapitre 3. Introduction à la ligne de commande
• -r ou -R : supprime récursivement. Cette option est obligatoire pour supprimer un répertoire, même vide.
Toutefois, pour effacer des répertoires vides, vous pouvez également utiliser la commande rmdir.
• -i : demande une confirmation avant chaque effacement. Prenez note que, par défaut et pour des raisons
de sécurité, la commande rm dans Mandrake Linux est un alias de rm -i (comme le sont également les
commandes cp et mv). Si vous désirez les effacer, vous pouvez éditer le ficher ~/.bashrc et ajouter la ligne
suivante : unalias rm cp mv.
• -f : le contraire de -i, cette option force la suppression des fichiers ou répertoires, même si l’utilisateur n’a
pas l’autorisation d’écriture sur les fichiers2.
Quelques exemples :
• rm -i images/*.jpg fichier1 : suppression de tous les fichiers dont le nom se termine par .jpg dans le
répertoire images, ainsi que le fichier fichier1 dans le répertoire courant. Une confirmation est demandée
pour chacun des fichiers. Répondez o ou y pour confirmer, n pour annuler.
• rm -Rf images/divers/ file* : suppression sans demande de confirmation de tout le répertoire
divers/ dans le répertoire images/. De plus, tous les fichiers du répertoire courant dont le nom commence
par file seront également effacés.
Un fichier effac´e avec rm l’est de fa¸con irr´eversible : il n’y a alors
aucun moyen de r´ecup´erer ce fichier3! N’h´esitez donc pas `a utiliser
l’option -i afin d’´eviter d’effacer des donn´ees par erreur.
• -f : force l’opération. Aucun avertissement en cas d’écrasement d’un fichier au cours de l’opération.
• -i : le contraire. Demande une confirmation à l’utilisateur avant d’écraser un fichier existant.
• -v : mode verbeux qui rapporte tous les changements.
Quelques exemples :
• mv -i /tmp/pics/*.png . : déplace tous les fichiers du répertoire /tmp/pics/ dont le nom se termine par
.png vers le répertoire courant (.). Une confirmation est demandée avant d’écraser un fichier existant.
• mv toto titi : renomme le fichier (ou le répertoire) toto en titi. Si un répertoire titi existait déjà, l’effet
de cette commande serait de bouger tout le répertoire toto (le répertoire lui-même et tous ses fichiers et
sous-répertoires) dans le répertoire titi.
• mv -vf fichier* images/ trash/ : déplace, sans demander de confirmation, tous les fichiers dans le ré-
pertoire courant dont le nom commence par fichier, ainsi que tout le répertoire images/ vers le répertoire
trash/. Tous les changements effectués sont mentionnés.
2. Pour un utilisateur, il est suffisant de pouvoir écrire dans un répertoire pour en effacer des fichiers, même s’il n’en est
pas le propriétaire.
20
Chapitre 3. Introduction à la ligne de commande
3.1.4. cp : copier des fichiers et des r´epertoires
cp remplace les commandes copy et xcopy de DOS et contient d’autres options. Sa syntaxe est la suivante :
Il existe une myriade d’options. Voici les plus utilisées :
• -R : copie récursivement ; obligatoire pour copier un répertoire, même vide.
• -i : demande une confirmation avant d’écraser des fichiers.
• -f : le contraire de -i. Remplace tous les fichiers existants sans demander de confirmation.
• -v : mode verbeux qui mentionne toutes les actions effectuées par cp.
Quelques exemples :
• cp -i /tmp/images/* images/ : copie tous les fichiers du répertoire /tmp/images dans le répertoire
images/ du répertoire courant, en demandant une confirmation avant d’écraser un fichier.
• cp -vR docs/ /shared/mp3s/* mestrucs/ : copie tout le répertoire docs du répertoire courant, en plus de
tous les fichiers du répertoire /shared/mp3s dans le répertoire mestrucs, lequel est situé dans le répertoire
courant.
• cp toto titi : copie le fichier toto sous le nom de titi dans le répertoire courant.
3.2. Manipulation des attributs de fichiers
La série de commandes présentée ici est utilisée pour changer le propriétaire ou groupe propriétaire d’un
fichier ou ses droits d’accès. Les différents droits d’accès sont présentés dans le chapitre « Concepts de base
des systèmes UNIX ».
3.2.1. chown, chgrp : changer l’utilisateur et le groupe propri´etaire d’un ou plusieurs
fichiers
• -R : récursif. Change le propriétaire de tous les fichiers et sous-répertoires d’un répertoire donné ;
• -v : mode verbeux. Décrit toutes les actions effectuées par chown ; indique quels fichiers ont changé de
propriétaire à la suite de la commande ainsi que ceux qui demeurent inchangés ;
• -c : comme -v, mais ne mentionne que les fichiers pour lesquels il y a eu un changement.
Quelques exemples :
• chown nobody /shared/book.tex : change le propriétaire du fichier /shared/book.tex au profit de no-
body ;
• chown -Rc reine.musique *.mid concerts/ : donne la propriété de tous les fichiers dans le répertoire
courant se terminant par .mid et de tous les fichiers et sous-répertoires du répertoire concerts/ à reine et
au groupe musique. Cette commande ne mentionne que les fichiers affectés par la commande.
La commande chgrp (CHange GRouP) ne vous laisse changer que le groupe propriétaire d’un fichier ou d’un
groupe de fichiers. Sa syntaxe est très semblable à celle de la commande chown :
mais ce sont les différentes formes que peut prendre le changement de mode qui la rendront plus spécifique.
Ceci peut se produire de deux façons :
1. en octal. Les droits d’accès de l’utilisateur propriétaire correspondent alors à des chiffres de la forme
<x>00, où <x> correspond au droit assigné : 4 pour lecture, 2 pour écriture, 1 pour exécution. De même,
les droits d’accès du groupe propriétaire sont de la forme <x>0 et ceux des « autres » sont de la forme x.
Pour obtenir le chiffre correct, il suffira d’additionner les droits d’accès assignés. Ainsi, les permissions
rwxr-xr-- correspondent à 400+200+100 (droits d’accès de l’utilisateur propriétaire, rwx) +40+10 (droits
d’accès du groupe, r-x) +4 (droits d’accès des autres, r--) = 754. Les droits d’accès sont ainsi exprimés de
manière absolue : les droits d’accès précédents sont remplacés de façon inconditionnelle ;
2. à l’aide de certaines expressions. Les droits d’accès sont ici indiqués par une suite d’expressions séparées
par des virgules, une expression étant de la forme [cat´egorie]<+|-|=><droits d’acc`es>.
La catégorie peut être une combinaison de :
• u (User, soit utilisateur, permission pour propriétaire) ;
• g (Group, soit groupe, permission pour le groupe propriétaire) ou ;
• o (Others, permission pour les « autres »).
Si aucune catégorie n’est spécifiée, le changement s’applique à toutes les catégories. Un + appose un droit
d’accès, un - le retire et un = établit la permission. Pour finir, les droits d’accès sont définis par une ou plusieurs
des lettres suivantes :
• r (Read, soit lecture) ;
• w (Write, soit écriture) ou ;
• x (eXecute, soit exécution.
Les options principales sont très similaires à celles de chown ou chgrp :
• -R : change les droits d’accès récursivement ;
• -v : mode verbeux. Il décrit les actions effectuées pour chaque fichier ;
• -c : comme -v, mais ne mentionne que les fichiers dont les droits d’accès ont changé.
Exemples :
• chmod -R o-w /shared/docs : enlève de façon récursive le droit d’écriture aux « autres » sur tous les fichiers
et sous-répertoires du répertoire /shared/docs/ ;
• chmod -R og-w,o-x prive/ : enlève de façon récursive le droit d’écriture pour le groupe et les autres sur
tout le répertoire prive/, et retire le droit d’exécution pour les autres ;
• chmod -c 644 divers/fichier* : change les droits d’accès de tous les fichiers du répertoire divers/ dont
les noms commencent par fichiers en rw-r--r-- (droit de lecture pour tout le monde et droit d’écriture
pour le propriétaire du fichier seulement). Cette commande ne mentionne que les fichiers affectés par
l’opération.
22
Chapitre 3. Introduction à la ligne de commande
3.3. Motifs d’englobement du shell
Il est probable que vous utilisiez déjà sans le savoir des caractères d’englobement. Quand vous enregistrez un
fichier dans une application sous Windows ou lorsque vous recherchez un fichier, vous utilisez * pour désigner
une suite de caractères quelconques. Par exemple, *.txt désigne l’ensemble des fichiers dont le nom se termine par .txt. Nous l’avons également utilisé fréquemment dans la section précédente, mais l’englobement
va beaucoup plus loin que le seul *.
Quand vous tapez une commande comme ls *.txt, puis Entr´ee, la tâche de trouver quels fichiers corres-
pondent au motif *.txt n’est pas du ressort de ls, mais doit passer par le shell lui-même. Cela requiert donc
une petite explication sur la façon dont le shell interprète une ligne de commande. Lorsque vous tapez :
$ ls *.txt
readme.txt recipes.txt
La ligne de commande est tout d’abord séparée en mots (ls et *.txt en l’occurrence). Quand le shell voit
le * dans un des mots, il interprète le mot comme étant un motif englobant et le remplace dans la ligne de
commande par les noms de tous les fichiers correspondant au motif. Avant que ne s’exécute la ligne de commande dans le shell, ce dernier aura remplacé l’astérisque (*) par readme.txt et recettes.txt ; la commande
deviendra donc ls readme.txt recettes.txt, ce qui donnera le résultat recherché. Le shell réagit aussi à la
vue d’autres caractères :
• ? : correspond à un caractère unique, quel qu’il soit ;
• [...] : correspond à tout caractère écrit entre les crochets ; les caractères peuvent désigner soit des interva-
lles (par exemple, 1-9), soit des valeurs discrètes, soit encore un mélange des deux. Exemple : [a-zBE5-7]
correspond à tous les caractères de a à z, un B, un E, un 5, un 6 ou un 7 ;
• [^...] : correspond à tous les caractères qui ne se trouvent pas entre les crochets ; [^a-z], par exemple,
correspond à tout caractère qui n’est pas une lettre minuscule4.
• {c1,c2} : correspond à c1 ou c2, où c1 et c2 sont également des caractères d’englobement, ce qui signifie
que vous pouvez écrire {[0-9]*,[acr]} par exemple.
Voici quelques exemples de motifs et leur signification :
• /etc/*conf : tous les fichiers du répertoire /etc dont le nom se termine par conf. Cela peut correspondre
au fichier /etc/inetd.conf, mais aussi à /etc/conf.linuxconf, et à /etc/conf si un tel fichier existe.
Souvenez-vous que * peut correspondre à une chaîne vide.
• image/{cars,space[0-9]}/*.jpg : tous les fichiers dont le nom se termine par .jpg dans les répertoires
• /usr/share/doc/*/README : tous les fichiers de nom README dans tous les sous-répertoires immédiats de
/usr/share/doc. Cela correspondra à /usr/share/doc/mandrake/README par exemple, mais pas à /usr/
share/doc/myprog/doc/README.
• *[^a-z] : tous les fichiers du répertoire courant dont le nom ne finit pas par une lettre minuscule.
3.4. Redirections et tubes
3.4.1. Encore un mot au sujet des processus
Pour comprendre le principe des redirections et des tubes, ils nous faudra introduire ici une nouvelle notion
qui concerne les processus. Chaque processus sous UNIX (y compris les applications graphiques) utilise un
minimum de trois descripteurs de fichiers : l’entrée standard, la sortie standard et le canal d’erreur standard.
Leurs numéros respectifs sont 0, 1 et 2. En général, ces trois descripteurs sont associés au Terminal depuis
lequel le processus a été lancé, l’entrée standard étant lue depuis le clavier. Le but des redirections et des tubes
est de rediriger ces descripteurs. Les exemples de cette section vous aideront à mieux comprendre.
4.Attention ! Bien que cela soit vrai pour la plupart des langues, il est possible que cela ne fonctionne pas pour votre
langue locale. Cela dépend de l’ordre de tri (collating order). Pour certaines configurations de langage, [a-z] correspondra
à a, A, b, B (...), Z. Et cela, sans parler du fait que certaines langues contiennent des caractères accentués...
23
Chapitre 3. Introduction à la ligne de commande
3.4.2. Redirections
Supposons, par exemple, que vous vouliez connaître la liste des fichiers se terminant par .png5dans le répertoire images, et que cette liste soit très longue : il serait donc pertinent de la stocker dans un fichier pour la
consulter à loisir ensuite. Vous pouvez alors taper ceci :
$ ls images/*.png 1>liste_fichiers
Ce qui signifie que la sortie standard de cette commande (1) est redirigée (>) vers le fichier qui a pour nom
liste_fichiers. Le signe > est l’opérateur de redirection de sortie. Dans le cas où le fichier de redirection
n’existerait pas, il serait alors créé. Par contre, s’il existait précédemment, son ancien contenu serait écrasé. Cependant, par défaut, le descripteur redirigé par cet opérateur est la sortie standard, il n’est donc pas nécessaire
de le spécifier sur la ligne de commande. Vous pouvez donc écrire plus simplement :
$ ls images/*.png >liste_fichiers
et le résultat serait exactement le même. Vous pouvez ensuite consulter le fichier à l’aide d’un visualiseur de
fichiers textes tel que less.
Supposons maintenant que vous vouliez connaître le nombre exact de ces fichiers. Au lieu de compter manuellement, vous pouvez utiliser le bien nommé wc (Word Count, soit comptage des mots) avec l’option -l, qui
écrit sur la sortie standard le nombre de lignes du fichier. Pour obtenir le résultat désiré, une solution possible
serait la suivante :
wc -l 0<liste_fichiers
Le signe < est l’opérateur de redirection d’entrée. Le descripteur redirigé par défaut est également celui de
l’entrée standard, donc 0. La ligne s’écrit alors simplement :
wc -l <liste_fichiers
Supposons maintenant que vous vouliez retirer de cette liste toutes les extensions des fichiers puis sauvegarder
le résultat dans un autre fichier. L’outil dont vous avez besoin est sed, pour Stream EDitor (soit éditeur de flux).
Il suffit de rediriger l’entrée standard de sed vers le fichier liste_fichiers et de rediriger sa sortie vers le
fichier résultat, par exemple la_liste :
sed -e ’s/\.png$//g’ <liste_fichiers >la_liste
Il vous sera également possible de consulter à loisir cette nouvelle liste avec un visualiseur.
Il pourrait aussi s’avérer utile de rediriger l’erreur standard. Par exemple, vous voulez savoir quels répertoires
dans /shared ne vous sont pas accessibles : une solution est de lister récursivement ce répertoire et de rediriger
les erreurs vers un fichier, tout en n’affichant pas le canal de sortie standard :
ls -R /shared >/dev/null 2>erreurs
Ceci signifie que la sortie standard sera redirigée (>) vers /dev/null, un fichier spécial dans lequel tout ce
qu’on écrit est perdu (et aura comme effet secondaire que la sortie standard ne sera pas affichée) et que le
canal d’erreur standard (2) sera redirigé (>) vers le fichier erreurs.
3.4.3. Tubes
Les tubes (pipes en anglais) sont en quelque sorte une combinaison des redirections d’entrée et de sortie. Leur
principe mime en effet celui d’un tube : un processus envoie des données dans le tube par un bout et un autre
processus lit les données par l’autre bout. L’opérateur tube est |. Reprenons l’exemple de la liste des fichiers
.png ci-dessus. Supposons que vous vouliez seulement connaître le nombre de fichiers en question sans avoir
à stocker la liste dans un fichier temporaire : utilisez alors la commande suivante :
ls images/*.png | wc -l
5. Il peut vous paraître saugrenu de dire « les fichiers se terminant par .png » plutôt que « les images PNG ». Mais,
encore une fois, les fichiers sous UNIX n’ont d’extension que par convention : une extension ne détermine en aucun cas le
type d’un fichier. Un fichier dont le nom se termine par .png peut indifféremment être une image JPEG, un exécutable, un
fichier texte ou tout autre chose. Il en est de même sous Windows !
24
Loading...
+ 106 hidden pages
You need points to download manuals.
1 point = 1 manual.
You can buy points or you can get point for every manual you upload.