0% ont trouvé ce document utile (0 vote)
30 vues67 pages

Support Admin Syst Et Reseau Linux

Le document présente l'historique de Linux et d'Unix, en soulignant leur évolution depuis 1969 jusqu'à la création de Linux par Linus Torvalds en 1991. Il aborde également les organismes de normalisation et les groupes d'utilisateurs qui ont contribué à la standardisation et à la promotion de ces systèmes d'exploitation. Enfin, il décrit les différentes distributions Linux et les conseils pour leur installation.

Transféré par

suzannebonje2
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
30 vues67 pages

Support Admin Syst Et Reseau Linux

Le document présente l'historique de Linux et d'Unix, en soulignant leur évolution depuis 1969 jusqu'à la création de Linux par Linus Torvalds en 1991. Il aborde également les organismes de normalisation et les groupes d'utilisateurs qui ont contribué à la standardisation et à la promotion de ces systèmes d'exploitation. Enfin, il décrit les différentes distributions Linux et les conseils pour leur installation.

Transféré par

suzannebonje2
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

SUPPORT GL ET RS 2 INSAM

COURS MAGISTRAL
1

CHAPITRE 1 : PRESENTATION DE LINUX

OBJECTIFS :
➢ Connaître l’historique de Linux;
➢ Connaître les distributions Linux;
➢ Avoir une vue Générale d’Unix.

1. HISTORIQUE
1.1. Au début : unix

Unix est né, en 1969, dans les Bell Laboratories (AT&T) sous l’impulsion de deux hommes, Ken
Thompson et Dennis Ritchie. Il était destiné à fournir aux programmeurs maison un
environnement de développement auquel ils avaient goûté avec Multics (MULTiplexed
Information and Computing Service). Suite au développement par Dennis Ritchie du langage
C, adapté à ce type de programmation, une nouvelle version d’Unix est réécrite, en grande
partie en C, en 1973. Pour la première fois, un système d’exploitation est écrit en langage non
assembleur, et devient donc portable, du moins en principe. En 1974, la version 4 d’Unix est «
donnée » à l’université de Berkeley, Californie, qui commence alors son propre développement
du système. C’est le début d’une divergence entre les deux versions d’Unix : AT&T et BSD
(Berkeley Software Distribution). Le succès d’Unix devient alors considérable dans les
universités américaines : seul système d’exploitation disponible en source, sur mini–ordinateur
(PDP11), il est adopté par les départements de « computer science » des universités pour la
formation des étudiants en informatique système. Le nombre d’experts Unix croît à une vitesse
considérable. De 1977 à 1979, Ken Thompson et Dennis Ritchie réécrivent Unix pour le rendre
réellement portable. Et en 1980 les premières licences de distribution d’Unix System V d’AT&T
sont délivrées aux constructeurs.

L’année 1984 voit la création du groupe X/Open, composé de constructeurs informatiques


ayant adopté Unix et se donnant pour but de normaliser les différentes versions d’Unix.

Cette même année est créée par le MIT la norme X Window : système de multifenêtrage
graphique, indépendant d’Unix, mais qui contribuera au succès de ce système. En 1987, AT&T,
propriétaire d’Unix, et Sun, un des leaders du marché des stations de travail et utilisant la
version BSD, concluent une alliance visant à une convergence entre les deux systèmes.

En 1988 sont créés deux consortiums :

➢ OSF (Open Software Fondation), (DEC, HP, IBM, …) travaillant à la normalisation d’un
nouvel Unix baptisé OSF1 ;

➢ Unix International (AT&T, Sun, …) cherchant à imposer Unix System V.

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


2

En 1992, Digital Equipment propose DEC/OSF1, première version commerciale- ment


disponible d’OSF1, et Sun propose la première version commerciale résultant de la
convergence entre System V et BSD. Il y a encore plusieurs Unix, mais les différences ne
représentent plus une difficulté pour l’utilisateur.

Le succès d’Unix tient à plusieurs facteurs :

➢ Le plus important, à l’origine, est son adoption par les universités américaines pour la
formation des étudiants, ce qui a sans aucun doute permis de former plus d’experts sur
ce système que sur aucun autre ;
➢ Un autre facteur déterminant est le besoin de standard exprimé par les utilisateurs,
qu’ils soient sociétés de développement de logiciel ou utilisateurs finaux. Dans un
monde où le changement de fournisseur avait toujours été catastrophique pour
l’utilisateur, les systèmes ouverts offrent des perspectives d’évolution en douceur tout
en maintenant une concurrence entre fournisseurs. Cette pression des utilisateurs est
un fait nouveau dans l’histoire de l’informatique. La participation de groupes
d’utilisateurs et d’éditeurs de logiciels aux consortiums dirigeant l’évolution d’Unix n’a
de réel équivalent pour aucun autre système d’exploitation ;
➢ Unix est le seul système d’exploitation multi–utilisateur disponible à faible coût pour
une société développant un système à base de processeur standard.

1.2. Linux

Unix est l’un des systèmes d’exploitation le plus populaire au monde, en raison du grand
nombre d’architectures qu’il supporte. Il existe des versions d’Unix pour tous les types
d’ordinateurs, y compris les ordinateurs personnels.
SCO Unix est le système le plus ancien sur cette plate–forme. Le premier package Unix, de nom
SCO Xenix System pour Intel 8086 et 8088, date de 1983. La société SCO est maintenant
propriétaire de la marque Unix, qu’elle a achetée à la société
Novell, qui l’avait elle–même achetée à une filiale d’ATT (Unix System Labs)
SCO Unix existe toujours. Unix est maintenant une marque déposée de l’Open-
Group.
L’idée d’un système d’exploitation libre est née en 1984 avec la Free Software Foundation (FSF).
Les bases de l’environnement ont été définies. Puis des outils, tels des éditeurs, des
compilateurs, des shells ... ont été développés.
Linux, système Unix libre sur plate–forme PC, était au départ un projet de loisirs de Linus
Torvalds, étudiant finlandais. Linux fut inspiré de Minix, un petit système Unix développé par
Andrew Tanenbaum. Les premières discussions autour de Linux se passèrent sur le forum
comp.os.minix. Ses débuts furent la maîtrise de la commutation de tâches du mode protégé

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


3

du processeur 80386, tout fut écrit en assembleur. Le 5 octobre 1991, Linus Torvalds annonça
la première version « officielle » de Linux, la version 0.02. Après la version 0.03, Linus passa
directement en version 0.10.
Linux a continué à évoluer grâce à Linus Torvalds et aussi aux efforts de nombreux volontaires
répartis aux 4 coins du monde, reliés entre eux par le réseau Internet (chapitre 13). Sous la
pression de ces Co–développeurs, Linus Torvalds a accepté que tout le code soit sous licence
GPL (General Public Licence), créant ainsi un noyau Unix totalement libre. Grâce à ce réseau,
toute personne intéressée par le développement de ce système peut aider : porter des
programmes, écrire de la documentation, corriger des bogues… On compte actuellement plus
de 18 millions d’utilisateurs de Linux, et nombreux sont ceux qui contribuent d’une façon ou
d’une autre au développement de ce système et de son environnement.

À ce jour, Linux est un vrai système 32 bits, multitâches, multi-utilisateurs, réseau et complet.
Il s’installe sur la plupart des PC (avec ou sans autre système d’exploitation). Il supporte une
large gamme de programmes tels que X Window, TCP/IP, C/C ++GNU et d’autres outils GNU, le
courrier électronique, les news, des outils dérivés de LateX (LyX), ou des outils de bureautique.
Une machine sous Linux est modulaire et paramétrable à souhait. Elle peut donc servir de
station personnelle ou de serveur (Web, ftp…).
Linux est une libre implémentation des spécifications POSIX, avec des extensions System V et
Berkeley. Ceci accélère la propagation de Linux au sein de l’administration, qui exige la
conformité POSIX de la plupart des systèmes qu’elle utilise. Linux est un phénomène très
important et peut devenir une alternative au système Microsoft Windows, grâce notamment
aux outils bureautiques…
Linux est le plus souvent diffusé sous forme d’une distribution, un ensemble de programmes
(noyau, sources des utilitaires, commandes, applications) formant après installation un
système complet. Par conséquent, il est de plus en plus utilisé dans les sociétés commerciales
comme station de travail et serveur.

Le succès de Linux tient à plusieurs facteurs :


➢ Le code source du système, ainsi que le noyau, les programmes utilisateurs, les outils
de développement sont librement distribuables (licence GPL, ou GNU),
➢ Linux est compatible avec un certain nombre de standards Unix au niveau du code
source, incluant les spécifications POSIX, system V et BSD,
➢ Un très grand nombre d’applications Unix gratuites disponibles sur Internet se
compilent sous Linux sans aucune modification,
➢ Le système Linux a été développé pour les processeurs Intel et utilise toutes les
fonctionnalités de ce processeur.

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


4

2. LES ORGANISMES DE NORMALISATION ET LES GROUPES


D’UTILISATEURS

L’évolution d’Unix, essentiellement technologique, n’allait pas vers une convergence réelle des
différentes branches (OSF, Berkeley, AT&T, IBM, Microsoft). Cela a amené les utilisateurs à se
regrouper afin d’exprimer leur indépendance vis–à–vis des constructeurs et surtout d’essayer
de définir une norme internationale pour ce système d’exploitation (la première association
d’utilisateurs fut /usr/group). Deux organismes de normalisation ont ainsi émergé :

➢ Le groupe X/Open (1984), association au départ européenne à laquelle se sont joints


les plus grands noms américains, s’est donné pour but d’améliorer l’environnement du
système, de fournir un guide de portabilité (XPGIII) pour les concepteurs d’applications,
de produire des utilitaires nouveaux.
➢ Le groupe POSIX (Portable Open System Interface eXchange) qui fait partie de
l’association IEEE (Institute of Electrical and Electronic Engineers), est divisé en sous–
groupes de normalisation. Chacun de ces groupes a rédigé des guides, langages et
extensions pour Unix.

Ces deux groupes étaient devenus de véritables organismes de standardisation. Mais les
travaux du groupe POSIX sont devenus plus déterminants que ceux de l’association X/Open.

D’autres groupes d’utilisateurs existent. Ils essaient d’être de véritables forums d’échanges et
de recherche sur Unix, mais contrairement aux précédents ils ne travaillent pas sur des
normes.

Il existe en France l’AFUU (Association Française des Utilisateurs d’Unix et des systèmes
ouverts). Cette association a été créée en 1982 par un petit groupe d’utilisateurs pionniers
dans le domaine des systèmes Unix. Ses objectifs sont de promouvoir, de développer et de
diffuser la « culture Unix » auprès des utilisateurs et ceci par le biais des adhérents
(organisation de manifestations dont la plus importante est la « convention Unix », de
séminaires, de conférences professionnelles, publication de revues, de périodiques, comme «
Tribunix », et d’ouvrages fondamentaux). L’association est représentée par des chercheurs, des
informaticiens, des ingénieurs, … et par ses groupes de travail (groupe Sécurité, groupe
Portabilité, groupe Réseaux, …).

Au même titre, l’AFUL (Association Francophone des Utilisateurs de Linux et est une
association de loi 1901 dont l’objectif principal est de promouvoir, directement ou
indirectement les logiciels libres, et en particulier les systèmes d’exploitation libres
principalement ceux basés sur les normes POSIX ou dérivés, dont le plus connu est le système
Linux muni de l’environnement GNU (statut de l’association).

L’AFUL fonctionne par l’intermédiaire de groupes de travail : personnes souhaitant discuter


d’un sujet particulier lié aux logiciels libres, avec comme objectif de produire des documents
de synthèse diffusés publiquement.
SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG
5

L’AFUL est aussi représentée par « les groupes d’utilisateurs locaux de Linux/ Logiciels Libres »,
association d’utilisateurs localisés géographiquement. Ces associations travaillent
essentiellement par discussion sur des listes de diffusion et offrent des serveurs Web fournis.
En Alsace, le « Linux Users Group » est le représentant régional très actif. Son serveur Web se
trouve à l’adresse http://tux.u–strasbg.fr.

Les logiciels de la Free Software Foundation [FSF] de Richard Stallman (utilitaires de


développement [compilateurs C et Ansi C, C++, make, awk, emacs, groff, …) sont distribués en
code source. Vous pouvez les dupliquer, les distribuer et les modifier comme bon vous semble.
Cette philosophie procure à ces logiciels, par opposition aux logiciels commerciaux, un taux
d’utilisation et de distribution extrêmement élevée. De très nombreuses personnes dans le
monde entier travaillent sur ces logiciels, les améliorent, corrigent les erreurs rencontrées.
C’est en fait un regroupement d’utilisateurs sans existence légale.

Linux est l’un de ces logiciels. Il est protégé par ce qui est connu sous le nom de la General
Public Licence (GPL). La GPL fut développée pour le projet GNU par la FSF ; on parle ainsi de
GNU–Linux comme de GNU–C, GNU–Emacs, ... Un programme protégé par la GPL appartient
à son ou ses auteurs, mais il peut être distribué librement et gratuitement. La GPL autorise
aussi les utilisateurs à modifier les programmes et à en distribuer leur version, tout en gardant
cette licence GPL. La distribution de ces programmes peut aussi être payante, à la condition
que les sources y soient inclues. Cela peut paraître contradictoire, mais dans ce monde du
logiciel libre l’objectif est de développer et diffuser des programmes en permettant à
quiconque de les obtenir et de les utiliser.

3. LES DISTRIBUTIONS LINUX

GNU–Linux est un système Unix complet, avec un noyau maintenu par Linus Torvalds et
diverses applications liées au système. De nombreux outils, tels des compilateurs, des éditeurs,
des interfaces graphiques, existent.

Il serait très difficile pour beaucoup d’utilisateurs de construire un système complet en partant
du noyau, des sources des utilitaires, commandes, applications.

Linux est le plus souvent diffusé sous forme d’une distribution, un ensemble de programmes
(noyau, sources des utilitaires, commandes, applications) formant après installation un
système complet. Chacune des distributions a ses avantages et ses inconvénients. Débuter
avec Linux, c’est surtout choisir une distribution qui corresponde avec les usages qu’on attend
du système.

RedHat est la première société créée ayant pour objectif de rassembler tout ce qui est
nécessaire dans une distribution. Elle a été fondée en 1994 en Caroline du Nord. Ses objectifs

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


6

furent le développement de solutions logicielles, du support téléphonique, du consulting sur


site, des formations.

Pour les développeurs, RedHat met sa distribution à disposition sur Internet. Cette société la
vend aussi avec une documentation, c’est la version dite « Server Enterprise ».

Parmi les distributions les plus utilisées, on trouve RedHat, Debian, Slackware (toutes trois
gratuites) et SuSE, Mandrake (toutes deux payantes).

Installation

L’installation de Linux sur une machine est une opération assez simple car interactive dans
chaque distribution. Toutefois, le meilleur conseil que nous pourrions donner est de choisir
une distribution accompagnée d’une documentation papier d’installation complète. Il est
également possible (et recommandé pour un débutant) d’acheter une nouvelle machine avec
Linux déjà installé. Si vous voulez installer. Linux sur une machine existante, avant de
commencer, vous devriez savoir répondre aux quelques questions suivantes :

➢ Quel est le débit de ma connexion à l’Internet ? Si l’accès à l’Internet se fait par un


modem, même à 56K, une distribution gratuite téléchargée coûtera beaucoup plus
cher qu’un jeu de CD avec la documentation !
➢ Mes sauvegardes me permettront-elles de remettre mon système dans son état actuel
en cas de problème ? Si la réponse est oui, je peux passer à la suite.
➢ Mon système dispose-t-il d’un espace disque disponible d’au moins 1 Go ? Si ce n’est
pas le cas, il est inutile d’aller plus loin. Si cet espace disque disponible se trouve dans
des partitions déjà formatées et utilisées par ailleurs, il faudra libérer cet espace en
réduisant la taille des partitions (et ceci nous ramène à la question précédente sur les
sauvegardes). Linux aura besoin de ses propres partitions. Le paragraphe 10.2.3 donne
quelques conseils sur les partitions disque pour Linux, indépendamment de tout autre
système d’exploitation.
➢ Ce système Linux sera-t-il autonome ou intégré à un réseau local ? Dans le premier cas,
préférer une installation de type « station de travail » alors que dans le deuxième, une
installation de type « serveur » sera peut-être plus adaptée. Dans ce dernier cas, vous
devrez toutefois acquérir des connaissances d’administration Unix et réseau.

L’installation des différentes distributions de Linux est de plus en plus facile et conviviale, et
propose des configurations par défaut relativement propres. Comme règles de base à
l’installation d’un système linux, nous vous conseillons :

➢ De choisir une installation de type workstation ;


➢ Si votre poste est à votre domicile et que vous utilisez une connexion ADSL, mettre en
place une protection dite « firewall moyen ».

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


7

Une fois l’installation terminée, il est important de créer un deuxième utilisateur. Ce


compte sera en fait votre compte de travail. Vous ne vous connecterez en tant
qu’administrateur système (root) que pour lancer des commandes purement système.

4. NOTION DE SYSTEME D’EXPLOITATION

Unix est un système d’exploitation, constitué du noyau Unix, d’un interpréteur de commandes
et d’un grand nombre d’utilitaires.

Le noyau assure la gestion des ressources physiques (processeur, mémoires, périphériques) et


logicielles (processus, fichiers…). L’interface entre les programmes des utilisateurs et le noyau
est définie par un ensemble de procédures et de fonctions, soit directement au niveau du
noyau, soit par l’intermédiaire de bibliothèques. Pour ce qui concerne l’architecture du noyau
proprement dit, les éléments caractéristiques sont les suivants :

➢ Le noyau est constitué d’un ensemble de procédures et de fonctions écrites pour


l’essentiel en langage C ;
➢ La structure du noyau est monolithique et la notion de couche, contrairement à
d’autres systèmes, n’existe pas.

Comme c’est le cas avec tout système d’exploitation, l’utilisateur d’Unix n’accède pas
directement au noyau mais à un interpréteur de commandes : le Shell (le choix de ce terme
indique qu’Unix est « caché » à l’intérieur de cette coquille qui en est la seule partie visible par
l’utilisateur).

Une différence importante entre Unix et les autres systèmes d’exploitation est qu’il existe
plusieurs shells différents : richesse incomparable, mais source de confusion.

L’interface utilisateur d’Unix est donc constituée :

➢ D’un ensemble de programmes exécutables : les commandes.


➢ Du shell lui–même, interpréteur de commandes mais aussi, plus que dans n’importe
quel autre système d’exploitation, langage de commandes permet- tant d’écrire des
programmes d’une grande complexité.

Parmi les utilitaires, on trouve :

➢ Différents langages de programmation : C++, Fortran, Java, Perl, TCL/TK, GTK ;


➢ Des utilitaires de développement et maintenance de logiciels : make, assembleur,
éditeurs de lien ;
➢ Des outils de bureautique : messagerie, traitement de textes ;
SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG
8

➢ Des outils de mise au point de programmes ;


➢ Des éditeurs de textes (sed, vi et vim, emacs, gnotepad) ;
➢ Des formateurs de textes ;
➢ Un système de messagerie complet (courrier, conversation en temps réel…) ;
➢ Un analyseur syntaxique yacc, un générateur d’analyseur lexical lex ;
➢ Un environnement graphique distribué : X11 ;
➢ Les outils pour le Web (Apache, Netscape...)

5. VUE GENERALE D’UNIX

Unix est un système multi–utilisateur « temps partagé », c’est–à–dire qu’il est possible de
connecter sous Unix plusieurs utilisateurs simultanément. Chacun a à sa disposition l’ensemble
des ressources du système, le partage étant effectué par découpage du temps et récupération
des temps morts d’entrée–sortie. Comme tout système multi–utilisateur, Unix comporte des
mécanismes d’identification et de protection permettant d’éviter toute interférence
(accidentelle ou malveillante) entre utilisateurs.

Unix est un système multitâche, c’est–à–dire qu’un utilisateur peut lancer plusieurs tâches
simultanément. Un processus (ou tâche) correspond à l’exécution d’un programme à un
instant donné, le programme étant en lui–même quelque chose d’inerte rangé sur disque sous
la forme d’un fichier ordinaire exécutable.

Le système de fichiers est un système hiérarchisé arborescent. Il se retrouve sur beaucoup


d’autres systèmes d’exploitation (GCOS, DOS, VMS…). Les entrées–sorties sont généralisées.
Les périphériques sont considérés, du point de vue de l’utilisateur, comme des fichiers.

Le système est écrit à 99 % en C, ce qui facilite l’appel au noyau par des applications écrites
en langage C. Ce système a été écrit de façon à être réellement portable.

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


9

CHAPITRE 2 : CONNEXION D’UN UTILISATEUR

OBJECTIFS :

➢ Connaitre les différentes étapes de connexion d’un utilisateur ;


➢ Connaitre les attributs des différents utilisateurs ;
➢ Comprendre la notion de mot de passe sur Linux ;
➢ Introduire les notions de fichiers et Shell sur linux.

1. L’UTILISATEUR

Pour permettre à de nombreux utilisateurs de travailler sur la même machine, Linux met en
œuvre des mécanismes d’identification des utilisateurs, de protection et de confidentialité de
l’information, tout en permettant le partage contrôlé nécessaire au travail en groupe. Tout
utilisateur est identité par un nom (login name) et ne peut utiliser le système que si son nom
a préalablement été défini par l’administrateur du système (ou super–utilisateur), dont le nom
est généralement root. Ce dernier a tous les droits et aucune restriction d’accès ne lui est
applicable.

1.1. CONNEXION

➢ Lors du démarrage d’une machine, plusieurs étapes se succèdent :


➢ Mise sous tension de la machine et de ses périphériques ;
➢ Bootstrap du système (charger le noyau Linux) ;
➢ Montage des disques ;
➢ Vérification des systèmes de fichiers (fsck) ;
➢ Passage en multi–utilisateur ;
➢ Lancement des services.
On obtient alors, affichée à l’écran, l’invite “ login : ”
Le système Linux étant un système multi–utilisateur et multitâche, plusieurs personnes sont
connectées simultanément et peuvent travailler sans interférer les unes avec les autres. Cela
nécessite un système de protection des fichiers propre à chaque.
Ainsi pour qu’un utilisateur puisse travailler avec le système Linux, il doit établir une connexion
(on dit aussi ouvrir une session).

Lorsque vous avez installé Linux, vous avez eu l’opportunité d’indiquer si vous vouliez utiliser
un écran graphique (connexion en mode graphique) plutôt qu’une console (connexion en
mode texte) pour ouvrir une session.
SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG
10

Connexion en mode texte

Pour qu’un utilisateur puisse travailler sur le système, il doit s’identifier en indiquant tout
d’abord son nom suivi de la touche <return> (sur le clavier 102 touches, la touche ) après
l’invite login :, puis son mot de passe suivi de la touche <return> à la suite de l’invite passwd
:.

Lorsque l’utilisateur saisit son mot de passe, les caractères saisis ne sont pas affichés à l’écran
(on dit qu’il n’y a pas d’écho des caractères sur le terminal). Ce mécanisme permet de garder
la confidentialité du mot de passe.

Apparaît alors à l’écran un certain nombre d’informations (informations générales, date,


arrivée de messages, date de dernière connexion). Puis le système lance un programme qui
généralement est un interpréteur de commandes (shell). L’inter- préteur indique par une
chaîne de caractères, appelée invite (ou prompt), qu’il est prêt à recevoir une commande.

A partir de ce moment, l’utilisateur est connecté (il est entré en session).

Exemple :

Dans cet exemple, l’utilisateur a pour nom xstra et xstra> correspond à l’invite (ou prompt)
que nous utiliserons dans la suite de ce cours.

Connexion en mode graphique

La procédure d’identification est la même en mode graphique et en mode texte. Une invite en
mode graphique login, parfois nommé username, demande votre nom que vous saisissez avec
le clavier et validez avec la touche < return >. Puis apparaît une fenêtre demandant votre mot
de passe que vous devez saisir toujours suivi par la touche < return >, touche de validation de
votre saisie. Comme en mode texte, ne soyez pas surpris, le mot de passe n’apparaît pas lors
de sa saisie permettant ainsi la confidentialité. Cette étape est souvent source de difficulté car
vous croyez saisir votre mot de passe et en fait les caractères que vous tapez ne correspondent
pas à votre souhait. Le système, en cas d’erreur de saisie du mot de passe, refusera votre
connexion.

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


11

Après avoir réussi votre connexion, c’est-à-dire votre combinaison valide « nom d’utilisateur
et mot de passe », l’interface graphique X Window est démarrée. Vous découvrez alors un
bureau semblable à la figure ci-après.

1.2. MOT DE PASSE

Lors d’une première connexion, il est fortement conseillé à l’utilisateur de s’attribuer un mot
de passe. Ce mot de passe sera chiffré (le chiffrage est purement logiciel et non inversible). Il
sera impossible de le retrouver à partir du mot chiffré, même pour le super utilisateur
(l’administrateur de la machine). Si l’utilisateur oublie son mot de passe, l’administrateur ne
peut que le détruire pour lui permettre d’en définir un nouveau.

Un utilisateur peut à tout moment changer son mot de passe, ou s’en attribuer un par la
commande passwd. Lors du changement, il faut fournir l’ancien mot de passe.

EXEMPLE :

Par la suite, lors des diverses connexions de l’utilisateur, la lecture du mot de passe se fera sans
écho. Souvent seuls les huit premiers caractères du mot de passe sont pris en compte.
L’administrateur peut imposer des contraintes sur le mot de passe (six caractères minimums,
un caractère non alphabétique, …).

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


12

L’administrateur de la machine pourra de plus installer des programmes qui testeront vos mots
de passe afin d’interdire par exemple les mots du dictionnaire, les prénoms, les mots
identiques à votre login, etc.

Lorsque le nom et le mot de passe sont corrects, login récupère dans le fichier
/etc/passwdtoutes les informations utiles pour cet utilisateur.

Remarque :

Si vous avez réalisé vous-même l’installation, une fois cette dernière terminée, connectez-vous
au système en tant qu’administrateur (répondre root au login :). Il faut immédiatement définir
un mot de passe pour cet utilisateur root aussi appelé super-utilisateur. Ce mot de passe doit
contenir plus de six caractères. Il vous permettra de vous connecter en tant qu’utilisateur root
et ainsi d’avoir tous les droits sur le système. Mais attention il ne faut jamais l’utiliser comme
un compte personnel. Il doit être utilisé pour réaliser des modifications dans votre système.
C’est pourquoi la première action d’un administrateur est de créer un compte personnel. Pour
ceci, il suffit d’utiliser la commande useradd.

1.3. LE FICHIER /etc/passwd ET /etc/group

La liste des utilisateurs du système est généralement dans le fichier /etc/passwd. Ce fichier est
accessible en lecture à tous les utilisateurs et contient, pour chaque utilisateur, les champs
suivants :
➢ Nom de connexion (login) de l’utilisateur,
➢ Un caractère x
➢ Le numéro de l’utilisateur (UID = user identifier),
➢ Le numéro de groupe (GID = group identifier),
➢ [Commentaire],
➢ Le répertoire d’accueil,
➢ [Programme à lancer].

Lors de la connexion, le programme désigné est lancé ; généralement il s’agit d’un interpréteur
de commandes (shell).
Un groupe d’utilisateurs rassemble un certain nombre d’utilisateurs pouvant facilement
partager des fichiers. Ce groupe est répertorié dans un fichier (/etc/group) qui est constitué
par :

➢ Nom du groupe,
➢ Un champ vide ou contenent un caractère x ou *
➢ Numéro du groupe (GID = group identifier),
➢ [Liste des utilisateurs membres du groupe].

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


13

Les notions d’UID et de GID sont importantes pour la protection des fichiers (il ne faut pas les
changer inconsidérément). Un utilisateur a un groupe principal de rattachement et peut
appartenir à plusieurs autres groupes.

1.4. DECONNEXION

En mode texte

Pour sortir de session, vous pouvez utiliser la commande exit. La déconnexion est effective
lorsqu’apparaît l’invite login :

En mode graphique

Pour sortir de session, il faut sélectionner avec le bouton gauche de la souris le menu démarrer
puis choisir la commande log out. La déconnexion est effective Lorsqu’apparaîtra l’invite
graphique login.

2. LES SHELLS

Après toute entrée en session (login), le système positionne l’utilisateur dans son répertoire
privé (home directory ou répertoire d’accueil), qui a été créé par l’administrateur du système
au moment de l’ouverture de son compte et qui devient son répertoire de travail courant
(current working directory). Puis le système active l’interpréteur de commandes désigné dans
le dernier champ du fichier /etc/passwd.

Il existe plusieurs interpréteurs de commandes : le Bash, le TC–shell, et d’autres.

Historiquement, le Bourne–shell fut le premier et a donc fait partie de la première


version d’Unix. Il a été maintenu dans la version System V d’AT&T ainsi que dans la version
Berkeley (BSD). Il existe d’autres shells tels que le TC–shell (Tenex C–shell) de souche Berkeley,
le Z–shell totalement libre, et le Bash, shell standard sous Linux. Le TC–shell est un descendant
très amélioré du C–shell d’origine Berkeley. Le shell standard de Linux est le Bash, descendant
très amélioré du Bourne–shell.

2.1. TC-Shell

Le TC–shell doit son nom au fait que sa syntaxe est inspirée du langage C. Il possède des
fonctionnalités supérieures à celles du Bourne–shell, entre autres :

➢ Un mécanisme d’historique avec rappel et édition des commandes ;


➢ La possibilité de création d’alias ;
➢ Des possibilités accrues pour le contrôle de processus.

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


14

Il exécute deux fichiers d’initialisation, qui sont les deux fichiers de commandes (scripts) du
répertoire privé de l’utilisateur : .cshrc et .login. Puis l’interpréteur se met en attente d’une
commande de l’utilisateur.

Le fichier d’initialisation .cshrc est exécuté lors de chaque appel au TC–shell.

Il est destiné à positionner des variables du TC–shell, à affecter pour certaines commandes des
arguments implicites et à définir d’autres commandes (alias). Il affecte une valeur :

➢ À la variable prompt qui définit l’invite,


➢ À la variable path qui contient les répertoires de recherche des commandes,
➢ Aux variables nécessaires à la gestion de l’historique des commandes, etc.

Le fichier .login, qui est exécuté après le fichier .cshrc, une seule fois lors de la connexion, est
destiné à positionner des variables d’environnement de la session. Il contient les initialisations
standard, principalement les caractéristiques du terminal utilisé.

Les principales variables du TC–shell sont :

prompt valeur du prompt.

path précise le chemin d’accès aux répertoires contenant les principaux


programmes.

home indique le répertoire d’accueil de l’utilisateur.

En sortie de session, à l’aide de la commande exit, le fichier de commandes .logout est exécuté.

2.2. BASH

Après une entrée en session (login) sur un système Linux, vous êtes pris en charge par un
interpréteur de commandes (shell) qui est le Bash (bash). A la connexion, avant l’interprétation
des commandes, c’est à dire apparition du prompt, le Bash exécute les fichiers d’initialisation
: /etc/profile et .bash profile.

Le fichier /etc/profile est généralement géré par l’administrateur système alors que le fichier
.bash profile, se trouvant dans le répertoire d’accueil (Home Directory), est à la disposition de
l’utilisateur. L’existence (ou non), l’accès en lecture d’un de ces fichiers, peut changer l’ordre
d’accès à ces fichiers ou à d’autres fichiers, .bash login par exemple.

Ces fichiers permettent de modifier ou de créer des variables internes au shell, ou des variables
d’environnement, de créer des fonctions, etc.

Les principales variables du Bash sont :

PS1 valeur du prompt.

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


15

PATH précise le chemin d’accès aux répertoires contenant les principaux programmes.

HOME indique le répertoire d’accueil de l’utilisateur.

En sortie de session, à l’aide de la commande exit, le fichier de commandes


.bashlogoutest exécuté s’il existe.

2.3. COMMANDES LINUX

Il existe sous Linux de nombreuses commandes dont on trouvera les plus courantes en annexe
A et que nous présenterons tout au long de cet ouvrage.

Une commande est composée en premier d’un code mnémonique (son nom
proprement dit), suivi parfois d’options et/ou de paramètres. Une option dans une ligne de
commandes Unix est une lettre. Elle commence par un tiret "–". Sous Linux, les options
peuvent être de la forme :

-c c = caractère

--mot mot = un mot explicite

L’espace est le caractère séparateur des différents éléments d’une commande. Cette dernière
est prise en compte et n’est interprétée que lorsque l’utilisateur a tapé la touche <return>.

Remarque

Pour obtenir la totalité des options d’une commande, il faut faire appel à l’option help.

2.4. LE TERMINAL

Il est possible sous Linux d’activer simultanément plusieurs consoles de connexion. En mode
texte, le basculement entre les consoles est obtenu par la combinaison de touches <alt–ctrl–
Fx>, où Fx représente les touches de fonction F1 à F8 situées sur le haut de votre clavier.

Remarque

Pour les utilisateurs de machines Linux, il est formellement déconseillé de redémarrer la


machine (couper le secteur, reset). En effet, un arrêt brutal de Linux a pour conséquence de
rendre le système de fichiers incohérent. Ainsi, si vous êtes « planté », c’est-à-dire si l’une de
vos applications bloque l’écran, que la combinaison de touches <ctrl–c> ne permet pas de
détruire le programme, contrairement à ce que vous feriez avec le DOS, surtout n’éteignez pas
l’ordinateur. Une solution existe : lancez un écran virtuel par la combinaison de touches <alt–
ctrl–F2>. Dans cet écran, vous pourrez lancer des commandes de destruction de programmes
et vous pourrez ainsi récupérer la main.

Si vous êtes en mode graphique et que vous ne pouvez plus déplacer la souris, la combinaison
de touches <alt–ctrl–backspace> permet de revenir à un mode texte.

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


16

Le mode graphique est relancé à partir du mode texte par la commande startx.

2.5. EXERCICES
2.5.1. EXERCICE 1
Après votre connexion au système, votre nom de login est jerome, modifiez votre mot de passe
si vous estimez qu’il est trop facile à deviner.

2.5.2. EXERCICE 2
Vous exécutez la commande suivante :
Xstra> sleep 60
L’exécution de cette commande dure 1 minute. Comment interrompre cette commande et
reprendre la main ?

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


17

CHAPITRE 3 : LE SYSTEME DE FICHIERS

Objectifs :
➢ Comprendre la notion d’arborescence ;
➢ Comprendre les notions de chemin d’accès absolu et relatif ;
➢ Comprendre la notion de répertoire et manipuler les répertoires.

1. L’ARBORESCENCE

Le système de fichiers constitue un élément clé du système Linux. C’est encore à maints égards
une des grandes forces de Linux. Vu par l’utilisateur, le système de fichiers est organisé en une
structure arborescente dont les nœuds sont des répertoires et les feuilles des fichiers
ordinaires.

Les fichiers sont des récipients contenant des données. Pour le noyau du système, ils ne
contiennent qu’une suite d’octets plus ou moins longue. Linux en lui–même ne connaît ni
enregistrement ni structure de fichier. C’est aux programmes d’application de les implanter et
de les gérer. Le système Linux ne connaît que trois types de fichiers :

➢ Les fichiers ordinaires (regular files). Ils servent à mémoriser les programmes et les
données des utilisateurs et du système.

➢ Les fichiers répertoires ou répertoires (directories). Chaque répertoire contient la liste


et la référence des fichiers placés sous son contrôle et la référence du répertoire dont il
dépend (répertoire père).

➢ Les fichiers spéciaux. Ils désignent les périphériques, les tubes ou autres supports de
communication interprocessus. Les fichiers spéciaux associés aux périphériques peuvent
être caractères (terminaux) ou blocs (disque) ; les entrées/sorties (E/S) se font soit
caractère par caractère, soit bloc par bloc, un bloc étant composé de n caractères (512,
1024 ou 2048).

L’extension du système de fichiers aux périphériques constitue une des grandes particularités
de Linux. Cela permet à un utilisateur de diriger les données produites par son application vers
un fichier ou un périphérique. Autre conséquence, les noms des fichiers et des périphériques
obéissent à la même syntaxe et l’accès aux périphériques est contrôlé par le mécanisme de
protection des fichiers.

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


18

Le système de fichiers est organisé en une seule arborescence logique. Cet arbre est composé
de répertoires qui contiennent eux–mêmes d’autres répertoires, ou des fichiers. La figure ci-
après représente un exemple simplifié de cette arborescence.

2. LA CLASSIFICATION DES FICHIERS LINUX

Dans la présentation de la structure du système de fichiers au paragraphe précédent, nous


avons évoqué des fichiers de type répertoire, des fichiers de type ordinaire et des fichiers
spéciaux.

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


19

La syntaxe d’un nom de fichier n’est pas très stricte. Il est recommandé de limiter le nom d’un
fichier à 14 caractères au plus et de n’utiliser que les lettres majuscules ou minuscules
(attention, Linux différencie les majuscules des minuscules), les chiffres et quelques autres
caractères (le point ., le tiret –, le souligné ). Linux autorise jusqu’à 255 caractères pour le nom
du fichier. La longueur minimum est d’un caractère.

Les caractères spéciaux suivants sont à proscrire absolument :

\ > < | $ ? & [ ] * ! " ‘ ( ) ` @ ~ <espace>

De plus, les utilisateurs ayant des claviers français doivent éviter les caractères accentués.

Le point (.) joue un rôle particulier dans le nom d’un fichier. Les fichiers dont les noms
commencent par un point (.), comme .profile, sont des fichiers cachés (c’est–à–dire qu’ils
n’apparaissent pas dans la liste des fichiers en tapant la commande ls sans argument).

Le point sert également à suffixer les noms des fichiers. Cette pratique est très recommandée,
car elle facilite la gestion des fichiers. Il est vrai qu’il n’existe pas de syntaxe précise ; il existe
toutefois un certain nombre de conventions :

essai.c fichier source C

include.h include de C

essai.o fichier binaire objet

essai.f fichier source fortran

essai.c.old convention autorisée mais personnelle (fichier source C, ancienne version).

3. LA DESIGNATION DES FICHIERS

Un fichier est repéré par son nom et sa position dans l’arborescence : son chemin d’accès
(pathname).

La syntaxe de ce chemin d’accès est très précise et peut être décrite des deux manières
suivantes :

3.1. Le chemin d’accès absolu

Il permet d’accéder à un fichier quelconque dans l’arborescence du système de fichiers. Il est


composé d’une suite de noms de répertoires séparés par le caractère /. Il commence toujours
par le caractère / qui désigne le répertoire racine et se termine par le nom du fichier que l’on
veut atteindre.

La longueur du chemin d’accès absolu d’un fichier est limitée à 1024 caractères.

Exemple :

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


20

3.2. Le chemin d’accès relatif

La désignation d’un fichier par son chemin d’accès absolu se révèle rapidement lourde vu le
nombre de répertoires intermédiaires à désigner. Tout utilisateur peut se positionner sur
n’importe quel répertoire de l’arborescence. Ce répertoire devient courant (répertoire de
travail ou current working directory).

Dès l’entrée en session de l’utilisateur, le système le place dans un répertoire de travail initial
(répertoire d’accueil ou home directory). Ce répertoire a été créé au moment de
l’établissement du compte de l’utilisateur. Le système associe alors en permanence, à tout
processus ou tâche, le chemin d’accès complet du répertoire de travail courant de l’utilisateur.
Ainsi, l’usager peut désigner un fichier en ne donnant que son chemin d’accès relatif au
répertoire de travail courant.

A partir de ce répertoire courant, l’utilisateur construit son propre sous–arbre de répertoires


et de fichiers.

Exemple :

Remarque :

Tout répertoire contient au moins deux entrées :

. § représente le répertoire lui–même.

.. § représente le répertoire père.

Ces entrées de répertoire ne sont en général pas imprimées par les utilitaires du système. Elles
permettent de référencer le répertoire courant sans l’obligation de citer son nom de chemin
d’accès absolu ou de référencer avec un chemin d’accès fichier dans un sous–arbre.

Exemple :

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


21

Par commodité, nous utiliserons dans la suite du cours le terme nom de fichier pour désigner
le chemin d’accès à ce fichier.

4. LA MANIPULATION DES REPERTOIRES

Après l’ouverture de sa session, l’utilisateur se trouve sous le contrôle d’un interpréteur de


commandes. Celui–ci est prêt à lire, analyser et éventuellement exécuter les commandes qui
lui sont soumises.

Chaque commande se compose d’un ensemble de champs séparés par un ou plusieurs blancs
et se termine par une fin de ligne (<return> ou “ line feed ”). Le premier de ces champs est
obligatoirement un nom de commande. Les autres champs définissent des paramètres dont
l’interprétation dépend de la commande considérée. Nous reviendrons ultérieurement sur
cette syntaxe.

Pour bien organiser son espace de travail, il est souvent utile de grouper ses fichiers par centre
d’intérêt en créant des sous–répertoires. Les principales commandes pour gérer les
répertoires sont :

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


22

5. LA MANIPULATION DES FICHIERS

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


23

Quel que soit le travail que vous allez faire sur la machine, vous aurez à effectuer certaines
tâches élémentaires telles que lister le contenu d’un répertoire, copier, effacer, ou afficher des
fichiers. Nous présentons ci–dessous brièvement les commandes qui les réalisent :

LiSt files

Permet d’obtenir la liste et les caractéristiques des fichiers contenus dans un répertoire. Si
aucun argument n’est donné, la commande ls affiche la liste des noms des fichiers du
répertoire courant par ordre alphabétique.

Exemple :

conCATenate

La commande cat est une commande multi–usage qui permet d’afficher, de créer, de copier et
de concaténer des fichiers.

Exemples :

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


24

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


25

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


26

6. EXERCICES
6.1. EXERCICE 1

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


27

Dans votre répertoire d’accueil, créez l’arborescence suivante, en n’utilisant que des chemins
relatifs :

rep1

|---fich11

|---fich12

|---rep2

| |---fich21

| |---fich22

|---rep3

| |---fich31

| |---fich32

6.2. EXERCICE 2

Comment déplacer toute l’arborescence rep3 sous le répertoire rep2 ? Supprimez tout sauf
rep1, fich11 et fich12.

6.3. EXERCICE 3

À l’aide de la commande id, déterminez votre UID et votre groupe (nom de groupe et GID).
Combien y a-t-il d’utilisateurs dans votre groupe ?

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


28

CHAPITRE 4 : PROTECTION DES FICHIERS


Objectifs :
➢ Comprendre comment se fait la protection des fichiers ;
➢ Comprendre comment se fait la modification des droits.

Comme tout système multi-utilisateur, Linux possède des mécanismes permettant au


propriétaire d’un fichier d’en protéger le contenu. Le propriétaire est l’utilisateur ayant créé le
fichier. Pour permettre le partage de fichiers et faciliter le travail en équipe, Linux définit la
notion de groupe d’utilisateurs, et tout utilisateur appartient à un groupe au moins. Les droits
d’accès (en anglais permissions) à un fichier sont définis par son propriétaire.

1. DROIT D’ACCES AUX FICHIERS

À chaque fichier est associé un ensemble d’indicateurs précisant les droits d’accès au fichier.

Pour chaque fichier il existe trois types d’utilisateurs :

➢ Le propriétaire du fichier,
➢ Les membres du groupe propriétaire du fichier,
➢ Les autres utilisateurs du système.

Pour chaque fichier et par type d’utilisateur il existe trois modes principaux :

➢ Autorisation d’écriture (w)


➢ Autorisation de lecture (r)
➢ Autorisation d’exécution (x)

Sous Linux il existe différents types de fichiers :

➢ fichier ordinaire ()
➢ fichier répertoire (d)
➢ fichier spécial : périphérique accédé en mode caractère (c)
➢ fichier spécial : périphérique accédé en mode bloc (b)
➢ tube nommé (named pipe) (p)
➢ lien symbolique (l)
➢ socket (s)

Ainsi, à chaque fichier Linux sont associés 10 attributs (1 pour désigner le type, et 9
attributs de protection, 3 pour le propriétaire, 3 pour le groupe et 3 pour les autres
utilisateurs). L’ensemble des renseignements sur un fichier est obtenu en utilisant la
commande ls l.

Exemple :

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


29

La chaîne rw r r représente les protections du fichier /etc/passwd. Le premier caractère


représente le type de fichier (ordinaire dans ce cas). Les trois caractères suivants indiquent les
droits d’accès du propriétaire (rw), les trois suivants sont ceux du groupe (r) et les trois derniers
(r) sont les droits d’accès des autres utilisateurs. Le champ suivant représente le nombre de
liens sur ce fichier (un dans l’exemple). Les deux champs suivants indiquent l’utilisateur (root)
et le groupe (bin) propriétaires du fichier. Ensuite apparaît la taille du fichier en octets, suivie
de la date et de l’heure de la dernière modification du fichier. A la fin apparaît le nom du fichier.

Voici deux exemples de protection des fichiers :

crw rw r Fichier spécial caractère : lecture et écriture pour le proprié- taire et pour le groupe,
et lecture pour les autres (par exemple les terminaux).

rwx r x r Fichier ordinaire : lecture, écriture et exécution permises pour le propriétaire, lecture
et exécution pour le groupe et seule- ment lecture pour les autres. Il est donc impossible aux
membres du groupe et aux autres utilisateurs d’écrire dans ce fichier.

2. MODIFICATION DES DROITS D’ACCES AUX FICHIERS


2.1. MODIFICATION DES DROITS D’ACCES

La protection d’un fichier ne peut être modifiée que par le propriétaire à l’aide de la commande
chmod (CHange MODe). Il existe deux modes d’utilisation de cette commande. La première
(la plus ancienne) utilise la description des protections par un nombre octal.

EXEMPLE :

rwx rw r x est représenté par le nombre octal 765. En effet, une lettre équivaut à 1, un tiret à
0.

On a donc rwx r w r x = 111 110 101 = 765

EXEMPLE :

Cet exemple va modifier la protection du fichier toto de la manière suivante :

r x rw rwx autorisant un accès lecture et exécution au propriétaire, lecture et écriture au


groupe et un accès sans restriction aux autres (cas très rare).
SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG
30

2.2. Droit d’accès à la création du fichier

La protection d’un fichier, ainsi que le nom du propriétaire (le vôtre) et le nom du groupe
auquel vous appartenez, sont établis à sa création et ne peuvent être modifiés que par son
propriétaire.

La commande umask permet de définir un masque de protection des fichiers (et répertoires)
lors de leur création. Cette commande se trouve en général dans le fichier .bashrc, mais elle
peut être exécutée à tout moment. Le masque est exprimé en base 8.
Exemples :

Attention

Pour les fichiers ordinaires, umask 022 donnera une protection de type rw r r , car la possibilité
d’exécution n’est pas autorisée sur les fichiers ordinaires.

Voici donc ce qui se passe après avoir lancé umask022

La forme symbolique de la commande umask est beaucoup plus agréable à l’utili- sation que
la forme octale. Acceptée par le bash et le Z-shell (mais pas par le TC- shell), elle est
totalement cohérente avec la forme symbolique de la commande chmod, et devrait être
préférée à la forme octale, considérée comme désuète.
Exemple :

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


31

2.3. Droit d’accès aux répertoires

Dans le cas des répertoires, l’interprétation des droits est légèrement différente de celle
concernant les fichiers. Les informations concernant un répertoire sont obtenues par la
commande ls dl rept.

Exemple :

L’interprétation des protections pour les répertoires est la suivante :

r autorise la lecture du contenu du répertoire comme dans le cas des fichiers ; permet
donc de voir la liste des fichiers qui sont dans le répertoire.

X autorise l’accès au répertoire (à l’aide de la commande cd).

W autorise la création, la suppression et le changement du nom d’un élément du


répertoire. Cette permission est indépendante de l’accès aux fichiers dans le répertoire.

Exemple :

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


32

Seul l’utilisateur xstra1 pourra modifier son fichier f1mais il ne pourra pas le supprimer. En effet le
propriétaire du répertoire xstra1 (l’utilisateur xstra1) n’a pas l’autorisation w (autorisation de création,
suppression, modification du nom d’un élément du répertoire).

2.4. Modification du propriétaire et du groupe

La commande chown permet de changer le propriétaire d’un fichier. Pour des raisons de
sécurité, seul l’administrateur peut modifier le propriétaire d’un fichier ou d’un répertoire. Cet
utilisateur privilégié, appelé root, peut accéder à tous les fichiers et répertoires sans aucune
restriction et peut en modifier tous les attributs (nom, propriétaire, groupe propriétaire,
permissions, dates). Il existe toujours dans tous système Unix/Linux.

La commande chgrp permet le changement de groupe pour les fichiers ou répertoires cités, à
condition que l’utilisateur fasse partie du nouveau groupe et soit propriétaire de ces fichiers
ou répertoires.
Exemple :

Exercices :
Exercice 1 :
En utilisant les commandes mkdir, echo et cat, créez dans un nouveau répertoire de nom
"reptest" le fichier "bienvenue" contenant la ligne de commandes : echo Bienvenue dans le
monde Linux.

Exécutez ce fichier.

Exercice 2 :
En utilisant les commandes mkdir, echo, cp, chmod, cat, créez un fichier que vous pouvez lire,
modifier et supprimer.

Exercice 3 :
En utilisant les commandes mkdir, echo, cp, chmod, cat, créez un fichier que vous pouvez lire
et supprimer mais que vous ne pouvez modifier.

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


33

CHAPITRE 5 : LES COMMANDES LINUX

1. COMMANDES FONDAMENTALES

1.1. SE DÉPLACER DANS L'ARBORESCENCE DE RÉPERTOIRES (CD)

Lorsque vous avez passé le login et le password de linux, vous vous retrouvez devant le prompt
shell qui est le plus souvent celui de bash (sinon vous serez devant celui de csh). Il ressemble
le plus souvent à ceci :
[root@user_desktop /root]$

Le mot root signifie que vous vous êtes "logué" sur le compte de l'administrateur système.
Vous êtes donc en pleine possession de la machine, vous pouvez faire absolument n'importe
quoi, jusqu'à supprimer tous les fichiers ... faites donc très attention ... En théorie il ne faut
utiliser la machine sous ce compte qu'afin de l'administrer. Des comptes dits « d'utilisateurs »
permettent sinon de travailler en temps normal. Nous verrons ci-après comment créer un
compte utilisateur.

Le mot "user_desktop"représentera, dans ce document, le nom de votre ordinateur (pour le


connaître invoquer la commande "hostname").

Actuellement vous vous trouvez sous le compte de l'administrateur système, c'est-à-dire que
vous êtes dans le répertoire /root (sous Unix, les composants des noms de répertoires sont
séparés par des "slash" "/" et non pas comme sous MS-DOS par des "anti-slash" "\").

Déplaçons-nous dans la "racine" du système :


[root@user_desktop /root]$ cd ..

Faites bien attention de séparer par un espace "cd" et "..", UNIX exige une grande précision
dans la syntaxe des commandes. Soumettez la commande au système grâce à la touche « Entrée
», évidemment !

Vous êtes maintenant dans le répertoire racine :


[root@user_desktop /]#

Que contient-il ? Tapez la commande ls, et voyez le résultat, vous devez obtenir quelque chose
comme :

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


34

bin boot cdrom etc usr var vmlinux, si certains fichiers ou répertoires manquent ce n'est pas
important.

Déplaçons-nous dans le répertoire qui contient une grande partie des programmes (souvent
simplement appelés « binaires ») de linux : /usr/bin : cd usr/bin. Vous pouvez là aussi obtenir
le contenu du répertoire en utilisant la commande ls.

Maintenant allons voir ce que contient le répertoire /etc (aperçu lorsque nous avons listé le
répertoire racine /). Nous avons deux possibilités pour nous y rendre : soit nous revenons dans
le répertoire racine et nous nous rendons ensuite dans le répertoire etc; soit nous nous rendons
immédiatement dans le répertoire /etc :
(1) Méthode no 1 :
cd / (pour se rendre à la
racine) puis
cd etc

Cette méthode est fastidieuse car elle nécessite de taper deux commandes successives. Nous
pouvons utiliser la deuxième méthode pour nous rendre directement dans le répertoire /etc en
écrivant le chemin complet dans la commande cd :

(2) Méthode no 2 :
cd /etc et nous sommes directement
dans le répertoire /etc.

Dans cette commande nous avons indiqué que pour se rendre dans le répertoire etc, il fallait
d'abord se rendre dans le répertoire racine. Pour se faire nous avons placé un / devant etc.

Lorsque l'on ajoute un ~ au lieu d'un chemin à la commande cd, celle-ci nous replace
automatiquement dans notre répertoire utilisateur. Si vous êtes en administrateur système la
commande par cd ~ vous placera dans le répertoire /root. Dans le cas où je suis (je suis loggé
en tant qu'utilisateur user) je vais automatiquement me retrouver dans le répertoire de
l'utilisateur user qui se trouve dans /home/user. Les répertoires des utilisateurs sont tous sous
/home.
[user@user_desktop bin]$cd ~

Ceci est la méthode orthodoxe, sinon vous pouvez faire simplement :


[user@user_desktop bin]$cd et vous
reviendrez ainsi dans votre répertoire
personnel.

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


35

1.2. DANS QUEL RÉPERTOIRE SUIS-JE ACTUELLEMENT ? (PWD)

Lorsque l'on se déplace dans les répertoires, par défaut bash n'affiche que le « nom court » du
répertoire où l'on se trouve. Le nom court ne comprend pas le chemin complet. Or il peut arriver
qu'un même nom court corresponde à plusieurs répertoires bien distincts, donc que seuls les
chemins qui y mènent permettent de les distinguer. C'est par exemple le cas du nom court bin,
que l'on trouve en /bin et en /usr/local/bin. Il existe beaucoup d'autres exemples.

La solution pour connaître le chemin du répertoire où l'on se trouve est d'utiliser la commande
pwd : [user@user_desktop bin]$ pwd
/usr/bin
[user@user_desktop bin]$

1.3. LISTER LES FICHIERS D'UN RÉPERTOIRE (LS)

La commande ls et ses très nombreuses options vous permettront d'obtenir beaucoup


d'informations sur les fichiers présents dans un répertoire, déplaçons nous par exemple dans le
répertoire "/bin" et listons le contenu de ce répertoire :
[user@user_desktop bin]$ cd /bin
[user@user_desktop /bin]$ ls
arch dd gzip nisdomainname su ash df hostname ping sync awk dmesg kill ps
tar
cp fgrep mount sh ypdomainname cpio gawk mt sleep zcat csh grep mv sort zsh
date gunzip netstat sty ls

Ceci est un listing "brut" du répertoire /bin qui contient les utilitaires de base de linux. On
reconnaît par exemple la commande ls.

De la même manière que sous MS-DOS (avec la commande dir), nous pouvons demander à
Linux de lister seulement les fichiers dont les noms contiennent des caractères donnés.

Demandons par exemple uniquement les noms des fichiers commençant par la lettre « l » :
[user@user_desktop
/bin]$ ls l* ln login ls
[user@user_desktop /bin]$

Voici quelques options intéressantes de la commande ls (les options sous UNIX suivent la
commande et sont le plus souvent précédées d'un tiret) :
SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG
36

L'option ls -l permet de lister les attributs des fichiers (les droits de lecture, d'écriture et
d'exécution, le propriétaire, le groupe, la taille en octets, sa date de création ou de modification)
:
[user@user_desktop
/bin]$ ls -l total 3615
-rwxr-xr-x 1 root root 2716 Apr 23 02:09 arch
-rwxr-xr-x 1 root root 56380 Dec 23 1996 ash
Lrwxrwxrwx 1 root root 4 May 10 20:01 awk -> gawk
-rwxr-xr-x 1 root root 18768 Mar 8 19:17 basename
-rwxr-xr-x 1 root root 300668 Sep 4 1996 bash
Lrwxrwxrwx 1 root root 3 May 10 19:59 bsh -> ash
-rwxr-xr-x 1 root root 16584 Dec 16 1996 cat
-rwxr-xr-x 1 root root 17408 Nov 26 1996 chgrp

Notes : Ici, tous les fichiers appartiennent à l'administrateur système (root) et à son groupe
(root), comme les sections consacrées à chmod et à chown l'exposerons). Nous traiterons du
sens de la fin de chaque ligne, qui contient parfois une flèche visible ici sur la ligne : awk ->
gawk, dans la section consacrée aux liens ln.

ls -a liste tous les fichiers du répertoire, y compris les fichiers cachés. Cette option est très utile
lorsque l'on se trouve dans son répertoire personnel car il contient les fichiers de configuration
de l'utilisateur dont les noms commencent généralement par un point et seule l'option -a permet
de détecter leur existence.

Exemple avec le répertoire de l'administrateur système :


voici une partie des fichiers listés avec la commande ls sans option :
[root@user_desktop /root]# ls
bookmarks.sgml mc.hint scrsh2 2494.html
Desktop ftape.o mc.hlp scrsh3
FAQ.services.html kbanner.kssrc mc.lib xdm-config

Et voici une partie du résultat avec la commande ls -a.


[root@user_desktop /root]# ls -a

. .kvtrc .xquadkey
.. .letter .xquadkey~
.BitchX .mc.ext .2494.html
.Xmodmap~ .peruser-newsrc-working
.amaya .peruser_config .Desktop

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


37

.applications .peruser_spool FAQ.services.html


On peut maintenant connaître tout (option 'a' : penser au mot "all") le contenu du
répertoire. D'autres options de ls sont utiles :

ls -m : Affiche les fichiers en les séparant par une virgule au lieu de les
présenter en colonnes.
ls -t : Affiche les fichiers par date, c'est-à-dire en les classant du récent au plus
ancien.
ls -lu : Affiche les fichiers par date de dernier accès et indique cette date.
ls -F : Affiche les fichiers par type. Ainsi un fichier suivi d'un slash (/) est un
répertoire, un fichier suivi d'une étoile est un fichier exécutable et un
fichier suivi d'un "@" est un lien (nous reviendrons sur les liens dans la
section consacrée à ln).
ls -S : Affiche les fichiers triés par ordre de taille décroissante.
ls -X : Affiche les fichiers par type d'extension.
ls -r : Affiche les fichiers en ordre alphabétique inverses. Cette option à la
particularité d'inverser l'effet de tous les tris requis. Par exemple, la
commande ls -tr affichera les fichiers par date en commençant par les
plus anciens pour finir par les plus récents.

1.4. VOIR UN FICHIER (CAT ET MORE)

La commande cat permet de lire des fichiers. Nous avons vu tout à l'heure que le répertoire
/root contenait des fichiers de configuration. Ces fichiers sont simplement des fichiers textes
avec un agencement et une syntaxe particulière. Regardons le contenu du fichier .bashrc qui
permet de configurer à souhait son shell :
[root@user_desktop /root]# cat .bashrc
# .bashrc

# User specific aliases and functions

# Source global
definitions if [ -f
/etc/bashrc ]; then
.
/etc
/ba
shr
c Fi
sou
SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG
38

rce
.sd.
sh
[root@user_desktop /root]#

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é).

[root@user_desktop /root]# cat -n .bashrc


1 # .bashrc
2
3 # User specific aliases and functions
4
5 # Source global definitions
6 if [ -f /etc/bashrc ]; then
7 . /etc/bashrc
8 fi
9 source .sd.sh
[root@user_desktop /root]#

Si vous souhaitez connaître les autres options de cat, tapez au prompt "cat --help".

Vous pouvez utiliser la commande more pour visualiser un fichier. La commande more a
l'avantage d'afficher le fichier page par page. Pour passer d'une page à l'autre, tapez sur la
touche ESPACE.

1.5. ÉDITER UN FICHIER (VI, EMACS, JOE)

(1) vi (l'éditeur le plus ancien)

vi date des années 70… Autant dire que cet éditeur a du métier et n'est toujours pas démodé.
Ce n'est pas celui que j'utilise mais beaucoup en sont adeptes malgré son apparence fruste. Ceci
s'explique par une grande puissance ... Si je m'attarde quelque peu sur vi, c'est que dans les
moments critiques où rien ne fonctionne, où tout va mal, c'est l'éditeur qu'on ne peut éviter.

Lançons vi :
[root@user_desktop /root]# vi

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


39

Après le lancement de la commande vous allez vous trouver directement dans l'éditeur ...
Pendant ce court apprentissage de vi, nous allons créer un fichier, le modifier, l'enregistrer, ...
et quelques autres petites manoeuvres de survie.

Passer du mode commande aux mode texte, taper du mode texte, enregistrer. vi comprend
deux modes : un mode "commande" et un mode "insertion", après le lancement de vi nous
sommes en mode commande : appuyez sur la touche "Echap" puis sur "a" ("a", comme
"append", permet d'ajouter du texte après le curseur). Vous voyez en bas de l'écran apparaître
la ligne "-- INSERT --". Nous pouvons commencer notre texte :
Linux est gratuit puissant en perpetuelle evolution.
Linux est stabble. Linux existe depuis 1991 seulement et pourtant
quel chemin parcouru !

N'oubliez pas de placer retour chariot au bout de chaque ligne.

Sauvons le fichier : nous sortons d'abord du mode texte en appuyant à nouveau sur la touche
"Echap". La mention "-- INSERT --" disparaît, nous sommes en mode commande. Tapez
maintenant " :w linux-test" et sur la touche retour chariot (afin d'écrire ("write") le fichier).
Vous devez obtenir en bas de l'écran ceci :
"linux-test" [New File] 3 lines, 142 characters written

Supprimer du texte et quitter vi


Nous voyons qu'à la deuxième ligne, j'ai fait une grosse ‘fôte d'aurtograffe’. Nous allons
supprimer le "b" qui est en trop dans stabble : déplacez le curseur sur un des "b" en trop, passez
en mode commande ("-INSERT --" ne doit pas apparaître à l'écran), appuyez sur "x", le b a
disparu.

Quittons vi, mais auparavant, nous devons sauver les modifications effectuées : Passez en mode
commande et tapez " :wq" (write et quit). Vous êtes sorti de vi et votre fichier a été sauvegardé
sous linux-test. Pour revenir à vi en ouvrant le fichier linux-test au démarrage, tapez :
[root@user_desktop /root]# vi linux-test

Si vous souhaitez quitter sans enregistrez les dernières modifications, il vous faudra passer en
mode commande et taper " : q!".

Ceci est une présentation très courte de vi, mais qui vous permettra malgré tout de survivre au
cas où vous devriez absolument l'utilisez.

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


40

Voyons tout de même un rapide descriptif d'autres commandes vi :

D'autres commandes vi.


A permet d'ajouter du texte à la fin de la
ligne. i permet d'ajouter du texte avant
le curseur. o permet d'ajouter une
ligne en dessous du curseur. 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.

(2) Emacs ... la puissance !

Emacs date de la fin des années 70 et ne cesse d'évoluer depuis, ce qui fait de lui, sans aucun
doute possible, l'éditeur le plus puissant au monde. Bien plus qu'un éditeur, emacs est un
environnement de travail : édition, programmation, mail, news, shell, …, bref on peut rester
sous emacs sans avoir besoin de quoi que ce soit d'autre.

Ses adeptes sont très nombreux.

Et surtout ne leur dites pas qu'emacs est lourd ...vous vous tromperiez lourdement (je sais de
quoi je parle
... j'ai fait l'erreur)

Lançons emacs :
[root@user_desktop root]$ emacs

Ouvrons maintenant le fichier linux-test que nous avons créé précédemment sous vi :

Pour cela utilisez la séquence de touches suivante : Ctrl-x Ctrl-f

Vous voyez apparaître en bas de l'écran :


Find File : ~/

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


41

Tapez le nom du fichier et faites un retour chariot.

Nous retrouvons notre charmant petit texte.

Vous le comprenez, la touche Ctrl permet de passer des commandes et de passer du mode texte
au mode commande. Vous pouvez le modifier à souhait. Les touches Backspace et Suppr
fonctionnent comme sous n'importe quel éditeur.

Pour sauver le fichier, tapez la séquence de touches suivante :


Ctrl-x Ctrl-s

Si vous êtes bloqués dans la ligne de commande d'emacs après avoir effectué de mauvaises
manipulations et que vous souhaitez retrouver le mode texte, tapez la séquence suivante : Ctrl-
g

Si vous avez fait des erreurs dans le texte, la séquence suivante permet de supprimer les
dernières modifications :
Ctrl-x u

Si vos touches de direction ne fonctionnent pas, voici plusieurs séquences de touches qui vous
permettent de vous déplacer dans votre document :
Ctrl-p : monter d'une ligne.
Ctrl-n : descendre d'une ligne.
Ctrl-f : avancer d'un caractère.
Ctrl-b : reculer d'un caractère.
Ctrl-v : avancer d'un écran (ou d'une page si vous préférez).
Alt-v : reculer d'un écran.
Ctrl-d : supprimer le caractère sur lequel le curseur se trouve.

Une commande utile :


Ctrl-s qui permet de faire une recherche "dynamique" ("incrémentale") sur une suite de
caractères dans le texte.

Meta-% permet de lancer un “Rechercher et remplacer”. La touche Meta est en général


confondue avec la touche Alt.

Pour quitter emacs, utiliser la combinaison de touches suivante :


Ctrl-x Ctrl-c

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


42

Avec cette rapide présentation vous pourrez déjà "barboter" un peu sous emacs. Il m'est
impossible de décrire dans ce document les milliers de fonctions disponibles ...., si vous
souhaitez en savoir plus, cette séquence vous permettra de rentrer dans l'aide d'emacs : Ctrl-
h
Ou bien lancez le "tutorial" :
Ctrl-h t

Si vous devenez un accroc d'emacs (ce qui est tout a fait normal) vous pourrez trouver quelques
ouvrages sur emacs dans toutes les bonnes bibliothèques.

(3) joe : la simplicité

joe est l'éditeur que j'utilise pour faire des petites modifications dans mes fichiers de
configuration par exemple. Il est très léger, il ne possède pas la puissance d'emacs mais rend
lui aussi service.

Pour appeler joe :


[root@user_desktop /root]# joe

joe est très intuitif (à la Wordstar), pas besoin de s'étendre sur les fonctionnalités textes.

Quatre opérations fondamentales à connaître :


Ctrl-k e permet d'ouvrir un fichier
Ctrl-k d permet de sauvegarder le fichier
Ctrl-k x permet de sauvegarder le fichier et de quitter joe
Ctrl-c permet de quitter joe sans sauvegarder les modifications.

joe possède de nombreuses fonctions possibles qui sont décrites dans le man (nous verrons
comment y accéder dans la section consacrée à man).

1.6. COPIER UN FICHIER (OU UN RÉPERTOIRE) : CP.

La syntaxe de la commande cp est la


suivante : cp [option] fichier-origine
fichier-destination ou

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


43

cp [option] fichier répertoire

Par exemple pour faire une copie de notre fichier linux-test en un fichier linux-test2, il suffit de
faire :
[root@user_desktop /root]# cp linux-test linux-test2

Nous possédons maintenant deux exemplaires de notre fichier dans /root.

ATTENTION : si vous effectuez une copie d'un fichier sur un fichier qui existe déjà, celui-ci
sera effacé et remplacé par le nouveau fichier.

Si vous souhaitez copier le fichier linux-test dans un répertoire (par exemple /home) en gardant
le nom du fichier, utilisez la commande suivante :
[root@user_desktop /root]# cp linux-test /home

Pour lui donner un autre nom :


[root@user_desktop /root]# cp linux-test /home/linux-test2

Nous venons de voir que l'utilisation de cp est dangereuse et l'on risque parfois d'effacer des
fichiers importants. Les options de cp peuvent vous éviter des situations fâcheuses.

cp -i avertit l'utilisateur de l'existence d'un fichier du même nom et lui demande s'il peut ou
non remplacer son contenu. Recopions à nouveau le fichier linux-test sur linux-test2 avec
l'option -i :
[root@user_desktop /root]# cp -i linux-test linux-test2 cp :
overwrite `linux-test2'? cp vous demande s'il peut écraser linux-test2 :
répondre par "y" (oui) ou "n"(non).

Quelques options importantes de cp :


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 d'origine est modifié et
cp ajoute un tilde (~) à la fin du nom du fichier.
cp -l permet de faire un lien "dur" entre le fichier source et sa copie. Ceci signifie que
le fichier copié et sa copie partageront physiquement le même espace. Cela
permet des gains de place non négligeables. Plus exactement, sur le disque dur le
fichier et sa copie seront le même fichier alors qu'avec une copie classique, le
disque dur contiendra deux exemplaires du fichier.

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


44

cp -s permet de faire un lien "symbolique" entre le fichier source et sa copie. Le lien


symbolique est un pointeur. Ainsi si nous copions le fichier linux-test avec
l'option -s, lorsque par exemple nous voudrons éditer le fichier copié, linux
éditera en réalité le fichier original (voir la section consacrée à ln pour un
descriptif plus complet des liens).
cp -p permet lors de la copie de préserver toutes les informations concernant le fichier
comme le propriétaire, le groupe, la date de création (voir les sections consacrées
à chmod et chown pour plus d'informations).
cp -r permet de copier de manière récursive l'ensemble d'un répertoire et de ses sous
répertoires.
Exemple :
Je possède dans mon répertoire /home/user/personnel un répertoire intitulé
"mygale" et qui contient 3 sous répertoires ("echecs", "linux", xcaissa) :
/home/user/personnel/
/home/user/personnel/mygale/
/home/user/personnel/mygale/echecs/
/home/user/personnel/mygale/linux/
/home/user/personnel/mygale/xcaissa/
Je souhaite copier le répertoire mygale ainsi que ses sous-répertoires dans mon
répertoire /home/user/" : j'utilise la commande (en supposant que je me suis au
préalable déplacé dans le répertoire /home/user/personnel/ :
[user@user_desktop personnel]$ cp -r mygale /home/user
cp -v permet d'afficher le nom des fichiers copiés. Utile si par exemple vous copiez
plusieurs fichiers (à l'aide des occurences "*" et/ou "?") et que vous souhaitez
voir le bon déroulement de la "multicopie". J'aurais pu par exemple utiliser cette
option lors de ma copie récursive du répertoire "mygale".
J'aurais ainsi vu ceci en associant l'option -v et -r :
[user@user_desktop personnel]$ cp -rv mygale
/home/user mygale -> /home/user/mygale
mygale/index.html -> /home/user/mygale/index.html
mygale/logo.gif -> /home/user/mygale/logo.gif
mygale/linux -> /home/user/mygale/linux
mygale/linux/linux.html ->
/home/user/mygale/linux/linux.html ……… (c'est une partie
du résultat).

1.7. SUPPRIMER UN FICHIER (RM)

Nous entrons maintenant dans une zone à risque, mieux vaut donc se loguer en tant
qu'utilisateur de la machine et non pas en tant qu'administrateur système (root), car nous
risquerions par une mauvaise manipulation de supprimer des fichiers fondamentaux
nécessaires au bon fonctionnement de linux. Nous allons donc créer un compte utilisateur, lui

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


45

attribuer un mot de passe et nous loguer sur ce compte. Exécutez les commandes suivantes,
une explication détaillée interviendra ensuite dans la partie consacrée à l'administration
système :
[root@user_desktop /root]#adduser le_nom_de_choix (votre prénom par exemple, mais
sans accent et si possible long de moins de 8 caractères)

[root@user_desktop /root]#passwd le_nom_de_votre_choix (saisir deux fois le même mot


de passe, la seconde sert à confirmer)

[root@user_desktop /root]#cp linux-test /home/le_nom_de_votre_choix (gardons notre


fichier pour continuer nos petites expériences ;).

[root@user_desktop /root]#chow le_nom_de_votre_choix.le_nom_de_votre


_choix
/home/le_nom_de_votre_choix(L'administrateur donne généreusement le fichier linux-test au
nouvel utilisateur avec la commande "chown" que nous verrons dans les commandes
d'administration système, pour l'instant ne vous en souciez pas.)

[root@user_desktop /root]#su le_nom_de_votre_choix (la commande su permet de se


loguer sur un autre compte).

Il suffira de saisir exit pour « retomber » dans la session de travail root.

Effectuons à nouveau une copie du fichier linux-test (tapez cd pour vous retrouver dans votre
répertoire personnel) :
[user@user_desktop user]$ cp linux-test linux-test2

(1) La Commande rm
Pour supprimer le fichier "linux-test2" :
[user@user_desktop user]$ rm linux-test2

(2) Les OptionsS de rm


Comme pour cp, l'option -i permet à rm de demander à l'utilisateur s'il souhaite vraiment
supprimer le ou les fichiers en question :
[user@user_desktop user]$ rm -i linux-test2 rm : remove `linux-test2'? (il
vous suffit donc de répondre "y" ou "n") rm –d permet de supprimer un
répertoire qu'il soit plein ou non (attention dangereux ...)

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


46

rm –r permet de supprimer un répertoire et ses sous répertoires (attention TRÈS


dangereux)
rm –f permet de supprimer les fichiers protégés en écriture et répertoires
sans que le prompt demande une confirmation de suppression
(à utiliser avec précaution ...)

1.8. CRÉER UN RÉPERTOIRE (MKDIR)

Pour créer un répertoire, il suffit de taper la commande suivante (ici je crée le répertoire
"personnel" dans /home/user :
[user@user_desktop user]$ mkdir personnel

Une option de mkdir est souvent utile :


mkdir -p permet de créer une suite de répertoire.

Supposons que je veuille créer dans mon répertoire /home/user la suite de répertoires suivante
: doc/mygale/mail. Je peux faire soit : [user@user_desktop user]$ mkdir doc
[user@user_desktop user]$ cd doc
[user@user_desktop user]$ mkdir mygale
[user@user_desktop user]$ cd mygale
[user@user_desktop user]$ mkdir mail

Ou bien utiliser l'option -p qui me permet de créer la suite de répertoires "parents" le plus
simplement du monde :
[user@user_desktop user]$ mkdir -p doc/mygale/mail

1.9. DÉPLACER OU RENOMMER UN FICHIER (MV)

Pour comprendre la commande mv, voyons une suite de commandes qui effectuent des
opérations différentes :
[user@user_desktop user]$ mv linux-test perso : renomme le fichier "linux-test" en "perso"
[user@user_desktop user]$ mv perso perso : va écraser le fichier existant avec la source.
[user@user_desktop user]$ mv personnel mon-répertoire :va renommer le répertoire
personnel en mon-répertoire
[user@user_desktop user]$ mv perso /home/user/mon-répertoire : va déplacer le fichier
perso dans le répertoire /home/user/mon-répertoire

Les options :

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


47

mv -b ('b' comme "backup") va effectuer une sauvegarde des fichiers avant de les
déplacer :
[user@user_desktop user]$ mv -b mon-répertoire/perso /mon-
répertoire/linux-test Cette commande va renommer le fichier perso en linux-
test, cependant vous trouverez dans le répertoire une sauvegarde de perso
(perso~). mv -i ('i' comme «interactive») demande pour chaque fichier et
chaque répertoire s'il peut ou non déplacer fichiers et répertoires. mv -u ('u'
comme «update») demande à mv de ne pas supprimer le fichier si sa date de
modification est la même ou est plus récente que son remplaçant.

Exemple :
Déplaçons-nous vers notre répertoire personnel puis créons un nouveau fichier avec l'éditeur
de texte joe :
[user@user_desktop personnel]$ joe linux-
test2 saissons un petit texte :
"y en a marre de ces textes stupides !"
et finissons notre session joe par la séquence de touches suivante :
Ctrl-k x qui permet d'enregister le
fichier et de quitter joe.

Notre fichier linux-test2 est plus récent que notre fichier linux-test. Vous pouvez le vérifier en
effectuant un "ls -l".
Nous souhaitons (naïvement, bien sûr !) renommer le fichier linux-test en linux-test2. Mais
nous sommes attentifs et nous ne voulons pas que le fichier linux-test2 soit écrasé si celui-ci
est plus récent que linuxtest :
[user@user_desktop personnel]$mv -u linux-test linux-test2

L'option -u nous a évité d'écraser le fichier linux-test2. La commande mv n'a donc pas été
effective.

1.10. RETROUVER UN FICHIER ("FIND")

(1) La commande : find


Exemple simple : comment trouver un fichier portant un nom donné ?
[user@user_desktop user]$ find / -name linux-test2 -print
/home/user/linux-test2
(Un peu long n'est ce pas pour trouver la réponse dans toute cette grosse arborescence ?).

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


48

En général on recherche rarement un fichier depuis la racine.

Décomposition de la commande de l'exemple :


"/" indique que nous voulons chercher à partir de la racine notre fichier.
"-name" est l'option qui indique ici que nous voulons spécifier le nom d'un
fichier. "-print" demande à find d'afficher le résultat.

Pour chercher tous les fichiers commençant par "linux-tes" et définir à partir de quel répertoire
on souhaite effectuer la recherche on utilise cette syntaxe :
[user@user_desktop user]$find /home/user -name 'linux-tes*' -print

Le nombre d'options de find est impressionnant. En voici quelques unes :


-type permet d'indiquer le type de fichier que l'on recherche. Si vous cherchez seulement un
répertoire et non pas un fichier vous pourrez utilisez cette option :
[user@user_desktop user]$find /usr -type d -name bin -print

Ici, on demande à find de trouver les répertoires (l'argument "d" (comme "directory") de
l'option -type indique que l'on cherche un répertoire) du nom de "bin" à partir du répertoire
/usr.

-exec ou -ok permet d'exécuter une commande sur les fichiers trouvés. La différence entre -
exec et -ok est que la deuxième vous demandera pour chaque fichier trouvé si vous souhaitez
réellement réaliser l'opération :
[user@user_desktop user]$find -name 'linux-tes*' -print -ok rm {} \;
./linux-test rm ...
./linux-test ? y
[user@user_de
sktop user]$

Dans l'option -exec, la paire d'accolades se substitue aux fichiers trouvés, et l'anti-slash lié au
point virgule forme une séquence d'échappement.

On peut dire que cette présentation de find est assez sommaire, mais j'espère qu'elle vous laisse
deviner ses capacités.

(2) 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

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


49

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 Redhat, cette base de donnée se trouve dans le répertoire /usr/lib et se nomme
locatedb. La syntaxe est donc simple :
[user@user_desktop user]$ locate nom_du_fichier

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

(3) La commande : which


which vous permet simplement de connaître le chemin d'un exécutable.

Exemple:
[user@user_desktop user]$ which ls
/bin/ls
[user@user_desktop user]$

1.11. TROUVER DU TEXTE DANS UN FICHIER (GREP)

La commande grep est un pivot des commandes UNIX. Elle cherche une expression rationnelle
dans un ou plusieurs fichiers, exemple :
[user@user_desktop user]$grep fouille linux-
commande.html grep, la commande qui vous fouille les
fichiers

La commande a donc affiché la ligne qui contient le mot "fouille" dans le fichier linux-
commande.html.

La richesse de la commande grep permet de faire des recherches sur plusieurs fichiers et d'avoir
un format de sortie adéquat. Par exemple, le fichier linux-commande.html est déjà assez
important et il serait agréable de savoir où se trouve cette ligne qui contient le mot fouille dans
le fichier :

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


50

[user@user_desktop user]$grep -n fouille linux-


commande.html 902: Grep, la commande qui vous fouille
les fichiers

Le mot fouille se trouve à la ligne numéro 902 et c'est l'option -n qui nous a permis de connaître
ce numéro.
Une autre option très utile est -l qui permet de n'afficher que les noms des fichiers contenant ce
que l'on cherche :
[user@user_desktop user]$grep -l fouille /home/user/personnel/html/*
/home/user/personnel/html/linux-commande.html

Ici, j'ai demandé à la commande grep de chercher l'occurence "fouille" dans les fichiers du
répertoire /home/user/personnel/html/. Le résultat est le nom des fichiers qui contiennent
l'occurence. Ici, seul le fichier "linux-commande.html" dans le répertoire contient le mot
"fouille". Quelques-unes des autres options :
-c donne le nombre de fois où l'expression rationnelle a été rencontrée dans le fichier :
[user@user_desktop user]$ grep -c fouille linux-commande.html
10

-n est utile lorsque vous cherchez une expression rationnelle qui commence par un tiret car si
vous n'utilisez pas l'option -n, grep la considèrera comme une option !

1.12. LES LIENS (LN)

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.

(1) On doit distinguer deux sortes de liens :


 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 :
[user@user_desktop personnel]$ln linux-test /home/user/linux-test-lien-dur
le fichier linux-test-lien-dur est créé dans le répertoire /home/user. 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 linuxtest-lien-dur et linux-test sont sur le même espace (ou inode)
sur le disque dur lorsqu'on les appelle.
SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG
51

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.
 Les liens symboliques :
Si nous faisons maintenant un lien symbolique :
[user@user_desktop personnel]$ln -s linux-test /home/user/linux-test-lien-symb
Faites un ls -F dans le répertoire /home/user, vous verrez que le fichier linux-test-lien-
symb est précédé du signe "@". Ce fichier pointe sur linux-test. Si vous avez fait un
peu de programmation en C, nous retrouvons le concept de pointeur. Quand on appelle
le fichier linux-test-lien-sym, il va automatiquement se diriger vers le fichier linux-test.

(2) Quels sont les points communs entre les liens symboliques et les liens durs
?
Le lien symbolique fait référence à un fichier dans un répertoire alors que le lien dur fait
référence à un espace sur le disque dur :
Les liens symboliques sont des fichiers de petite taille qui ont une existence propre sur le disque
dur. Ces fichiers contiennent les références des fichiers sources auxquels ils correspondent.
Dans le cas d'un lien dur, la suppression de l'un des deux fichiers n'affectera pas l'autre. Dans
le cas d'un lien symbolique, la suppression du fichier source entraînera un changement de
comportement du fichier lien qui ne correspondra plus à un fichier valide et sera donc dit
"cassé" ("broken").

(3) Utilité des liens


Les liens sont utiles si vous souhaitez qu'un fichier apparaisse dans plusieurs répertoires, ou
sous un nom différent. Imaginez que ce fichier fasse quelques mégaoctets ... une copie à l'aide
"cp" entraînera une perte de place non négligeable alors qu'un lien permettra de limiter
l'utilisation de l'espace disque. Mieux : un lien garanti que toute modification effectuée sur ce
fichier concernera toutes les apparentes « copies » dispersées.

(4) Syntaxe de ln :
ln fichier-source fichier-lien ln -s permet d'effectuer un lien symbolique.
ln –b réalise une sauvegarde d'un fichier existant et dont nous aurions utilisé le
nom avant de l'écraser.
ln –i demande à l'utilisateur s'il souhaite écraser le fichier qui a un lien sur le fichier
source au cas ou celui-ci existerait déjà.
ln –d effectue des liens durs sur des répertoires ... seuls les utilisateurs
possédant les droits adéquats pourront le faire.

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


52

1.13. LE COMPACTAGE ET LE DÉCOMPACTAGE DES FICHIERS AU


FORMAT .GZ : LA COMMANDE GZIP

Pour compacter un fichier, taper la commande suivante :


[user@user_desktop user]$ gzip non_du_fichier

Pour décompacter un fichier, taper la commande suivante :


[user@user_desktop user]$ gzip -d non_du_fichier.gz

1.14. LE DÉCOMPACTAGE DES FICHIERS AVEC LA COMMANDE


UNCOMPRESS

Si vous rencontrez un fichier au format .Z ( un autre type de compression plus ancien, et moins
performant), vous pouvez aussi utiliser gzip -d.

1.15. ARCHIVAGE DE DONNÉES : LA COMMANDE "TAR"

La commande tar permet d'archiver ou de désarchiver des répertoires et des fichiers de façon
optimale.

Une des commandes dont vous aurez certainement le plus besoin est :
[root@user_desktop /]# tar xzf nom_du_fichier.tar.gz

Cette commande décompacte un fichier au format .tar.gz ou .tgz ; vous rencontrerez


régulièrement ce genre de fichier en voulant par exemple récupérer des logiciels pour linux sur
l'Internet. Le format .tar.gz indique que le fichier est en réalité une archive (.tar), c'est-à-dire
que le fichier contient en réalité plusieurs fichiers, et qu'il est compacté (.gz).

La commande précédente peut être ainsi comprise :


x (extract) permet d'extraire certains fichiers d'une archive (lorsque l'on ne
spécifie pas les noms des fichiers que l'on souhaite extraire de l'archive, tar les
extrait tous). z décompacte l'archive f extrait un fichier donné (ici le
fichier est nom_du_fichier.tar.gz).

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


53

Une autre commande permet de connaître la liste des fichiers contenus dans un fichier .tar.gz
ou tgz :
[root@user_desktop /]#tar tvzf nom_du_fichier.tar.gz t
affiche la liste des fichiers contenus dans une archive
tar.
v est le mode "verbose", qui affiche les noms des fichiers tel qu'ils ont été
archivés à l'origine.
C'est donc l'option t qui permet de voir comment les fichiers de l'archive seront désarchivés.

La commande suivante créera une archive de tout mon répertoire /home/user/personnel :


[user@user_desktop user]# tar cvfz personnel.tgz
personnel c indique à tar de créer une
archive
z indique a tar de compacter une archive

Ainsi tout mon répertoire personnel, avec les sous répertoires et tous les fichiers, se trouveront
rassemblés dans UN fichier archive : personnel.tgz

1.16. CONNAÎTRE L'ESPACE DISQUE UTILISÉ (DF ET DU)

La commande df permet de connaître l'emplacement de montage des systèmes de fichiers


(partitions utilisables pour stocker des fichiers) accessibles sur votre système et les capacités
restantes sur chacun d'eux.

[user@user_desktop user]$ df
Filesystem 1024-blocks Used Available Capacity Mounted on
/dev/sda5 298762 119387 163945 42% /
/dev/sda1 41166 17116 24050 42% /dos
/dev/sda6 1745186 1163946 491042 70% /usr
[user@user_desktop user]$

La commande du permet de connaître l'utilisation disque en kilo-octet par le répertoire spécifié


et ses sous répertoires.

[user@user_desktop html]$ du
56 ./config
224 ./images

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


54

185 ./commandes
28 ./.xvpics
2 ./docs/preparation_debutantlinux
203 ./docs 875 .
[user@user_desktop html]$

1.17. CONTRÔLER LES RESSOURCES UTILISÉES PAR LES PROCESSUS

(1) La commande "top" :


La commande top vous permet d'afficher des informations en continu sur l'activité du système.
Elle permet surtout de suivre les ressources que les processus utilisent (quantité de RAM,
pourcentage de CPU, la durée de ce processus depuis son démarrage).

Vous pourrez utiliser l'option -d pour spécifier des délais de rafraîchissement (en secondes).
En cours d'utilisation de top, il est possible de stopper un process de manière interactive en
tapant k. top demande ensuite quel signal il doit envoyer : 15 (SIGTERM) est le signal par
défaut qui met fin à un process, 9 (SIGKILL) est plus brutal.

Pour quitter top, appuyer simplement sur la touche "q".

(2) La commande "ps" :


La commande ps permet de connaître les processus actifs à un moment donné :
[user@user_desktop user]$ ps
PID TTY STAT TIME COMMAND
341 p1 S 0 : 00 bash
344 p2 S 0 : 00 bash
1039 p3 S 0 : 00 bash
1219 p3 R 0 : 00 ps

Le "PID" est l'identificateur d'un processus, c'est un nombre. Chaque processus est identifié
dans le système par un nombre unique.

Le "TTY" indique à quel port de terminal est associé le processus.

"STAT" indique l'état dans lequel se trouve le processus. Dans l'exemple, trois processus sont
endormis (S comme "sleep"), et un processus en cours d'exécution (R comme "run"). Le
processus qui est en cours d'exécution n'est autre que la commande "ps" que nous venons de
lancer.

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


55

Le "TIME" indique depuis combien de temps le processus utilise les ressources du


microprocesseur.

Le "COMMAND" précise, comme son nom l'indique, la commande dont l'état est décrit par
PID, TTY, STAT et TIME.

Ceci dit, une simple commande "ps" n'indique pas tous les processus du système. Le simple
fait de lancer ps nous a juste indiquer les processus associés à un terminal et qui dépendent de
l'utilisateur courant (ici "user").

En fait, il est tout a fait probable que d'autres processus non liés à un terminal aient été lancés
par "user".

J'en suis d'ailleurs sur, puisque actuellement j'utilise emacs pour réaliser une page de test et que
pour visualiser le résultat, j'utilise netscape : [user@user_desktop user]$ ps -x
PID TTY STAT TIME COMMAND
240 ? S 0:01 /usr/X11R6/bin/fvwm2
246 ? S 0:00 /usr/X11/bin/xautolock -corners ++++ -time 5 -locker /usr/X
247 ? S 0:00 /usr/X11/bin/unclutter -idle 3
253 ? S 0:00 /usr/local/bin/Periodic
254 ? S 7:34 emacs --background grey79 -geometry 80x58+-4+-11
257 p0 S 0:00 bash
258 p2 S 0:00 bash
259 p1 S 0:00 bash
272 ? S 0:00 /usr/lib/emacs/19.34/i386-gnu-linux/emacsserver
2134 ? S 0:00 /usr/bin/ispell -a -m -d francais
6431 p0 S 1:03 /usr/lib/netscape/netscape-navigator
6441 p0 S 0:00 (dns helper)
6741 p0 R 0:00 ps -x

Les commandes qui ne sont pas associées à un terminal sont reconnaissable par le point
d'interrogation qui rempli le champs TTY.

Si vous voulez connaître tous les processus de la machine de tous les utilisateurs, il suffit
d'utiliser l'option ax. Si en plus vous voulez connaître les utilisateurs associés à chaque
processus, il vous suffit d'utiliser l'option aux. Vous verrez alors plusieurs colonnes s'ajouter
dont "USER" qui indique à quel utilisateur appartient le processus. "%CPU" indique en
pourcentage les ressources du microprocesseur utilisées par le processus. "%MEM" montre en

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


56

pourcentage les ressources en mémoire vive utilisées par le processus. "RSS" donne réellement
la mémoire utilisée en kilobytes par le processus. "START" indique l'heure à laquelle le
processus a été lancé.

(3) La commande "pstree" :


Cette commande permet d'afficher les processus sous forme d'arborescence et donc de voir
leurs interdépendances :
[user@user_desktop user]$ pstree
init-+-crond
|-emacs---emacsserver
|-gpm
|-inetd
|-kerneld
|-kflushd
|-klodg
|-kswapd
|-loadmeter
|-lpd
|-6*[mingetty]
|-named
|-netscape---netscape
|-4*[nfsiod]
|-nxterm---slrn-gor---slrn
|-portmap
|-pppd |-rc.news---innwatch---sleep
|-rpc.mountd
|-rpc.nfsd
|-rpc.yppasswdd
|-sendmail
|-syslogd
|-update
|-xconsole
|-xdm-+-X
| `-xdm---Xsession---fvwm---FvwmPager
|-xterm---bash---su---bash---tail
|-2*[xterm---bash]
|-xterm---bash---pstree
\ -ypserv

On voit par exemple ici que j'utilise Fvwmpager qui dépend en fait lui-même de fvwm et lui
même dépend de Xwindow ici lancé grâce à xdm (vous n'obtiendrez pas la même chose que

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


57

moi si vous lancez Xwindow grâce à la commande startx, en effet xdm permet de lancer
automatiquement Xwindow au démarrage de linux).

(4) La commande "kill" :


La commande "kill" permet d'expédier un signal à un
processus en cours. Sa syntaxe est la suivante : kill [options]
PID

Par exemple, si j'ai lancé une connexion à l'Internet en PPP, un processus pppd sera en cours.
Pour tuer le processus, je peux d'abord faire un ps -ax pour connaître le numéro du PID de
pppd et ensuite si par exemple le PID est 592, je peux tuer la connexion en faisant :
[root@user_desktop user]# kill 592

Vous remarquerez que je suis logué en utilisateur "root" pour faire ceci, en effet le processus
pppd appartenait à l'utilisateur "root" et un autre utilisateur ne peut pas lui expédier de signal.

Si un processus vous résiste, c'est à dire que vous n'arrivez pas à le tuer, vous devez utiliser la
commande : kill -9 PID (PID étant toujours le numéro de de processus).

La commande "killall" permet aussi de tuer un processus mais au lieu d'indiquer le PID vous
indiquerez le nom du processus.

Mais attention, plusieurs processus peuvent utiliser la même commande. Ainsi, si vous tapez
:
[user@user_desktop user]# killall grep
Vous tuerez tous les processus qui contiennent la commande grep. Je vous recommande donc
d'utiliser l'option "-i" qui vous demande une confirmation avant de tenter d'arrêter un processus.

2. LA CONNEXION DE PLUSIEURS COMMANDES : LES PIPES

Qu'est-ce qu'un "pipe" (parfois appelé « tube ») ? Si on le décrit ce n'est rien d'autre que cette
barre verticale que vous pouvez obtenir avec la combinaison de touches "Altgr + 6" sur les
clavier français classiques, ou "Altgr + 1" sur les claviers franco-belges. Un tube permet de
passer le résultat d'une commande à autre commande.

Un exemple permettra de comprendre tout cela beaucoup plus facilement :

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


58

Je veux savoir quels sont tous les processus "bash" qui fonctionnent sur le système, mais je
veux que la commande ps aux ne me fournisse les lignes que les lignes qui contiennent le mot
"bash" pour m'eviter d'avoir à parcourir toute la longue liste qu'affiche ps aux :
[user@user_desktop html]$ ps aux | grep bash
user 367 0.0 1.8 1600 568 p2 S 18 : 14 0 : 00 bash user
426 0.0 2.2 1624 704 p3 S 18 : 17 0 : 00 bash user 1261
0.0 2.2 1608 692 p6 S 21 : 22 0 : 00 bash user 1332 0.0
2.4 1616 772 ? S 21 : 41 0 : 00 bash
user 1582 0.0 2.7 1604 844 p8 S 22 : 30 0 : 00 bash -rcfile .bashrc
user 2796 0.0 0.9 908 300 p3 S 02 : 17 0 : 00 grep bash root
1162 0.0 2.1 1596 664 ? S 21 : 06 0 : 00 bash

On peut dire que l'on a "connecté" deux commandes entre elles. Mais vous pouvez ainsi en
connecter autant que vous voulez en utilisant cette syntaxe :
commande1 | commande2 | commande3 ... | commandeN Si on se rend compte de l'utilité
des pipes, progressivement on les utilise et on fini par ne plus s'en passer.

2.1. LES REDIRECTIONS

Quand on parle de redirection, on parle plus précisément de la redirection des entrées-sorties


que traitent ou engendrent les programmes. Par exemple, lorsque vous tapez des commandes
au prompt de linux, vous effectuez une entrée de caractère grâce au clavier et linux vous donne
une sortie en vous donnant à l'écran le résultat de votre commande. Mais l'entrée de données
peut se faire autrement que par le clavier, en indiquant par exemple un fichier qui contient des
données à traiter. La sortie peut aussi s'effectuer ailleurs que sur l'écran, sur l'imprimante par
exemple.

Ainsi, lorsque nous parlons des entrées sorties, nous parlons aussi des périphériques de
l'ordinateur. On considérera que les périphériques sont des fichiers a part entière car, sous
UNIX, des fichiers spéciaux permettent l'accès aux périphériques se trouvent dans le répertoire
/dev. Dans la plupart des cas ce que l'on y copie va vers le périphérique.

Mais comment faire pour rediriger une entrée ou une sortie ?


Comment faire par exemple pour que la commande cat qui affiche un fichier à l'écran, sorte
plutot le fichier dans un autre fichier ou vers une imprimante ? C'est le signe > qui va nous
permettre de réaliser ceci.

Il est temps de prendre un exemple....

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


59

Dans un premier cas, je veux que linux m'affiche le fichier test à l'ecran :
[user@user_desktop user]$ cat test
Vous allez voir s'afficher à l'écran le fichier test.

Dans un deuxième cas, je veux que linux place le fichier test dans un fichier test2 au lien de
l'afficher à l'écran :
[user@user_desktop user]$ cat test > test2

Dans un troisième cas, je veux que linux imprime le fichier au lieu de l'afficher à l'écran :
[user@user_desktop user]$ cat test > /dev/lp0

Quelques constats s'imposent :


1- La sortie sur un autre fichier n'est rien d'autre avec la commande cat qu'une copie du
fichier "test" en "test2". La commande cp nous permet aussi de faire cela.
2- Dans la redirection vers l'imprimante nous avons indiqué le fichier spécial /dev/lp0 qui
correspond au port LPT1 où est connectée mon imprimante.

La commande cat affiche son résultat vers la sortie standard qui est le terminal.

Par défaut le terminal est la sortie standard, ce descripteur de fichier est désigné par le
chiffre "1" L'entrée standard dans un système UN*X est le clavier et est désigné par le
chiffre "0".

Il existe un troisième descripteur de fichier qui est la sortie des erreurs produites par
l'exécution d'une commande.

La sortie des erreurs se fait par défaut sur le terminal et est désigné par le chiffre "2".

Plusieurs types de redirection existent :


"> fichier" qui permet de rediriger le résultat d'une commande vers une sortie que
nous choisissons.
"< fichier" permet de spécifier une entrée standard.
">> fichier" permet comme le signe ">" de rediriger la sortie standard vers un
fichier, mais si le fichier spécifié existe déjà, la sortie sera ajouté à ce
qui existe déjà dans le fichier alors qu'avec un simple "> le fichier
spécifié serait écrasé.
"<> fichier" permet de spécifier un fichier comme étant en même temps l'entrée
standard et la sortie standard.

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


60

"n> fichier" permet de rediriger la sortie d'un des descripteurs de fichiers vers un
fichier. Par exemple, si vous souhaitez obtenir les erreurs standard
dans un fichier vous n'aurez qu'à utiliser cette syntaxe : commande 2>
erreurs
"n< fichier" permet de spécifier un fichier comme étant un des descripteurs de
fichier.
">&n" permet de dupliquer la sortie standard vers un des descripteurs de
fichier.
"<&n" permet de dupliquer l'entrée standard depuis un des descripteurs de
fichier.
"&> fichier" permet de rediriger la sortie standard et l'erreur standard vers un seul
et même fichier.

À première vue, on se demande bien à quoi peut servir certaines des redirections ?

On les découvre au fur et à mesure, mais une des plus utiles est 2>&1 qui permet de rediriger
les erreurs vers la sortie standard. Elle est très appréciée des utilisateurs lorsque par exemple
ceux-ci n'arrivent pas à lancer l'interface X-Window. Il est alors courant de recourir à la
commande suivante afin d'obliger X à placer tous ses messages dans un fichier nommé
erreursX que l'on pourra consulter ensuite à loisir : [user@user_desktop user]$ startx 2>&1
erreursX.tmp

3. BASH ET SES CAPACITÉS

Le but de cette section n'est absolument pas d'expliquer la programmation et la configuration


bash (loin de moi cette prétention ....), pour apprendre le bash, la lecture de « Le Shell Bash,
configuration et programmation » (voir le site : http://www.editions-oreilly.fr) est fortement
recommandée (sinon consultez la page de manuel sur bash "man bash").

Le shell bash, comme les autres shells (korn shell, C shell), permet ce qui a été vu
précédemment, c'est-àdire de lancer des commandes, de créer des pipes, de connecter par pipes
des commandes ...

Mais avec les commandes décrites depuis le début de ce document et à l'aide d'une syntaxe
proche de celle des langages de programmation courants comme le C ou le Pascal, on peut
réaliser des scripts permettant d'automatiser certaines tâches. Nous n'allons pas décrire ici en
détail ce langage de programmation mais simplement montrer quelques exemples.

Un exemple, on utilise souvent cette syntaxe pour décompresser et désarchiver un fichier au


format fichier.tar.gz :

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


61

gzip -dc fichier.tar.gz | tar xfBp -


(On peut aussi utiliser uniquement les options de la commande tar pour réaliser ceci.)

Il est assez pénible d'avoir à taper systématiquement cette longue


commande. Un script bash peut simplifier les choses :
#!/bin/bash
gzip -dc $1 fichier.tar.gz | tar xfBp –

On enregistre ensuite le fichier sous le nom "montar" puis on le rend exécutable grace à la
commande suivante : chmod +x montar, pour décompressez un fichier il vous suffira de taper
ceci : montar fichier.tar.gz

Quelques remarques : ¾ Tout script bash doit commencer à la première ligne par une
invocation du shell : #!/bin/bash
¾ les paramètres passés sur la ligne de commande par l'utilisateur du script sont pour ce
dernier des variables nommées : $1 pour le premier, $2 pour le deuxième, $3 pour le
troisième, etc. $0 étant la variable représentant le nom de la commande.

Voila qui simplifie déjà suffisamment la vie.

Nous pourrions améliorer ce script en voyant d'abord de quoi est composé le fichier.tar.gz avant
la décompression.
#!/bin
/bash
tar
tvzf
$1
gzip -dc $1 | tar xfBp -

Il serait cependant plus utile de pouvoir accepter ou non le désarchivage du fichier selon les
informations fournies par la commande tar tvzf :
#!/bin
/bash
tar
tvzf
$1
echo -n "Voulez vous désarchiver l'archive ? (o/n) : "
read archi if [ $archi = "o" ] then
gzip -dc $1 | tar
xfBp – else exit fi
SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG
62

La commande echo permet d'afficher un message sur la console, et l'option n permet de ne pas
faire de retour chariot en fin de ligne.
La commande read attend une réponse de l'utilisateur, ici la réponse sera stockée dans la
variable archi.
Les crochets ([ ]) encadrent tous types d'expression.
Enfin, la condition if permet de tester la valeur de la réponse donnée par l'utilisateur.

Voici la construction typique de


l'instruction if :
if condition then
instruction else
instruction
fi

Si vous souhaitez insérer plusieurs conditions "if" utilisez la


syntaxe suivante : if condition then instruction
elif condition then instruction else instruction
fi

Nous pourrions utiliser aussi un menu qui nous permettrait de choisir entre une décompression
immédiate ou une visualisation du contenu de l'archive :
#!/bin/bash
PS3='votre
choix ?'
select choix in "tar tvzf" "tar xvzf"
do $choix $1; done

La construction select permet de générer des menus avec une grande facilité.

PS3 est une variable qui permet de stocker une chaîne d'invite qui est utilisée par select.
"choix" est le nom de la variable qui contiendra un des éléments de la suite qui suit le mot clé
in. Dans notre cas, "choix" contiendra soit la chaîne "tar tvzf" ou la chaîne "tar xvzf".
Dans la construction do... done, nous placons les commandes que nous voulons executer. Ici
"$choix" contiendra donc soit "tar tvzf" soit "tar xvzf" et "$1" contiendra l'argument (ici le nom
du fichier compressé) que l'on aura indiqué à l'execution de notre script.

Si notre script s'appelle "ctgz", son exécution se déroulera ainsi :

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


63

[user@user_desktop binaire]$ ./ctgz fichier.tar.gz


1) tar tvzf
2) tar xvzf
Votre choix ?
L'utilisateur n'a plus qu'à taper "1" ou "2".
select nom [in
liste] do
instructions utilisant la $nom
done

Comme pour tout langage de programmation, bash contient des instructions de répétition :
La boucle for permet de réaliser une instruction un nombre de fois précis. Sa syntaxe est très
proche de celle de select :
for nom [in
liste] do
instructions utilisant $nom
done

exemple :
#!/bin/b
ash for
fichier
in $@
do
tar tvzf
$fichier done

Ce petit script permet de regarder le contenu de plusieurs fichiers compressés. $@ contient la


liste des fichiers que l'utilisateur aura spécifié en argument de la ligne de commande :
[user@user_desktop binaire]$ ./utgz5 fichier1.tar.gz fichier2.tar.gz

La boucle while ainsi que la boucle until effectue la même chose que for à la différence que
celle-ci répète une instruction tant que (while) ou jusqu'à ce que (until) une condition soit
vérifiée.

Voici un exemple avec la boucle until :


#!/bin/bash until tar tvzf $1;
do echo "tentative de
decompression" done

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


64

Avec cette boucle, tant que le fichier n'aura pas pu être décompressé et désarchivé, la
commande tar sera répétée indéfiniment ... pour sortir de la boucle utilisez la combinaison de
touches Ctrl-c.

Avec ces quelques structures de contrôle on voit bien la simplification des tâches quotidiennes
que bash peut permettre, au prix d'un effort réduit.

(1) La personnalisation des variables d'environnement :


bash contient des variables qui permettent d'adapter son environnement à ses besoins :
Il existe un fichier qui met en place une grande partie des variables d'environnement : le fichier
.bash_profile (ou .profile).
Pour que les variables d'environnement soit prises en compte vous devez vous reloguer sur
votre compte(avec la commande "su - nom_utilisateur (si vous avez modifié le .bash_profile)
ou alors passer les variables directement en ligne de commande (dans ce cas, les variables ne
seront pas enregistrées dans le .bash_profile).

Vous trouverez par exemple la variable PATH qui définit les chemins existant pour les
exécutables. Si par exemple, votre chemin PATH est de la forme :
PATH=$PATH:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
et que vous souhaitez ajouter dans ce chemin un répertoire /home/user/binaire qui contient
votre script bash ou vos programmes personnels, il vous faudra ajouter ce chemin à la variable
PATH :
PATH=$PATH:/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/home/user/bi
naire (Notez la présence de ":" entre chaque nom de répertoire).

La variable PS1 contient la forme de votre invite :


PS1="[\u@\h \w]" affichera votre nom d'utilisateur (\u); "@"; le nom de la machine (\w); un
espace; le répertoire de travail courant (\w). Voilà ce que cela donne :
[user@user_desktop /usr/X11]

Voici une autre configuration d'invite qui contient quasiment toutes les options
possibles : PS1="[\t \d \u@\h \w \$]" ce qui donne :
[21 : 47 : 13 Sun Apr 26 user@user_desktop /usr/X11 $]

Une autre variable utile est MAIL. Normalement, vos mails arrivent dans le répertoire
/var/spool/mail/nom_utilisateur

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


65

Vous pouvez placer cette variable dans votre .bash_profile avec cette forme :
MAIL=/var/spool/mail/nom_utilisateur

(2) Les alias


Les alias sont une des choses les plus pratiques qui soient. Régulièrement on utilise les mêmes
commandes avec parfois de nombreuses options. Les alias se placent habituellement dans le
fichier de configuration .bashrc. Voici un exemple classique d'alias :
alias l="ls --color=auto"
Avec cet alias, vous n'aurez plus besoin de spécifier systématiquement l'option "--color" qui
permet de lister en couleur le contenu d'un répertoire. Il vous suffira simplement de taper l'alias
"l".

Ainsi, le mini script que nous avions réalisé au début de cette section pourrait aussi se faire
grâce à un simple alias : alias montar="tar xvzf"

4. ORGANISATION DES RÉPERTOIRES

Voici l'arborescence d'un système UNIX classique :


/ est le répertoire racine, tous les autres répertoires en dépendent. Par exemple
le répertoire où est "monté" mon CD-ROM est sur /mnt/cdrom. On n'a donc
pas comme sous MS-DOS, différentes lettres qui correspondent à différents
lecteurs distincts physiquement. Les lecteurs sont harmonieusement montés
en répertoires dans l'arborescence UNIX.
/bin contient les binaires fondamentaux à la gestion de Linux. On y retrouve par
exemple les commandes précédemment étudiées.
/dev contient une multitude de fichiers dits spéciaux. L'un deux correspond à mon
modem. Je dois indiquer ce fichier dans la configuration de mes outils de
communication.
De même /dev/hda1 correspond à la première partition de mon disque dur
IDE, si mon disque dur est un SCSI, son nom sera /dev/sda1. Un dernière
exemple : /dev/fd0 correspond à mon lecteur de disquettes. Pour une
application, allez voir la "section consacrée à mount".
/etc contient tous les fichiers de configuration de linux. On y retrouve par exemple
le fichier /etc/passwd, qui définit les mots de passe des utilisateurs.
/sbin contient les binaires du système. On y trouve par exemple la commande
shutdown qui permet d'arrêter l'ordinateur.
/home est le répertoire qui contient les répertoires des utilisateurs du système. Le
répertoire des utilisateurs est automatiquement créé avec la création d'un
compte. J'ai par exemple dans mon ordinateur un compte que j'utilise en
permanence (comme maintenant, pendant la rédaction de ce petit guide), tous
mes fichiers personnels sont dans /home/user. J'ai un autre utilisateur de ma

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG


66

machine, lui se logue en tant que « gorka ». Il stocke ses fichiers dans le
répertoire /home/gorka).

/lost+found est le répertoire des fichiers perdus. Ces fameux fichiers qui, du fait d'erreur
disque, se retrouvent sans chemin d'accès. Le binaire fsck, qui est lancé
régulièrement au démarrage de linux, se charge de les détecter et de les
stocker dans le répertoire /lost+found
/tmp est un répertoire accessible par tous les utilisateurs du système, il permet de
ne pas encombrer son répertoire personnel par des fichiers que l'on souhaite
de toute manière rapidement détruire ou modifier.
/var/spool est le répertoire des fichiers qui servent de file d'attente. Par exemple, les files
d'attente de l'imprimante se trouvent sous ce répertoire. Les données à
imprimer, envoyer, ... sont stockées dans ces files d'attentes jusqu'à ce qu'elles
soient traitées.
/usr contient grosso modo tout ce qui concerne les binaires utiles à tous les
utilisateurs et quelques commandes d'administration. On y trouve cependant
d'autres choses :
/usr/bin contient donc les binaires disponibles pour les utilisateurs et les scripts.
/usr/X11R6 contient tout ce qui concerne Xfree86 (les bibliothèques, les
binaires, la documentation).
/usr/include contient tous les "headers" nécessaires à la programmation dans
les différents langages.
/usr/lib contient toutes les bibliothèques nécessaires au fonctionnement des
logiciels. (comme par exemple la bibliothèque C ou C++ ou
tcl/tk).
/usr/local on y met ce qu'on veut, mais surtout les fichiers d'usage local. J'y
place les logiciels qui ne sont pas habituellement livrés avec
linux et que j'ai trouvés sur l'Internet ou sur des CD-ROM de
journaux.

SUPPORT GL ET RS 2 INSAM CHARLES HERBERT AMBADIANG

Vous aimerez peut-être aussi