Вы находитесь на странице: 1из 61

Introduction Linux

2008-07

GAUTHIER CATTEAU ARMANDO MARTINS

Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/

Table des matires

Table des matires I - Prsentation de GNU/Linux


A. Qu'est-ce que le mouvement GNU ?...................................................11 B. Qu'est-ce qu'un logiciel libre ?...........................................................12 C. Linux, juste le noyau !.....................................................................12 D. Qu'est ce qu'une distribution ?..........................................................13 E. quoi sert vraiment un systme d'exploitation ?.................................13 F. Un systme d'exploitation multiplateforme..........................................14

3 11

II - Dcouverte du systme d'exploitation GNU/Linux


A. Ou trouver votre distribution ?..........................................................15 B. Installation depuis un LiveCD............................................................16 C. Les sessions utilisateurs...................................................................18 D. Les Bureaux Virtuels........................................................................18 E. Prsentation des gestionnaires de fentres.........................................19

15

III - Les applications disponibles


A. Les application de Bureautique..........................................................23 B. Les outils Graphiques.......................................................................23 C. Les outils pour internet....................................................................23 D. Les applications Multimdia..............................................................23 E. Les outils de virtualisation................................................................23

23

IV - Installation des applications et mise jour du systme. 25

Gauthier Catteau - Armando Martins

A. Comment ajouter des applications ?..................................................25 B. Mise jour du systme et des applications.........................................26 C. Synaptic.........................................................................................27 D. L'application Ajouter/enlever. . . ..................................................28 E. Comment scuriser son Linux ?.........................................................28

V - Regardons un peu sous le capot.


A. Introduction....................................................................................31 B. Systmes de fichiers........................................................................31 C. Les diffrentes catgories de fichiers.................................................32 D. O sont mes disques ?.....................................................................33 E. Explication de l'arborescence des fichiers............................................33 F. Point de montage............................................................................34 G. O sont enregistres mes prfrences ?.............................................35 H. Gestion des droits...........................................................................35 I. Le run level, ou niveau de fonctionnement..........................................37 J. Les Scripts systmes........................................................................37

31

VI - Gestion Avance
A. Gestions des utilisateurs et des groupes.............................................39
1. 2. 3. 4. 5. 6. Introduction......................................................................................39 Liste des utilisateurs "/etc/passwd"......................................................39 Le fichier des mots de passe chiffrs "/etc/shadow"................................40 Modifier un compte ou mot de passe existant........................................40 Liste des groupes "/etc/group"............................................................40 Cration de comptes..........................................................................41

39

B. Planification de tches : cron et atd...................................................41


1. 2. 3. 4. 5. Introduction......................................................................................41 Cron................................................................................................41 Les fichiers de cron............................................................................42 Format d'un fichier "crontab"...............................................................42 Emploi de la commande "at"...............................................................43

C. L'accs distance par SSH...............................................................44


1. 2. 3. 4. 5. 6. Introduction......................................................................................44 Mise en garde sur la scurit...............................................................44 Installation et configuration de SSH......................................................44 Se connecter par SSH.........................................................................45 Transfert de fichiers par SSH...............................................................46 Se connecter par SSH sans taper de mot de passe.................................46

VII - Bash : l'interprteur de commandes

49

Gauthier Catteau - Armando Martins

A. Bash..............................................................................................49 B. Les principales commandes console (BASH) sous Linux........................51 C. Mon premier script..........................................................................53 D. Quelques conseils concernant les commentaires..................................54 E. Le passage de paramtres................................................................54 F. Les variables...................................................................................55 G. Protection des expressions...............................................................56 H. Structures de contrle.....................................................................58
1. Slection d'instructions.......................................................................58 2. Itrations d'instructions......................................................................61

VIII - Conclusion

63

Gauthier Catteau - Armando Martins

Objectifs

Permettre un utilisateur Linux de se familiariser l'utilisation et la personnalisation d'un systme Linux.

Gauthier Catteau - Armando Martins

Introduction

Ce support ne saurait tre considr comme un travail achev ou suffisant pour un autoapprentissage. Il s'agit de notes organises destines accompagner le cours, ainsi que les activits de TD et TP, d'Introduction Linux. Il n'est certainement pas exempt d'erreurs et j'invite les lecteurs, tudiants et enseignants, me faire part de leurs remarques pour m'aider dans ce travail sans fin d'amlioration de ce support. Cette formation ne fera pas de vous un matre incontest de GNU/Linux , mais vous guidera dans vos premiers pas sous Linux pour que vous sachiez l'installer, ajouter de nouveaux logiciels, et l'utiliser quotidiennement. De plus, cette formation constitue une bonne introduction une comprhension plus avance du systme d'exploitation et vous donnera les clefs pour aller plus loin, si vous le dsirez. . .

Gauthier Catteau - Armando Martins

Prsentation de GNU/Linux
I -

I
11 12 12 13 13 14

Qu'est-ce que le mouvement GNU ? Qu'est-ce qu'un logiciel libre ? Linux, juste le noyau ! Qu'est ce qu'une distribution ? quoi sert vraiment un systme d'exploitation ? Un systme d'exploitation multiplateforme

Avant d'entrer dans le vif du sujet une prsentation dUbuntu Linux de la philosophie en gnral peut sembler ncessaire. En effet, malgr la mdiatisation grandissante du mouvement du Libre, de nombreuses personnes assimilent le Libre la gratuit. Si vous pensez encore que ces deux notions sont quivalentes, vous verrez qu la n de ce chapitre, votre avis aura chang et vous mesurerez plus prcisment les diffrences entre Libre et propritaire, ainsi que les enjeux qui en dcoulent.

A. Qu'est-ce que le mouvement GNU ?

Image 1 : Richard Matthew Stallman En 1984, Richard Matthew Stallman, chercheur en informatique du MIT quitte son poste et se consacre lcriture dun systme dexploitation Libre du nom de GNU . Il annonce lanne suivante la cration de la FSF an de supporter ce projet. C'est durant ces annes qu'il crit ce qui deviendra les prceptes du Logiciel Libre. La concrtisation en est la publication en 1989 de la premire version de la licence GPL qui sera alors le fondement thique, juridique et politique du mouvement du Libre.

Complment
Plus dinformation sur le mouvement GNU sur le site http://www.gnu.org/ .

Gauthier Catteau - Armando Martins

11

Prsentation de GNU/Linux

B. Qu'est-ce qu'un logiciel libre ?


L'expression Logiciel Libre fait rfrence la libert et non pas au prix. Pour comprendre le concept, vous devez penser la libert d'expression , pas l'entre libre . L'expression Logiciel Libre fait rfrence la libert pour les utilisateurs d'excuter, de copier, de distribuer, d'tudier, de modifier et d'amliorer le logiciel. Plus prcisment, elle fait rfrence quatre types de libert pour l'utilisateur du logiciel :

Dfinition
Libert 0 La libert d'excuter le programme, pour tous les usages. Libert 1

La libert d'tudier le fonctionnement du programme, et de l'adapter vos besoins. Pour ceci l'accs au code source est une condition requis. Libert 2

La libert de redistribuer des copies, donc d'aider votre voisin.

Libert 3 La libert d'amliorer le programme et de publier vos amliorations, pour en faire profiter toute la communaut. Pour se faire, l'accs au code source est une condition requise. Un programme est un Logiciel Libre si les utilisateurs ont toutes ces liberts . Ainsi, vous tes Libre de redistribuer des copies, avec ou sans modification, gratuitement ou non, tout le monde, partout. tre Libre de faire ceci signifie entre autre que vous n'avez pas demander ou payer pour en avoir la permission. Cela permet de garantir la Libert savoir ce qu'il se passe sur votre ordinateur, pouvoir changer de systme aisment par l'utilisation de formats ouverts , l'galit avoir accs un logiciel un prix bas ou gratuitement, et la Fraternit avoir le droit de redistribuer lgalement ses amis, ses logiciels. Vous devez aussi avoir la libert de faire des modifications et de les utiliser titre personnel dans votre travail ou vos loisirs, sans en mentionner l'existence.Si vous publiez vos modifications, vous n'tes pas oblig de prvenir quelqu'un de particulier ou de le faire d'une manire particulire. La libert d'utiliser un programme est la libert pour tout type de personne ou d'organisation de l'utiliser pour tout type de systme informatique, pour tout type de tche et sans tre oblig de communiquer ultrieurement avec le dveloppeur ou tout autre entit spcifique.

C. Linux, juste le noyau !


Au sens strict, Linux est le nom du noyau de systme d'exploitation libre, multitche, multiplate-forme et multi-utilisateur de type UNIX cr par Linus Torvalds, souvent dsign comme le noyau Linux. Le projet GNU arrive en 1991 avec de trs nombreux outils libres, mais il lui manque un lment central : le noyau. Cet lment est essentiel car il gre la mmoire, le microprocesseur, les priphriques comme le clavier, la souris, les disques durs. . .
Gauthier Catteau - Armando Martins

12

Prsentation de GNU/Linux

Image 2 : Linus Torvald C'est cette poque qu'un tudiant finlandais, Linus Torvalds, commence dvelopper un noyau et demande aux personnes intresses d'y contribuer. La licence GPL a t publie la mme poque et Linus Torvalds s'est laiss persuader de placer son noyau sous cette dernire. Le systme d'exploitation actuellement connu est donc un assemblage des outils GNU fonctionnant sur un noyau Linux, on parle donc de GNU/Linux avec le slash, / pour GNU sur Linux .

Dfinition
GNU/Linux est un systme d'exploitation compltement Libre et performant. Il est hautement configurable. Il ne dpend pas d'une multinationale. Il est support par une grande communaut d'utilisateurs souvent prts vous aider. Quelque soit votre domaine de comptence, vous pouvez participer l'amlioration de GNU/Linux pour que ce dernier volue dans votre intrt. Ce n'est pas un simple logiciel gratuit, mais un Logiciel Libre. Ce qui garantit qu'il restera accessible et gratuit pour tous, sans discrimination.

D. Qu'est ce qu'une distribution ?


En ralit, si on vous livrait le noyau Linux seul, accompagn des outils GNU de base, vous seriez bien avanc : pas d'interface graphique, juste quelques commandes, bref, votre systme d'exploitation serait inexploitable, un comble,non ? C'est pour cela qu'existe des distributions Linux qui contiennent le noyau Linux, les outils GNU, plus un ensemble de logiciels qu'elles ont choisi de supporter. Ceux-ci sont tests et compils pour vous. La plupart d'entre elles contiennent un systme d'installation de logiciel simplifi qui leur est malheureusement propre. Vous avez dj d voir qu'il existe de trs nombreuses distributions : Mandriva, Red Hat Fedora, Debian, Gentoo, OpenSuse, Ubuntu ... Alors pourquoi autant de distributions, me direz-vous ? En fait, chaque distribution a sa cible : certaines sont orientes sur la facilit d'utilisation,d'autres sont pour les vritables geeks , certaines sont spcialises pour l'utilisation dans le domaine scolaire ou musical, d'autres encore se veulent trs lgres et fonctionner sur des PC antdiluviens. . . Vous voyez qu'il peut y avoir autant de distributions que de cas d'utilisation !

E. quoi sert vraiment un systme d'exploitation ?


Il exploite ! Oui, mais qui allez-vous me dire ? En fait, il s'agit plutt de quoi : l'OS exploite votre matriel.

Gauthier Catteau - Armando Martins

13

Prsentation de GNU/Linux

Essayons d'imaginer le contraire : si le systme d'exploitation n'existait pas, tous les logiciels devraient tre conus pour tous les matriels existants. C'est dire que chaque programmeur devrait prendre en compte l'ensemble du matriel (carte graphique, type de mmoire RAM, disque dur, processeur. . .) ainsi que tous les priphriques ( clavier, souris, cran, imprimante. . .) existant ou ayant exist. De plus, la sortie d'un nouveau matriel, ce qui arrive par centaines quotidiennement, il faudrait alors le prendre en compte et sortir une nouvelle version de chaque logiciel ! J'ajouterai galement que cela prendrait une place en mmoire non ngligeable et normment de temps puisque ce travail serait dupliqu pour chaque logiciel! C'est donc la fonction principale d'un systme d'exploitation : il offre une double interface entre ce qui est capable de dialoguer dans la mme langue que le matriel et les logiciels installs sur la machine. Les logiciels installs, par consquent se moque compltement du type de matriel install de votre ordinateur : ils envoient des instructions comme affiche-moi cela , fais ceci et le systme d'exploitation, par le biais des drivers, fournit la bonne traduction dpendant du matriel.

Remarque
Le serveur X (Xorg ou Xfree) qui gre l'affichage de l'interface graphique est un cas particulier. Certaine personnes disent d'ailleurs que c'est un systme d'exploitation ...

F. Un systme d'exploitation multiplateforme


Linux est multiplateforme. Ce terme assez barbare veut tout simplement dire que Linux est disponible sur plusieurs types de machines ou architecture de processeur. Ainsi, on va pouvoir trouver Linux sur une machine de type P.C. tel que vous connaissez et que vous utilisez certainement, mais aussi sur les Macintosh, ou encore sur les super calculateurs. Voici les diffrentes architectures sur lesquels nous allons pouvoir installer notre Linux :

I386 et x86_64 (notre P.C.) POWERPC (Ancien Macintosh) AMD64 ARM HPPA ALPHA IA64 MIPS MIPSEL Et pour finir SPARC

14

Gauthier Catteau - Armando Martins

Dcouverte du systme d'exploitation GNU/ Linux


II -

II

Ou trouver votre distribution ? Installation depuis un LiveCD Les sessions utilisateurs Les Bureaux Virtuels Prsentation des gestionnaires de fentres.

15 16 18 18 19

A. Ou trouver votre distribution ?


Les distributions prinstalles Certains vendeurs quipent leurs ordinateurs directement avec l'OS GNU/Linux d'install, on appelle a des OEM (Original Equipment Manufacture) Les distributions payantes en magasin Certaines distributions de Linux peuvent tre achetes en magasin ( carrefour, fnac, surcouf, grosbill,...) entre autre:

Mandriva, qui existe aussi en version gratuite et libre, mais qui propose des versions payantes intgrant des pilotes propritaires (nvidia, ati, wifi,..) et des codecs. Red Hat est comme Mandriva disponible en version payante ou gratuite et libre, cette dernire s'intitulant Fedora Core

Suse, qui a adopt la mme mthode que les 2 autres: une version payante et une version gratuite et libre: Open Suse Par tlchargement La plupart des distributions GNU/Linux sont disponibles en libre tlchargement (sauf les versions payantes o il vous faudra videmment mettre la main au portefeuille avant de pouvoir les tlcharger lgalement) Vous trouverez le plus souvent les distributions tlchargeables sur leurs sites respectifs. Vous pouvez aussi trouver les liens vers ces fichiers sur un de ces sites: Distrowatch http://www.distrowatch.com QuebecOs http://www.quebecos.com/modules/wfdownloads/ Avec de la documentation Bien souvent, les magazines ayant pour thme Linux comportent des DVDs, comportant souvent des distributions linux et des logiciels. Ce type de magazine cote un peu prs 10, l'installation de la distribution et les premiers pas tant

Gauthier Catteau - Armando Martins

15

Dcouverte du systme d'exploitation GNU/Linux

souvent expliqus dans le magazine.

B. Installation depuis un LiveCD


Maintenant que vous avez tlcharg et grav votre distribution Linux sur un cdrom, vous pouvez "booter" votre ordinateur sur le lecteur de cdrom.

Image 3 : cran de dmarrage (en anglais !)

Image 4 : Choisissez ici votre langue

Image 5 : C'est mieux en franais ?

16

Gauthier Catteau - Armando Martins

Dcouverte du systme d'exploitation GNU/Linux

Image 6 : Dtection du matriel en cours

Image 7 : Lancement de l'interface graphique

Image 8 : Lancement de l'interface graphique.

Remarque
Dans notre cas, nous allons dmarrer notre machine virtuelle et "booter" sur le cd virtuel.

Gauthier Catteau - Armando Martins

17

Dcouverte du systme d'exploitation GNU/Linux

C. Les sessions utilisateurs


Linux est un systme d'exploitation multi-utilisateurs.

Dfinition : Multi-utilisateurs
En informatique, un systme d'exploitation comme Unix ou Linux est conu pour que plusieurs utilisateurs puissent avoir accs au mme ordinateur en mme temps. Le systme partage son temps de travail en plusieurs processus n'ayant aucun lien entre eux, si ce n'est le mme ordinateur. Le terme oppos est mono-utilisateur qui est utilis lorsque l'on parle de systmes d'exploitation utilisable par un seul utilisateur la fois ou encore en rfrence une licence de logiciel prvue pour un utilisateur.

D. Les Bureaux Virtuels


Vous aimez faire plusieurs choses en mme temps sur votre ordinateur ? Par exemple, vous voulez ouvrir : The Gimp pour modifier quelques photos, une fentre Jabber pour discuter avec vos amis, une fentre IRC pour discuter avec d'autres personnes, votre navigateur web, votre client email, OpenOffice.org pour rdiger des documents. . . a commence vite faire beaucoup, n'est ce pas ? Alors, trions un peu les fentres, sparons-les par thme. . . Imaginez que vous ayez un bureau pour tout ce qui est internet, un autre pour la bureautique Eh bien, cest ce que vous permettent les bureaux virtuels. Par dfaut, sur la plupart des environnements , vous avez sur un de vos tableaux de bord un ensemble de petits carrs ; cliquez sur chacun des ces carrs, qui reprsentent les bureaux, pour vous faire une ide.

Dfinition : Bureau virtuel


Un bureau virtuel est un environnement graphique qui peut tre dmultipli, afin de travailler un seul type de tche dans chaque bureau, au lieu d'avoir toutes les fentres runies dans un seul. Par exemple, l'utilisateur choisira de rserver un bureau aux tches de retouches photographiques, un autre internet, un autre aux jeux, etc. Les fentres ne sont plus mlanges.

E. Prsentation des gestionnaires de fentres.


La distribution Ubuntu que nous allons tudier ensemble, propose par dfaut l'environnement graphique "Gnome". Mais il existe un grand nombre d'autre gestionnaire de fentres. Les plus connus sont :

Gnome se veut simple dutilisation , cest dire quune application fait une seule chose, mais la fait bien. Les options paramtrables de chaque application restent limites afin de ne pas noyer l'utilisateur dans des rglages dont il n'aurait jamais se soucier.

18

Gauthier Catteau - Armando Martins

Dcouverte du systme d'exploitation GNU/Linux

Image 9 : Gnome

KDE se veut plus complet. Lapplication qui peut graver vos donnes est tout aussi capable de lire vos vidos et musiques ainsi que de redimensionner vos images. De plus, les applications sont beaucoup plus paramtrables par le biais des menus doptions, mme si vous naurez certainement jamais toucher la plupart de celles-ci !

Image 10 : KDE

Xfce, lui, se veut plus lger et peut tourner sur des configurations modestes compares aux deux mastodontes prcdents. FluxBox vise la mme cible.

Gauthier Catteau - Armando Martins

19

Dcouverte du systme d'exploitation GNU/Linux

Image 11 : XFCE Et bien d'autre encore : WindowMaker, Enlightenment, BlackBox, Ion, FluxBox, AfterStep, IceWM, ... Il existe des dizaines d'environnements de bureaux, et deux proposent mme un environnement de bureau complet c'est dire des applications spcifiquement destination de cet environnement avec une philosophie, des interactions et une prsentation homogne comme Gnome, interface par dfaut d'Ubuntu. Le choix de l'une ou l'autre des interfaces graphiques disponibles dpend uniquement de vos gots personnels. En effet, ds le systme install, vous pourrez utiliser les mmes logiciels. Vous pourrez galement changer par la suite denvironnement graphique et en avoir plusieurs installs simultanment. C'est la libert de choix ! l'cran dconnexion, vous pourrez choisir votre environnement de bureau. Et tout cela repose, une fois encore, sur le serveur X Xorg sur Ubuntu qui se charge de l'affichage. Au dmarrage de votre interface graphique, Xorg dmarre et le curseur en forme de roue qui tourne apparat en lisant la configuration qui se trouve dans le fichier texte brut /etc/X11/xorg.conf, puis GDM qui vous permet de choisir l'utilisateur et l'interface utiliser. Vous pouvez alors choisir entre plusieurs environnements, si vous les avez installs sur votre machine. Enfin, l'environnement de bureau slectionn se lance Gnome, par exemple.

20

Gauthier Catteau - Armando Martins

Les applications disponibles


III -

III
23 23 23 23 23

Les application de Bureautique Les outils Graphiques Les outils pour internet. Les applications Multimdia. Les outils de virtualisation.

A. Les application de Bureautique


OpenOffice.org, KOffice, Scribus...

B. Les outils Graphiques


The Gimp, Inkscape, F-Spot ...

C. Les outils pour internet.


Firefox, Konqueror, Thunderbird, Evolution ...

D. Les applications Multimdia.


Amarok, Totem, Xine ...

E. Les outils de virtualisation.


VirtualBox, Qemu ...

Gauthier Catteau - Armando Martins

21

Installation des applications et mise jour du systme.


IV -

IV
25 26 27 28 28

Comment ajouter des applications ? Mise jour du systme et des applications. Synaptic L'application Ajouter/enlever. . . Comment scuriser son Linux ?

A. Comment ajouter des applications ?


La procdure suivre pour installer un logiciel sous Ubuntu et toutes les distributions drives de Debian, se rsume en un mot : APT. Il s'agit d'un logiciel qui gre l'installation de tous les logiciels. La premire chose faire avant d'installer une application est de mettre jour la liste des paquets : apt-get update Si on ne connait pas le nom exacte de l'application on peut la chercher avec aptcache :

apt-cache search Nom_du_paquet ou mot_clef Ensuite pour installer l'application on tape la commande :

apt-get install Nom_du_paquet Exemple :


apt-get install Inkscape Le successeur d'apt est aptitude. Les commandes sont trs similaires :

aptitude update aptitude search Nom_du_paquet ou mot_clef aptitude install Nom_du_paquet Si aptitude est lanc sans paramtre il propose une interface pour venir parcourir la liste des paquets.

Remarque
Pour rendre ce systme trs pratique accessible au dbutant, Ubuntu propose pas moins de deux interfaces graphiques que l'on va dtailler par la suite : Synaptic et Ajouter/enlever. . . .

Gauthier Catteau - Armando Martins

23

Installation des applications et mise jour du systme.

B. Mise jour du systme et des applications.


Nous venons de voir les outils apt et aptitude pour installer des logiciels, nous allons utiliser les mmes outils pour mettre jour notre systme d'exploitation :

apt-get update && apt-get upgrade

ou aptitude update && aptitude upgrade C'est tout. Avec l'une ou l'autre de ces commandes vous mettez jour le systme et l'ensemble des applications que vous avez install. Bien entendu il n'est pas ncessaire d'avoir accs la ligne de commande pour pouvoir mettre jour son systme. En effet, ne vous souciez pas des mises jour, lorsque lune delle va se prsenter, votre systme vous fera signe par le biais de l'applet zone de notification ct de votre horloge si vous n'avez touch rien !

Image 12 : Mises jour disponibles Vous pourrez donc mettre jour lintgralit de votre systme en cliquant simplement sur l'icne le gestionnaire de mise jour, galement accessible par Systme => Administration => Gestionnaire de mises jour , se lance puis Installer les mises jour . L'application grant les mises jour se lance et vous dcouvrez en-dessous une rapide description, pour chaque lment, de la mise jour.

Image 13 : Choix des mises jours Plus rarement, le noyau sera mis jour. Cest, par ailleurs, une des seules actions ncessitant un redmarrage complet du systme.

Remarque : Mise jour de l'intgralit du systme


Vous avez dit mise jour de lintgralit du systme ? En effet, tous les programmes seront mis jour automatiquement. Vous aurez ainsi l'quivalent d'un norme Windows update prenant en charge l'ensemble de vos logiciels, jeux et outils de scurit et pas seulement votre systme d'exploitation. Si une mise jour majeure changement de version, comme Windows Me vers XP est disponible, Ubuntu vous proposera de l'installer. Vous pouvez ou non accepter sa proposition. Plus rarement, le noyau sera mis jour. Cest, par ailleurs, une des seules actions ncessitant un redmarrage complet du systme.

24

Gauthier Catteau - Armando Martins

Installation des applications et mise jour du systme.

C. Synaptic
Synaptic, accessible par le menu Systme => Administration => Gestionnaire de paquets Synaptic , est une interface complte pour grer APT graphiquement. Il s'adresse principalement aux utilisateurs avertis . Si vous connaissez un nom de paquet, vous pouvez le rechercher directement par son nom ou par sa description.

Image 14 : Synaptic

Exemple
Prenons lexemple dinkscape, partir du moment o vous savez que le paquet a le mme nom, l'installation est vraiment aise : une fois Synaptic lanc aprs avoir demand votre mot de passe, puisque vous tes en train d'effectuer une opration d'administration, rappelez-vous ! , vous pouvez effectuer une recherche par le biais du menu dition ) Rechercher . Dans la zone de recherche, tapez inkscape puis cliquez sur Rechercher . Vous pouvez choisir d'effectuer votre recherche dans les noms de paquets seulement, ou encore dans les noms et leurs descriptions dans la partie infrieure. Apparatra alors la ligne : inkscape. Cliquez-droit sur celui-ci, puis Slectionner pour installation . Acceptez les messages ventuels vous indiquant que d'autres paquets les dpendances doivent tre installs pour que ce logiciel fonctionne correctement. Enfin, cliquez sur Appliquer . Acceptez le message rcapitulant ce qui va tre fait. Attendez que la magie opre et voil ! Un carr vert auprs du nom du paquet, prouve que votre logiciel est install. Vous pouvez prsent fermer Synaptic. Supprimer un logiciel n'est pas plus compliqu : cliquez-droit sur le paquet supprimer, puis Slectionner pour suppression. Acceptez les messages ventuels vous indiquant que d'autres paquets les dpendances doivent tre supprims. Enfin, cliquez sur Appliquer . Acceptez le message rcapitulant ce qui va tre fait, et voil, le paquet et certaines de ses dpendances sont supprims !

D. L'application Ajouter/enlever. . .
Gnome-app-install, accessible par le menu Applications => Ajouter/Enlever. . . est l'interface graphique d'APT de prdilection des dbutants proposant des listes ordonnes de logiciels installables et dsinstallables en un seul clic ! C'est l'interface que tout dbutant devrait utiliser prioritairement.

Gauthier Catteau - Armando Martins

25

Installation des applications et mise jour du systme.

Image 15 : Ajouter Enlever

Remarque
Par dfaut, peu dapplications sont disponibles dans Ajouter/enlever. . . . En effet, seules les applications d'Ubuntu maintenues sont proposes. Pour avoir accs plus de logiciels, il faudra largir la recherche, si vous le dsirer, aux autres sources de mise jour telles universe ou multiverse . Pour cela, il vous suffit de slectionner dans la liste droulante suprieure Toutes les applications disponibles .

E. Comment scuriser son Linux ?


Les rgles de bases.

Arrt et suppression des services inutiles. Mise jour du systme. Configuration du Firewall avec l'un des outils suivants :
a. b. c. d.

FireStarter GuardDog Shorewall NuFW

Installer un antivirus ? Par nostalgie... Et surtout, comme sur tout systmes, ne pas installer n'importe quoi !

Remarque
Plus d'informations l'url : http://www.debian.org/doc/manuals/securing-debianhowto/

26

Gauthier Catteau - Armando Martins

Regardons un peu sous le capot.


V -

V
31 31 32 33 33 34 35 35 37 37

Introduction Systmes de fichiers Les diffrentes catgories de fichiers O sont mes disques ? Explication de l'arborescence des fichiers Point de montage O sont enregistres mes prfrences ? Gestion des droits. Le run level, ou niveau de fonctionnement Les Scripts systmes

Contrairement la situation que nous avons connue il y a quelques annes, il est possible aujourd'hui d'utiliser quotidiennement Linux sans en connatre son fonctionnement. Mais, dans ce cas, Linux perd un peu de son intrt, et nous pouvons nous demander pourquoi il est ncessaire de quitter les systmes d'exploitations propritaires.

A. Introduction
Sous Linux et pour l'ensemble des Unix, tout est fichier. Il est donc naturel de commencer par comprendre comment sont agencs ces fichiers.

B. Systmes de fichiers
Dfinition
Un systme de fichiers (file system ou filesystem en anglais) ou systme de gestion de fichiers (SGF) est une structure de donnes permettant de stocker les informations et de les organiser dans des fichiers sur ce que l'on appelle des mmoires secondaires (disque dur, disquette, CD-ROM, cl USB, disques SSD, etc.). Une telle gestion des fichiers permet de traiter, de conserver des quantits importantes de donnes ainsi que de les partager entre plusieurs programmes informatiques. Il offre l'utilisateur une vue abstraite sur ses donnes et permet de les localiser partir d'un chemin d'accs.
Gauthier Catteau - Armando Martins

27

Regardons un peu sous le capot.

Reprsentation pour l'utilisateur


Pour l'utilisateur, un systme de fichiers est vu comme une arborescence : les fichiers sont regroups dans des rpertoires (concept utilis par la plupart des systmes d'exploitation). Ces rpertoires contiennent soit des fichiers, soit rcursivement d'autres rpertoires. Il y a donc un rpertoire racine et des sousrpertoires. Une telle organisation gnre une hirarchie de rpertoires et de fichiers organiss en arbre.

Les systmes de fichiers sous Linux


Linux possde son systme appel ext2 mais peut en grer d'autres. La liste en est donne dans /proc/filesystems L'utilisateur peut donc accder sous Linux d'autres systmes de fichiers, comme DOS, Vfat,..provenant d'un priphrique ou import par le rseau. Comme pour l'utilisateur tout est fichier, tous les systmes de fichiers quels que soient leur emplacement physique doivent tre intgrs dans l'UNIQUE arborescence logique du systme Linux. Cette arborescence peut donc tre construite (et voluer) partir de diverses partitions qui peuvent tre situes sur plusieurs disques. Cela ralise une intgration et une abstraction plus pousse que dans le monde Windows o les partitions et lecteurs auxquels sont affectes les lettres A: C: D: ... demeurent des entits spares. Naturellement la partition sur laquelle est situ le rpertoire racine joue un rle particulier. Le processus de montage, avec sa commande mount, dcrite plus loin, est le moyen de faire correspondre parties de l'arborescence et partitions physiques de disque. Il permet de plus d'affecter tout systme extrieur (disquette, cdrom, clef usb, rp. rseau ...) un rpertoire cr pour cela dans l'arborescence. Il suffira ensuite de se dplacer ce rpertoire, appel point de montage, en fait un rpertoire "d'accrochage", pour accder ses fichiers (bien sr, conformment aux permissions que possde l'utilisateur )

C. Les diffrentes catgories de fichiers


fichiers normaux

texte : courrier, sources des programmes, scripts, configuration ... excutables : programmes en code binaire

fichiers rpertoires
ce sont des fichiers conteneurs qui contiennent des rfrences d'autres fichiers. vritable charpente de l'arborescence, ils permettent d'organiser les fichiers par catgories

fichiers spciaux
situs dans /dev, ce sont les points d'accs prpars par le systme aux priphriques. Le montage va raliser une correspondance de ces fichiers spciaux vers leur rpertoire "point de montage". par exemple, le fichier /dev/hda permet l'accs et le chargement du 1er disque IDE

fichiers liens symboliques


Ce sont des fichiers qui ne contiennent qu'une rfrence (un pointeur) un autre
Gauthier Catteau - Armando Martins

28

Regardons un peu sous le capot.

fichier. Cela permet d'utiliser un mme fichier sous plusieurs noms sans avoir le dupliquer sur le disque.

D. O sont mes disques ?


Les partitions sont montes dans des dossiers. Linux nomme les partitions sda1 pour la partition 1 du premier disque, sda2 pour la deuxime, sdb1 pour la premire partition du deuxime disque (b),etc. Au dmarrage de Linux, ce dernier ouvre un fichier texte brut nomm /etc/fstab dans lequel il trouve les correspondances entre les disques durs et les dossiers o ils doivent tre monts. Comment peut-on alors accder nos autres partitions, notamment les partitions Windows si vous avez gard votre ancien systme d'exploitation ? En fait, lors de l'installation, vous rappelez-vous de la partie Point de montage ? C'est ici o vous avez modifi ou laiss les choix par dfaut concernant ce que l'on appelle le montage d'une partition. Monter une partition, c'est lier un dossier une partition. Par dfaut, ces dossiers se trouvent dans /media. Par exemple, si j'ai mont ma partition C:\ de Windows dans /media/windows chaque fois que j'enregistrerai dans /media/windows ou un de ses sous-dossiers, je l'enregistrerai en fait sur la partition C:\. De mme avec une clef USB ou encore en lisant un lecteur de DVD/CD-ROM.

E. Explication de l'arborescence des fichiers


Un disque dur est un lment matriel qui est gnralement plac lintrieur de lordinateur, cest un priphrique de stockage magntique qui va garder, mme ordinateur teint, tous vos documents, mais aussi le systme dexploitation et les chiers ncessaires la bonne marche de votre machine. Larborescence des chiers est leur organisation sur le disque dur. Si vous utilisez Windows, vous savez certainement que les chiers se placent dans des rpertoires. Voici pour information quelques explications sur les diffrents dossiers indispensables dans / :

/bin : Contient les programmes systmes importants. /boot : Les fichiers utiles au dmarrage du systme /dev : Contient des fichiers factices permettant de communiquer avec vospriphriques. /etc : Ici se trouve la plupart des fichiers de configuration du systme. /home : Contient les dossiers personnels des utilisateurs. Chacun y possde un dossier son nom avec ses fichiers personnels. /lib : Contient les librairies bibliothques utiles au systme. /media : Les dossiers contenus correspondent aux accs de montage des priphriques de stockage. /opt : A un peu la mme fonction que /usr, sauf que certains l'utilisent pour les programmes qu'ils compilent eux-mme et qui ne sont logiquement pas aussi intgrs qu'un logiciel disponible dans les sources de mises jour /proc : Ce dossier contient des fichiers et dossiers virtuels qui correspondent l'tat du systme en temps rel : programmes ( processus ) lancs, occupation mmoire, RAM disponible, etc...

Gauthier Catteau - Armando Martins

29

Regardons un peu sous le capot.

/root : Cest le /home de ladministrateur ! Ce dernier est spar pour des questions de scurit. Cependant, si vous avez bien suivi jusqu'ici, il n'y a pas de compte root proprement parl sur Ubuntu. Ce rpertoire existe donc seulement pour assurer la compatibilit avec les autres distributions GNU/Linux. /sbin : A un peu la mme fonction que /bin, sauf que tous les programmes issus ne sont accessibles qu' l'administrateur, ou aux amis de root sur Ubuntu. /tmp : Comme son nom l'indique, ici sont stocks les fichiers temporaires utiles aux programmes en cours d'excution. Ce dossier est vid chaque redmarrage. /usr : Dossier important, contenant tous les programmes et les bibliothques installs. /var : Dossier contenant tout ce qui est variable au systme. Par exemple, les fameux fichiers log enregistrant ce qui se passe sur votre systme, utiles quand quelque chose ne fonctionne plus par exemple contenus dans /var/log/ .

F. Point de montage
Dfinition
Un point de montage est un rpertoire partir duquel sont accessibles les donnes se trouvant sous forme d'un systme de fichiers sur une partition de disque dur ou un priphrique.

Montage et dmontage sous Unix


Lorsque les donnes sont accessibles partir d'un point de montage, on dit que la partition ou le priphrique sont monts. Dans les sytmes Unix, le point de montage par dfaut est /mnt ou /media. Par exemple, une disquette sera gnralement monte en /mnt/fd0 et un cdrom en /mnt/cdrom ou /media/cdrom. Le point de montage par dfaut des priphriques est spcifi dans un fichier de configuration systme : /etc/fstab (sous Linux, /etc/vfstab sous Solaris). La commande Unix permettant de monter des rpertoires est mount. La commande inverse, qui dmonte, est umount (et non unmount).

Montage
La commande mount permet de relier une partition ou un priphrique un rpertoire, rpertoire par lequel les donnes prsentes sur la partition ou le priphrique sont accessibles. Pour monter un priphrique ou une partition avec la commande mount, il faut indiquer : le type du systme de fichiers par l'option -t le fichier spcial reprsentant le priphrique ou la partition (gnralement /dev/*) ; le rpertoire de montage. Par exemple, la commande ci-dessous monte le priphrique /dev/cdrom (cdrom) sur /media/cdrom en indiquant que le systme de fichier est ISO 9660. mount -t iso9660 /dev/cdrom /media/cdrom Certaines indications peuvent tre omises lorsqu'elles sont spcifies dans le fichier

30

Gauthier Catteau - Armando Martins

Regardons un peu sous le capot.

de configuration listant les points de montage par dfaut (/etc/fstab sous Linux). On peut omettre le type de systme de fichiers si la version de mount utilise est assez intelligente . Par contre, mme en l'indiquant, on ne pourra jamais monter un systme de fichiers que le noyau Unix ne sait pas grer (parce qu'il n'a pas t configur pour l'utiliser par exemple). Lorsque le montage a russi, une mise jour est effectue dans un fichier systme recensant les montages en cours (fichier /etc/mtab sous Linux). L'option -n de mount permet d'viter cette mise jour dans des cas bien particuliers o le montage chouerait pour cette raison (si l'on travaille sur un systme de fichier chroot en lecture seule par exemple). On peut galement sous les Unix modernes monter des fichiers qui constituent un systme de fichiers eux-seuls (loopback), grce l'option -loop . Ceci est particulirement utile dans le cas d'images reprsentant des disquettes, CDROMs, DVDs. Les commandes dd et mkisofs peuvent aider fabriquer de tels fichiers. Il est possible, sous certaines configurations, de monter (recouvrement total ou partiel) par dessus d'autres systmes dj monts

Dmontage
Pour dmonter une partition ou un priphrique, il faut utiliser la commande umount. Par exemple : umount /media/cdrom Le dmontage ne marche que si la partition n'est pas utilise, savoir :

aucun fichier n'est en train d'tre lu ou crit sur la partition ;

aucun processus n'a son rpertoire de travail sur la partition. Si le dmontage est refus, on peut utiliser la commande fuser pour savoir quels processus l'utilisent. Par exemple (si le dmontage de /media/cdrom est refus) :

fuser /media/cdrom Lorsque le dmontage a eu lieu, le fichier /etc/mtab est mis jour.

G. O sont enregistres mes prfrences ?


Vous avez srement remarqu que 2 utilisateurs ne voudront pas du mme thme de bureau. De plus, la configuration des logiciels contacts, messagerie, navigateur, etc. ainsi que des barres d'outils,par exemple, sera diffrente. . . Et pourtant, tout ce beau monde se connecte sur le mme systme et chacun retrouve les prfrences qu'il avait paramtres. Comment cela est-il possible ? Lorsque vous affichez les fichiers cachs de votre dossier personnel vous retrouverez normment de dossiers cachs, avec comme nom, celui d'un logiciel que vous utilisez. C'est l que sont stockes vos prfrences. Notez galement, que s'y trouvent les prfrences de session Gnome. Par exemple, vous trouverez un dossier .evolution o sont enregistrs vos paramtres de messagerie comme ceux du logiciel volution. Dautres paramtres de configuration, mais plus globaux eux, sont enregistrs dans le dossier /etc. Ceux-ci sont communs tous les utilisateurs - par exemple, si un logiciel A a besoin d'un logiciel B, pour fonctionner, il y enregistrera le chemin vers le logiciel B pour l'excuter. En somme, tout ceci signifie que lorsque vous rinstallerez le systme, et si vous avez laiss /home sur une partition spare, la rinstallation du logiciel vous

Gauthier Catteau - Armando Martins

31

Regardons un peu sous le capot.

retrouverez tous vos paramtres comme avant le formatage du systme,si vous gardez le mme nom de compte.

H. Gestion des droits.


Linux est rsolument multi-utilisateurs ; il est donc ncessaire de prvoir un systme de permissions contrlant les oprations que chacun peut faire sur les fichiers et rpertoires, recouvrant toutes les ressources systme (sur un systme Unix, tout priphrique est reprsent par un fichier ou un rpertoire). Ce principe est commun tous les Unix mais un rappel est toujours utile d'autant qu'il existe quelques usages avancs mconnus et relativement intressant. Chaque fichier ou rpertoire dispose de permissions spcifiques pour trois catgories d'utilisateurs : Son propritaire (symbolis par la lettre "u" comme "User"). Son groupe propritaire (symbolis par la lettre "g" comme "Group"). Et les autres (symbolis par la lettre "o" comme "Other"). Trois types de droits peuvent s'y combiner :

Lecture (symbolis par la lettre "r" comme "Read"). Ecriture ou modification (symbolis par la lettre "w" comme "Write"). Excution (symbolis par la lettre "x" comme eXecute). Dans le cas d'un fichier, ces droits sont faciles interprter :

L'accs en lecture permet d'en consulter le contenu mais aussi de le copier. L'accs en criture de le modifier. Et l'accs en excution permet de tenter de l'excuter (ce qui ne fonctionnera que s'il s'agit d'un programme). Un rpertoire est trait diffremment :

L'accs en lecture donne le droit de consulter la liste de son contenu. L'accs en en criture celui d'y crer ou supprimer des fichiers. Et l'accs en excution de le traverser (et notamment d'en faire le rpertoire courant avec la commande "cd"). Trois commandes manipulent les permissions associes un fichier :

chown : affecte un nouveau propritaire un fichier ou rpertoire. chgrp : affecte un nouveau groupe un fichier ou rpertoire. chmod : intervient sur les droits. Il existe deux manires de prsenter les droits ; parmi elles, la reprsentation symbolique, sans doute la plus simple comprendre et mmoriser, met en jeu les lettres symboliques cites prcdemment. Pour chaque catgories d'utilisateurs(u/g/o), on peut dfinir les droits (=), en ajouter (+), ou en enlever (-). Ainsi, la formule "chmod u=rwx,g+rw,o-r fichier" donne au propritaire les droits de lecture, d'criture, et d'excution ; ajoute au groupe propritaire les droits de lecture et d'criture ; et supprime le droit de lecture aux autres utilisateurs. Les droits non concerns par les oprations d'ajout ou de retranchement restent inchangs. La seconde mthode est la reprsentation numrique octale ; elle associe chaque droit une valeur :

4 la lecture.

32

Gauthier Catteau - Armando Martins

Regardons un peu sous le capot.

2 l'criture. et 1 pour l'excution. On associe chaque combinaison de droits la somme de ces chiffres, valeurs qu'on attribue ensuite aux diffrentes catgories d'utilisateurs en les mettant bout bout dans l'ordre habituel (propritaire, groupe, autres). Ainsi la commande "chmod 765 fichier" mettra donc en place les droits suivant :

Lecture, criture, excution pour le propritaire (car 7=4+2+1). Lecture et criture au groupe (car 6=4+2). Et lecture et excution aux autres (car 5=4+1).

I. Le run level, ou niveau de fonctionnement


Dfinition
Le run level, ou niveau de fonctionnement, est une fonction utilise par le systme d'init systme V notamment lors du dmarrage de votre systme. Il existe diffrents run levels, qui correspondent chacun un ensemble dapplications et de services mettre en marche et arrter. Ainsi, quand le systme est dmarr, il passe par le run level 1 puis par le run level 2, et il est possible de configurer les applications et dmon qui seront lancs ou arrts ce moment. Il existe en tout six run levels. Sous Ubuntu, les run levels se rpartissent ainsi : 0 : Arrt 1 : Mode mono-utilisateur 2 : Mode multi-utilisateurs (sans NFS) 3 : Mode multi-utilisateurs 4 : Inutilis 5 : Mode multi-utilisateurs avec serveur graphique 6 : Redmarrage

Remarque
Les run levels 0, 1 et 6 sont plus ou moins standardiss et communs tous les systmes appliquant le systme V. Lorsque vous dmarrez votre systme en SafeMode deuxime ligne de Grub vous restez en fait au run level 1. Lors d'un dmarage normal , vous passez les niveaux 1, 2, puis 5 lorsque GDM se lance. Notons qu'il n'y a pas de hirarchie ni de chronologie dans les run levels : il n'est pas ncessaire de passer par 3 pour aller de 2 5, par exemple. Les niveaux utiliss pour un fonctionnement continu de la machine excluant donc ceux permettant de la redmarrer ou de l'arrter vont donc de un cinq, et il est possible de passer de l'un l'autre. Pour cela, une simple commande telle sudo init 3 fonctionne, mais faites attention bien avoir enregistr vos donnes, car aucune confirmation n'est demande !

J. Les Scripts systmes


Tous les services et applications qui doivent tre dmarrs ou arrts lors d'un

Gauthier Catteau - Armando Martins

33

Regardons un peu sous le capot.

passage d'un run level un autre le sont partir de scripts. Ceux-ci sont regroups dans le dossier /etc/init.d/ . Ces scripts reoivent un paramtre qui peut-tre start, stop, restart, etc. . . chaque niveau correspond un dossier typiquement /etc/rc.d/rc2.d pour le niveau 2 contenant des liens symboliques vers les fichiers scripts de /etc/init.d/ . Ces liens symboliques portent des noms commenant par la lettre S ou K, suivie d'un numro de deux chiffres. Voici ce qu'il se passe lors d'un changement de run level dans le cas, par exemple, d'un passage du niveau 5 au niveau 3 par la commande sudo init 3 : Les scripts dont le nom commence par un K situs dans le dossier correspondant au niveau de fonctionnement courant ici 5 sont lancs dans l'ordre dcroissant des numros avec le paramtre stop, ce qui anormalement pour effet d'arrter le service correspondant. Les scripts du nouveau niveau ici 3 qui commencent par S sont activs dans l'ordre croissant des numros avec le paramtre start. Nous comprenons donc maintenant que les numros correspondent une priorit permettant de dmarrer un service avant un autre par exemple, il est prfrable de dmarrer Xorg avant GDM. . . Maintenant, si vous tes curieux, vous pouvez allez voir quels services sont dmarrs quel niveau de fonctionnement sur votre ordinateur clic droit sur un service, puis proprits et dsactiver ceux qui ne vous sont pas ncessaires : par exemple, le gestionnaire d'imprimante HP si vous n'avez pas d'imprimante de cette marque. Pour s'adonner ces optimisations, une seule direction : Systme => Administration => Services.

34

Gauthier Catteau - Armando Martins

VI -

Gestion Avance
Gestions des utilisateurs et des groupes. Planification de tches : cron et atd. L'accs distance par SSH.

VI
39 41 44

A. Gestions des utilisateurs et des groupes.


1. Introduction
La liste des utilisateurs est habituellement stocke dans le fichier "/etc/passwd", alors que le fichier "/etc/shadow" stocke les mots de passe chiffrs. Tous deux sont de simples fichier texte, au format relativement simple, consultables et modifiables avec un diteur de texte. Chaque utilisateur y est dcrit sur une ligne par plusieurs champs spars par des deux-points " :".

2. Liste des utilisateurs "/etc/passwd".


Voici la liste des champs du fichier "/etc/passwd" :

identifiant (ou login) : il s'agit du nom de connection de l'utilisateur, par exemple "gauthier". mot de passe : il s'agit d'un mot de passe chiffr par la fonction sens unique "crypt" ou "md5". La valeur "x" indique que le mot de passe chiffr est stock dans "/etc/shadow". uid : numro unique permettant d'identifier l'utilisateur. gid : numro unique du groupe principal de l'utilisateur (Debian et Ubuntu cre par dfaut un groupe spcifique pour chaque utilisateur). gecos : champ de renseignements qui contient habituellement le nom complet de l'utilisateur. rpertoire de connection : attribu l'utilisateur pour qu'il stocke ses fichiers personnels. programme excuter aprs la connexion : Il s'agit gnralement d'un interprteur de commandes (shell), donnant libre cours l'utilisateur pour utiliser la machine. Si l'on prcise "/bin/false", l'utilisateur ne pourra pas se connecter.

Gauthier Catteau - Armando Martins

35

Gestion Avance

3. Le fichier des mots de passe chiffrs "/etc/shadow".


Le fichier "/etc/shadow" contient les champs suivants :

identifiant (ou login). mot de passe chiffr. plusieurs champs de gestion de l'expiration du mot de passe.

Remarque : Sret du fichier "/etc/shadow".


Le fichier "/etc/shadow" contrairement son alter ego "/etc/passwd", est inaccessible en lecture aux utilisateurs. Tout mot de passe stock dans "/etc/passwd" est lisible par tous ; un indlicat peut alors entreprendre de le "casser" par une mthode de force brute, consistant tout simplement chiffrer successivement tous les mot de passe simples pour tenter de le dcouvrir. Cette attaque, dite "du dictionnaire", qui dvoile les mots de passe mal choisis, n'est plus possible avec le fichier "/etc/shadow".

4. Modifier un compte ou mot de passe existant.


Quelques commandes permettent de modifier la plupart des informations stockes dans ces bases de donnes. Chaque utilisateur peut ainsi changer de mot de passe, sans doute le champ le plus variable, grce la commande "passwd". "chfn" rserve au super utilisateur "root", intervient sur le champs "gecos". "chsh" permet de changer de "shell de login", ou interprteur de commandes, mais le choix des utilisateurs sera limit la liste des donne dans le fichier "/etc/shells ; alors que l'administrateur pourra saisir le programme de son choix. Enfin, la commande "chage" donnera l'administrateur la possibilit de modifier les conditions d'expiration du mot de passe (l'option -l utilisateur rappelant la configuration actuelle). On pourra d'ailleurs forcer l'expiration d'un mot de passe grce la commande "passwd -e utilisateur", qui obligera l'utilisateur changer son mot de passe la prochaine connexion.

Remarque
L'utilisation de la commande "usermod" permet aussi d'apporter des modifications sur un compte utilisateur.

a) Bloquer un compte.
On peut se retrouver dans l'obligation de bloquer le compte d'un utilisateur, par mesure disciplinaire ou dans le cadre d'un enqute par exemple. Il s'agit en fait de l'empcher de se connecter nouveau sans dtruire son identit et ses fichiers. Cela s'effectue simplement par la commande "passwd -l utilisateur" (-l = lock), ou bloquer. La remise en service s'effectue de mme , avec l'option "-u" pour "unlock", ou dbloquer.

5. Liste des groupes "/etc/group".


La liste des groupes est stocke dans le fichier "/etc/group", simple bas de donnes textuelle au format comparable celui de "/etc/passwd" et qui utilise les champs suivant :

identifiant (le nom du groupe).


Gauthier Catteau - Armando Martins

36

Gestion Avance

mot de passe (facultatif) : il ne sert qu' intgrer un groupe dont on n'est pas habituellement membre (avec la commande "newgrp" ou "sg"). gid : numro unique identifiant le groupe. liste des membres : liste des identifiants d'utilisateurs membres du groupe, spare par des virgules. Les commandes "groupadd" et "groupdel" permettent respectivement de crer et de supprimer un groupe. La commande "groupmod" modifie les informations d'un groupe (son gid ou son identifiant). La commande "passwd -g groupe" modifiera le mot de passe d'un groupe. La commande "passwd -r -g groupe" supprimera le mot de passe.

6. Cration de comptes.
L'une des premires actions de l'administrateur est de crer les comptes de ses utilisateurs, ce qui s'effectue trs simplement avec la commande "adduser". Celle ci prend simplement en argument l'identifiant de l'utilisateur crer. "adduser" pose quelques questions avant de crer le compte, mais son droulement offre peu de surprises. Le fichier de configuration "/etc/adduser.conf offre toutefois quelques paramtrages intressants. On pourra ainsi prvoir automatiquement un quota chaque nouvel utilisateur en dupliquant celui d'un modle. On pourra aussi modifier l'emplacement du compte utilisateur, ce qui ne prsente que rarement de l'utilit, c'est le cas si les utilisateurs sont si nombreux qu'il est souhaitable de rpartir leurs comptes sur plusieurs disques. On pourra encore choisir un autre interprteur de commandes par dfaut. La cration du compte fabrique le rpertoire personnel et y recopie le contenu du rpertoire modle "/etc/skel", afin de fournir quelques fichiers standard l'utilisateur frachement crer. Dans certains cas, il sera utile d'ajouter un utilisateur dans un groupe, en particulier pour lui confrer des droits supplmentaires. Par exemple, un utilisateur intgr au groupe "audio" pourra accder aux priphriques son. Pour ce faire, on procde avec la commande "adduser utilisateur groupe".

B. Planification de tches : cron et atd.


1. Introduction
"cron" est le dmon en charge d'excuter des commandes planifies et rcurrentes (chaque jour, chaque semaine, etc.) ; "atd" est celui qui s'occupe des commandes excuter une seule fois, un instant prcis et futur.

2. Cron
Dans un systme Unix, de nombreuses tches sont rgulirement planifies :

La rotation des logs. La mise jour de le base de donnes du programme "locate".

Gauthier Catteau - Armando Martins

37

Gestion Avance

Les sauvegardes. Des scripts d'entretien (comme le nettoyage des fichiers temporaires). Par dfaut, tous les utilisateurs peuvent planifier l'excution de tches. C'est pourquoi chacun dispose de sa propre "crontab", ou il peut consigner les commandes planifier. Il peut la modifier en excutant la commande "crontab -e" (ses informations stockes dans le fichier "/var/spool/cron/crontabs/utilisateur").

Remarque : Restreindre "cron" ou "atd".


On peut restreindre l'accs "cron" en crant le fichier d'autorisation explicite "/etc/cron.allow", o l'on consignera les seuls utilisateurs autoriss planifier des commandes. Tous les autres seront automatiquement dpourvus de cette fonctionnalit. Inversement pour n'en interdire qu'un ou deux trouble-fte, on crira leur nom dans le fichier d'interdiction explicite "/etc/cron.deny". Le mme mcanisme encadre "atd, avec les fichiers "/etc/at.allow" et "/etc/at.deny".

3. Les fichiers de cron


L'utilisateur root dispose de sa "crontab" personnelle, mais peut galement employer le fichier "/etc/crontab" ou dposer des tches supplmentaires dans le rpertoire "/etc/cron.d". Ces deux dernires solutions ont l'avantage de pouvoir prciser l'utilisateur sous l'identit duquel excuter les commandes. Le paquet "cron" propose par dfaut des commandes planifies qui xecutent : Une fois par heure les programmes du rpertoire "/etc/cron.hourly". Une fois par jour les programmes du rpertoire "/etc/cron.daily". Une fois par semaine les programmes du rpertoire "/etc/cron.weekly". De nombreux paquets profitent de ce services pour dposer dans ces rpertoires des scripts de maintenance ncessaires au fonctionnement optimal de leur service.

4. Format d'un fichier "crontab".


Chaque ligne significative d'une "crontab" dcrit une commande planifie grce aux six champs suivants : La conditions sur les minutes (nombres compris de 0 59). La condition sur les heures (de 0 23). La condition sur le jour du mois (de 1 31). La condition sur le mois (de 1 12). La condition sur le jour de la semaine (de 0 7, 0 et 7 correspondant au dimanche ; il est galement possible d'employer les trois premires lettre du nom du jour en anglais comme "sun", "mon", etc...). La commande excuter (quand toutes les conditions prcdentes sont remplies). Chaque condition peut s'exprimer sous la forme d'une numration de valeurs possibles (spares par des virgules). La syntaxe "a-b" dcrit l'intervalle de toutes les valeurs entre "a" et "b". La syntaxe "a-b/c dcrit un intervalle avec un incrment de "c" (exemple : 0-10/2 correspond 0,2,4,6,8,10). Le joker * reprsentent toutes les valeurs possibles.

38

Gauthier Catteau - Armando Martins

Gestion Avance

Exemple : Exemple de "crontab" :


#Format #min heu jou moi jsem commande #Tlcharge les donnes tous les soirs 19h25. 25 19 * * * $HOME/bin/get.pl #La matin 8h00, en semaine (lunid vendredi) 00 08 * * 1-5 $HOME/bin/fait_quelquechose #Redmarre le proxy IRC aprs chaque reboot @reboot /usr/bin/dircproxy

Conseil : Raccourci textuels pour "cron".


Des abrviations, qui remplacent les cinq premiers champs d'une entre de "crontab", dcrivent les planifications les plus classiques. Les voici :

@yearly : une fois par an (le premier janvier 0h00). @monthly : une fois par mois (le premiers du mois 0h00). @weekly : une fois par semaine (le dimanche 0h00). @daily : une fois par jour ( 0h00). @hourly : une fois par heure (au dbut de chaque heure). @reboot : une fois aprs chaque dmarrage de l'ordinateur.

5. Emploi de la commande "at".


La commande "at" prvoit l'excution d'une commande un moment ultrieur. Elle prend en paramtre l'horaire et la date prvus et sur son entre standard la commande excuter. Cette dernire sera excute comme si elle avait t saisie dans un interprteur de commandes. "at" conserve d'ailleurs l'environnement courant afin de pouvoir travailler exactement dans les mmes conditions que celles de la planification. L'horaire est indiqu en suivant les conventions habituelles : "16 :12" reprsente "16h12". La date peut tre prcise au format "JJ.MM.AA" (27.07.08 reprsentent ainsi 27 juillet 2008). En son absence, la commande sera excute ds que l'horloge atteindra l'heure signale (le jour mme ou le lendemain). On peut encore crire explicitement "today" (aujourd'hui) ou "tomorrow" (demain).

Exemple : Exemple d'emploi de la commande "at".


$cat <<FIN | at 16 :12 27.07.07 > echo "joyeux anniversaire" | mail moi@exemple.fr >FIN warning : commands will be executed using /bin/sh job 2 at 2007-07-27 16 :12 Une autre syntaxe permet d'exprimer une dure d'attente : "at now + nombre priode". Priode peut valoir minutes, hours (heures, days (jours) ou weeks (semaines). Nombre indique simplement le nombre de ces units qui doivent s'couler avant excution de la commande. On peut toujours annuler une tche planifie avec la commande "atrm numro-detche". Le numro de tche est indiqu par la commande "at" lors de la planification mais on pourra le retrouver grce la commande "atq", qui donne la

Gauthier Catteau - Armando Martins

39

Gestion Avance

liste des commandes actuellement planifies.

C. L'accs distance par SSH.


1. Introduction
SSH signifie Secure SHell. C'est un protocole qui permet de faire des connexions scurises (chiffres) entre un serveur et un client SSH. Nous allons utiliser le programme OpenSSH, qui est la version libre du client et du serveur SSH.

2. Mise en garde sur la scurit.


Nature du problme.
Installer un serveur SSH permet aux utilisateurs d'accder au systme distance, en rentrant leur "login" et leur mot de passe (ou avec un mcanisme de cls). Cela signifie aussi qu'un pirate peut essayer d'avoir un compte sur le systme (pour accder des fichiers sur le systme ou pour utiliser le systme comme une passerelle pour attaquer d'autres systmes) en essayant plein de mots de passes diffrents pour un mme login (il peut le faire de manire automatique en s'aidant d'un dictionnaire lectronique). On appelle a une attaque en force brute. Il y a donc trois contraintes majeures pour garder un systme scuris aprs avoir install un serveur SSH :

Avoir un serveur SSH jour au niveau de la scurit, ce qui doit tre le cas si vous faites consciencieusement les mises jour de scurit en suivant la procdure de votre distribution. Que les mots de passes de TOUS les utilisateurs soient suffisamment complexes pour rsister une attaque en force brute.

a) Choisir des mots de passe complexes.


Un mot de passe complexe est un mot de passe qui ne veut rien dire, qui n'est pas dans le dictionnaire et qui comporte au moins 8 caractres, de prfrence avec un mlange de lettres minuscules, de lettres majuscules, de chiffres et de caractres de ponctuation. Une bonne mthode pour obtenir un mot de passe complexe et facile retenir consiste choisir une phrase et prendre la premire lettre de chaque mot, avec quelques complications en plus.

Exemple
la phrase "Linux, moi j'y comprends rien de rien !" donne le mot de passe L,mj'ycr2r

40

Gauthier Catteau - Armando Martins

Gestion Avance

3. Installation et configuration de SSH.


a) Installation du client et du serveur SSH.
Le client SSH est disponible dans le paquet openssh-client, qui est pr install. Pour pouvoir vous connecter distance, vous pouvez maintenant installer le serveur SSH : # aptitude install openssh-server L'installation comporte une tape de gnration des clefs de cryptage. Finalement, le serveur SSH se lance.

b) Configuration du serveur SSH.


Le fichier de configuration du serveur SSH est "/etc/ssh/sshd_config". ne pas confondre avec le fichier "/etc/ssh/ssh_config", qui est le fichier de configuration du client SSH. Nous allons vous commenter les lignes les plus importantes de ce fichier de configuration : Port 22 : Signifie que le serveur SSH coute sur le port 22, qui est le port par dfaut de SSH. Vous pouvez le faire couter sur un autre port en changeant cette ligne. Vous pouvez aussi le faire couter sur plusieurs ports la fois en rajoutant des lignes similaires. PermitRootLogin yes : Signifie que vous pouvez vous logguer en root par SSH. Vous pouvez changer et mettre "no", ce qui signifie que pour vous connecter en root distance, vous devrez d'abord vous connecter par SSH en tant que simple utilisateur, puis utiliser la commande su pour devenir root. Sans cel, un pirate n'aurait qu' trouver le mot de passe du compte root, alors que l, il doit trouver votre login et votre mot de passe. Si vous avez modifi le fichier de configuration du serveur, il faut lui dire de relire son fichier de configuration : # /etc/init.d/ssh reload Reloading OpenBSD Secure Shell server's configuration

4. Se connecter par SSH.


a) Authentification par mot de passe.
C'est la mthode la plus simple. Depuis la machine cliente, tapez : $ ssh login@nom_DNS_du_serveur_SS Si c'est la premire connexion SSH depuis ce client vers ce serveur, il vous demande si le fingerprint de la cl publique prsente par le serveur est bien le bon. Pour tre sr que vous vous connectez au bon serveur, vous devez connatre de faon certaine le fingerprint de sa cl publique et la comparer celle qu'il vous affiche. Si les deux fingerprints sont identiques, rpondez yes, et la cl publique du serveur est alors rajoute au fichier "~/.ssh/known_hosts". Ensuite, entrez votre mot de passe... et vous verrez apparatre le prompt, comme si vous vous tiez loggu en local sur la machine.

Gauthier Catteau - Armando Martins

41

Gestion Avance

b) Authentification par cl. Introduction


Au lieu de s'authentifier par mot de passe, les utilisateurs peuvent s'authentifier grce la cryptographie asymtrique et son couple de cls prive/publique, comme le fait le serveur SSH auprs du client SSH.

Gnrer ses cls.


Pour gnrer un couple de cls DSA, tapez : $ ssh-keygen -t dsa Par dfaut (il demande confirmation lors du processus de cration), la cl prive est stocke dans le fichier ~/.ssh/id_dsa avec les permissions 600 et la cl publique est stocke dans le fichier ~/.ssh/id_dsa.pub avec les permissions 644. Lors de la cration, il vous demande une pass phrase qui est un mot de passe pour protger la cl prive. Cette pass phrase sert crypter la cl prive. La pass phrase vous sera alors demande chaque utilisation de la cl prive, c'est dire chaque fois que vous vous logguerez en utilisant cette mthode d'authentification. Un mcanisme appel ssh-agent permet de ne pas rentrer le mot de passe chaque fois... comme nous le verrons un peu plus loin dans ce chapitre.

Remarque
Vous pouvez tout moment changer la pass phrase qui protge votre cl prive avec la commande "ssh-keygen -p".

c) Fichier authorized_keys Autoriser votre cl publique.


Pour cela, il suffit de copier votre cl publique dans le fichier "~/.ssh/authorized_keys" de la machine sur laquelle vous voulez vous connecter distance. La commande suivante permet de raliser cette opration via SSH : $ ssh-copy-id -i ~/.ssh/id_dsa.pub login@nom_DNS_du_serveur Une fois votre cle publique copi sur la machine distante il suffira d'tablire une simple connections la machine distante.

5. Transfert de fichiers par SSH.


Utiliser SCP.
Pour illustrer la syntaxe, je vais donner quelques exemples :

pour transfrer le fichier test1.txt situ dans le rpertoire courant vers le home du compte toto de la machine ordi1.exemple.org sur laquelle tourne un serveur SSH : $ scp test1.txt toto@ordi1.exemple.org: pour rcuprer le fichier test2.txt situ le home de l'utilisateur toto de la machine ordi2.exemple.org et l'crire dans le rpertoire courant : $ scp toto@ordi2.exemple.org:/usr/local/*.txt test-scp pour transfrer l'intgralit du sous-rpertoire test-scp du rpertoire courant vers le sous rpertoire incoming du home de l'utilisateur toto de la machine ordi1.exemple.org : $ scp -r test-scp toto@ordi1.exemple.org:incoming

42

Gauthier Catteau - Armando Martins

Gestion Avance

6. Se connecter par SSH sans taper de mot de passe.


Le principe.
Cette section s'adresse ceux qui utilisent un couple de cls publiques / prives, et qui ont crypt leur cl prive avec une pass phrase (c'est la configuration la plus sre). Par consquent, le client SSH demande la pass phrase chaque utilisation des cls pour s'authentifier. Pour viter d'avoir taper systmatiquement sa pass phrase, il faut utiliser sshagent : ce programme tourne en tche de fond et garde la clef en mmoire. La commande ssh-add permet de donner sa cl ssh-agent. Ensuite, quand vous utilisez le client SSH, il contacte ssh-agent pour qu'il lui donne la cl.

a) La pratique.
Dans une console, ouvrez un screen avec ssh-agent en tche de fond : $ ssh-agent screen Puis donnez votre cl l'agent : $ ssh-add Il vous demande alors votre pass phrase. Maintenant que votre cl a t transmise l'agent, vous pouvez vous connecter sans entrer de mot de passe toutes les machines pour lesquelles vous avez mis votre cl publique dans le fichier ~/.ssh/authorized_keys.

Gauthier Catteau - Armando Martins

43

Bash : l'interprteur de commandes


VII -

VII
49 51 53 54 54 55 56 58

Bash Les principales commandes console (BASH) sous Linux. Mon premier script. Quelques conseils concernant les commentaires. Le passage de paramtres Les variables. Protection des expressions. Structures de contrle

La console est une interface entre votre systme et vous. Elle s'appuie sur un interprteur de commandes (shell en anglais), sorte de langage. Il en existe plusieurs dans le monde UNIX mais le plus utilis s'appelle Bash. Il est install par dfaut sur probablement toutes les distributions Linux et contient des centaines de commandes diffrentes.

A. Bash
Les consoles
Bash peut tre utilis directement en ligne de commande, c'est--dire en dehors de toute interface graphique (KDE, Gnome etc). Il existe aussi des interfaces graphiques. Il en existe de nombreuses : Gnome-Terminale, konsole, aterm, eterm, xterm... Leurs diffrences tant cosmtiques car elles utilisent finalement le mme interprteur de commande, Bash. Vous accdez ainsi Bash si, aprs le dmarrage du noyau Linux, vous ne vous connectez pas un environnement graphique (KDE, Gnome...). Sa puissance est alors son maximum car le processeur ne s'occupe pas de grer des fentres. Pour ouvrir une console, le plus simple est d'explorer le menu de l'environnement graphique sa recherche ou bien de cliquer l'icne probablement installe dans la barre des tches.

Les terminaux virtuels


Que vous soyez connect une interface graphique ou non, il existe un moyen pratique d'ouvrir rapidement une ligne de commande supplmentaire. Le raccourci clavier est CRTL-ALT-Fx. Remplacez le x par un chiffre de 1 7. Exemple : CRTLALT-F1. Les 6 premiers ouvrent des terminaux virtuels (auxquels il faudra vous

Gauthier Catteau - Armando Martins

45

Bash : l'interprteur de commandes

connecter : identifiant et mot de passe) et le 7m ramne l'interface graphique (si ouverte). C'est surtout pratique quand aucune interface graphique (KDE, Gnome...) n'est ouverte, vous pouvez ainsi lancer en parallle des commandes.

Le prompt
Le prompt est une invite de commande. C'est le message que la console place chaque dbut de ligne, en attendant votre commande. Exemple : luteola@localhost ~ $ Ceci indique que le simple utilisateur (symbole $) 'luteola' travaille sur l'ordinateur 'localhost' est qu'il est dans son rpertoire personnel (symbole ~) : /home/luteola root@localhost /bin # Dans cet exemple, l'administrateur (root et symbole #) travaille dans le dossier /bin.

Sensibilit la casse
La console est sensible la casse (majuscule / minuscule) ! Ainsi, ls est une commande alors que LS ne veut rien dire. Idem pour l'criture des dossiers et fichiers. La moindre faute ou espace mal plac aura des consquences.

crire des chemins d'accs


La structure des rpertoires sous Linux est pyramidale, la pointe tant appele la racine. En console, on peut bien sr se dplacer dans ces rpertoires. Pour sparer des rpertoires dans un chemin, on utilise des slashs /, comme on le ferait pour une adresse Internet en fait. N'utilisez donc pas les anti-slash, comme vous le demanderai Windows. Exemple : /home/george/musique. Les anti-slash servent plutt insrer (on dit 'protger') des caractres spciaux ou des espaces. Crez ' la souris' un rpertoire "Nouveau Dossier" sur votre bureau (clic droit, Nouveau...) puis en console tapez cd ~/Desktop/ et utilisez la touche Tabulation (qui autocomplte un chemin). 'Nouveau' et 'dossier' sont spars par un anti-slash.

Autocompltion des commandes


Bash peut "deviner" la fin d'un chemin ou d'une commande. Ceci s'opre par la touche 'tabulation'. Trs pratique pour acclrer la saisie de commandes ou retrouver une syntaxe ! Exemples : Tapez up et appuyez sur 'tabulation'. Bash affiche alors la liste des commandes commenant par 'up'. Tapez cd /bi puis 'tabulation'. Bash complte la fin du chemin s'il existe, cd / bin/ en l'occurrence. Mais encore plus fort avec "bash_completion", il peut mme complter lors de l'installation de logiciels. Par exemple sur Ubuntu ou Debian si vous tapez "source /etc/bash_completion" et qu'en suite vous tapez "aptitude install fire" puis la touche "tabulation", il va vous donn tous les logiciels disponibles qui commencent par "fire"

Historique des commandes


En utilisant les flches haut et bas, vous parcourez l'historique des commandes tapes sous votre login. Ou avec la commande "history" il peut vous retrouver des commandes que vous avez tapez le matin ou la veille. Exemple : $ history | grep cat
Gauthier Catteau - Armando Martins

46

Bash : l'interprteur de commandes

CTRL-R permet galement de faire une recherche rapide sur une commande.

Jockers
Vous pouvez utiliser des jokers dans une commande :

? reprsente n'importe quel caractre (a, Y, 3, @...). * reprsente n'importe quel chane de caractres (un mot, une phrase...). Exemple : ls photo* affiche la liste des fichiers ou dossiers commenant par le mot photo. *[a]* reprsente une chane contenant la lettre a. *[!a]* reprsente une chane ne contenant pas la lettre a. [abc]* reprsente une chane commenant par la lettre a,b ou c. [a-d]* reprsente une chane commenant par la lettre a, b, c ou d.

B. Les principales commandes console (BASH) sous Linux.


Voici une liste des commandes console Bash les plus utilises en routine. Certaines plus que d'autres. N'oubliez pas que souvent des interfaces graphiques existent pour ces commandes.

Commandes de base :

ls : Afficher la liste des dossier et fichiers d'un rpertoire. cd : Se dplacer vers un rpertoire. pwd : Affiche le nom du rpertoire courant. mkdir : Crer un rpertoire rmdir : Supprimer un rpertoire. rm : Effacer un fichier ou un rpertoire. cp : Copier un dossier ou un rpertoire. mv : Dplacer (renommer) un dossier ou un rpertoire. ln : Crer un lien vers un fichier. touch : Permet de changer la date d'un fichier l'heure courante ou de crer un fichier s'il n'existe pas (touch /home/user/test). alias : Crer un alias d'une commande ( exemple : alias rm="rm -i" )

Manipulations de texte :

cat : Afficher le contenu d'un fichier texte. Concatner des fichiers. more, less : Afficher le contenu d'un fichier texte intelligemment. grep : Rechercher une chane de caractre. sed : Remplacer des occurrences de texte dans des fichiers. echo : Envoyer un message texte. Par exemple vers un fichier. tail : Naffiche que les dernires lignes dun fichier (-n permet de spcifier le nombre de lignes afficher). head : Comme tail, mais affiche les N premires lignes dun fichier (N=10 par dfaut). sort : Trier un fichier texte. uniq : Supprime ou compte les doublons sur un fichier trier.

Gauthier Catteau - Armando Martins

47

Bash : l'interprteur de commandes

wc : Compte le nombre de lignes, mots et caractres. awk : Remise en forme de donnes texte.

Installer des logiciels :


urpmi : Installer des paquetages RPM sous Mandriva. apt-get, aptitude : Installer des paquets DEB (Mepis, Ubuntu, Knoppix, Debian...). alien : Convertir des paquetages RPM, DEV, Tar.Gz entre eux. emerge : Installer des ebuilds Gentoo. up2date, yum: Mise jour sur Redhat.

Recherche :

whereis, which : Rechercher une application. find : Rechercher un dossier ou un fichier. locate : Idem mais dans une base de donnes. Plus rapide. du : Affiche la taille des rpertoires.

Utilisateurs, droits et permissions :


adduser, addgroup, passwd, usermod : Gestion des utilisateurs, des groupes et des mots de passe. su, sudo : Passer la main l'administrateur (root) ou un autre utilisateur. chmod : Modifier les permissions sur un fichier. chown : Changer le propritaire/groupe d'un fichier. chgroup : Changer le groupe d'un fichier. chroot : Modifier la racine. Parfois trs utile.

Gestion des processus / tches :


ps & top : Voir les processus en cours. pidof : Affiche le Process IDentifier d'une application. kill, killall : Tuer un processus en cours. fuser : Afficher/tuer les processus accdant un fichier/dossier. nice : Fixe la priorit d'excution d'une tche. renice : Modifier la priorit d'excution d'une tche en cours. init : Changer de "run level" : sortir de X, rebooter, teindre. pstree : Afficher l'arbre gnalogique des processus lancs. cron : Planifier des tches priodiquement (outil crontab). lsof : listes les fichiers ouverts.

Tlchargement

wget, curl : Outils permettant de tlcharger les fichiers passs en paramtre. links : Navigateur web en ligne de commande.

Archivage

tar : Rassembler dans un fichier une liste de fichiers ou de rpertoires. gzip, bzip2 : Compresser un fichier au format gzip ou bzip2. zip, unzip : Compresser un fichier au format zip.

48

Gauthier Catteau - Armando Martins

Bash : l'interprteur de commandes

Enchanements de commandes :

> >> : Redigirer une sortie de commande vers un fichier. ; || && : Enchaner des commandes squentielle. | : Lancer des commandes simultanment via un 'pipe'.

Variables d'environnement

export : Charge une variable dans l'environnement courant. ( export http_proxy=http://monproxy :3128/ ) unset : Supprime cette variable. ( unset http_proxy )

Administration du systme :

fdisk, cfdisk : Formater et partitionner un disque. lsmod : Afficher les modules du noyau prsents en mmoire. modprobe : Manipulation de modules chargeables dans le noyau. mount, umount : Monter/dmonter des partitions dans l'arborescence de fichiers (/etc/fstab). lspci, lsusb : Affiche les priphriques branchs sur ports PCI, AGP ou USB. lshw : Liste votre matriel de manire propre. dmesg Affiche les messages du noyau.

C. Mon premier script.


Un script est une suite d'instructions lmentaires qui sont excutes de faon squentielle (les unes aprs les autres) par le langage de script. Dans cet article nous nous limiterons l'utilisation du shell comme langage, et en particulier du shell bash. Attention, n'esprez pas que le prsent document constitue un manuel complet de programmation ! C'est une courte introduction qui nous l'esprons, vous permettra d'crire de petits scripts qui vous rendront de prcieux services. Le langage Bash gre notamment :

La gestion des entres-sorties et de leur redirection. Le passage de paramtres. Les variables dfinies par le programmeur et des variables systmes. Des structures conditionnelles et itratives. Les fonctions internes.

Pour commencer, il faut savoir qu'un script est un fichier texte standard pouvant tre cr par n'importe quel diteur : vi, emacs, kedit, gnotepad, ou autre. D'autre part, conventionnellement, un script commence par une ligne de commentaire contenant le nom du langage utiliser pour interprter ce script, soit dans notre cas : /bin/bash (on parle alors de "script shell"). Nous allons donc commencer par crire un simple script que l'ont va nommer "bonjour_monde" et qui nous affichera "Bonjour monde !" lors de son xecution : #!/bin/sh echo "Bonjour, Monde !" echo "Un premier script est n." Comment on lexcute ? Cest simple il suffit de taper :

Gauthier Catteau - Armando Martins

49

Bash : l'interprteur de commandes

[user@becane user]$ sh bonjour_monde Ou bien on peut le rendre excutable avec la commande chmod comme ceci : [user@becane user]$ chmod +x bonjour_monde Des lors nous pourrons excuter notre script de cette faon : [user@becane user]$ ./bonjour_monde

Rappel
Rsumons : un script shell commence par : #!/bin/bash, il contient des commandes du shell et est rendu excutable par chmod +x.

D. Quelques conseils concernant les commentaires.


Dans un script shell, est considr comme un commentaire tout ce qui suit le caractre # et ce, jusqu la fin de la ligne. Usez et abusez des commentaires : lorsque vous relirez un script six mois aprs lavoir crit, vous serez bien content de lavoir document. Un programme nest jamais trop document, en revanche il peut tre mal document ! Un commentaire est bon lorsquil dcrit pourquoi on fait quelque chose, pas quand il dcrit ce que lon fait. Exemple : #!/bin/sh # pour i parcourant tous les fichiers, for i in ./* ; do # copier le fichier vers .bak cp $i $i.bak # fin pour done Que fait le script ? Les commentaires ne lexpliquent pas ! Ce sont de mauvais commentaires. En revanche : #!/bin/sh # on veut faire une copie de tous les fichiers du rpertoire courant for i in ./* ; do # sous le nom *.bak cp $i $i.bak done L au moins, on sait ce quil se passe (il nest pas encore important de connatre les commandes de ces deux fichiers).

E. Le passage de paramtres
Un script ne sera, en gnral, que dune utilisation marginale si vous ne pouvez pas modifier son comportement d'une manire ou d'une autre. On obtient cet effet en passant un (ou plusieurs) paramtre(s) au script via la ligne de commande. Voyons comment faire cela. Soit le script essai01 :

50

Gauthier Catteau - Armando Martins

Bash : l'interprteur de commandes

#!/bin/sh echo le paramtre \$1 est \"$1\" echo le paramtre \$2 est \"$2\" echo le paramtre \$3 est \"$3\" Que fait-il ? Il affiche les uns aprs les autres les trois premiers paramtres du script, donc si lon tape : $ ./essai01 paramtre un le paramtre $1 est "paramtre" le paramtre $2 est "un" le paramtre $3 est "" Donc, les variables $1, $2 $9 contiennent les mots numro 1, 2 9 de la ligne de commande. Attention : par mot on entend ensemble de caractres ne contenant pas de caractres de sparations. Les caractres de sparation sont l'espace, la tabulation, le retour chariot quand c'est possible et le point virgule. Vous avez sans doute remarqu que jai utilis les caractres : \$ la place de $ ainsi que \" la place de " dans le script. Pour quelle raison ? C'est simple : si l'on tape echo "essai" on obtient : essai, si l'on veut obtenir "essai" il faut dire echo que le caractre " n'indique pas le dbut d'une chane de caractre (comme c'est le comportement par dfaut) mais que ce caractre fait partie de la chane : on dit que l'on chappe ou protge le caractre " en tapant \". En chappant le caractre \ (par \\) on obtient le caractre \ sans signification particulire. On peut dire que le caractre \ devant un autre lui fait perdre sa signification particulire s'il en a une, ne fait rien si le caractre qui suit \ n'en a pas.

F. Les variables.
La programmation sous shell ncessite naturellement des variables, pour stocker des informations temporaires, accder des paramtres, etc. Le contenu d'une variable est considr comme une chane de caractres, sauf si on indique explicitement qu'elle doit tre trait comme une variable entire, qui peut tre utilise dans des calculs arithmtiques. De plus, le shell ne permet pas de manipuler directement des donnes en virgule flottantes. A la diffrence des langages compils habituels, une variable n'a pas tre dclare explicitement. Ds qu'on lui affecte une valeur, elle commence exister. Cette affectation prend la forme 'variable=valeur' sans espace autour du signe gal. Le message d'erreur 'i : command not found' est peut-tre le plus connu des utilisateurs du shell. Exemple : $ i = 1 bash : i : command not found En raison des espaces autour du signe gal, Bash a cru que l'on essayait d'invoquer la commande 'i' en lui transmettant les arguments '=' et '1'. La bonne syntaxe est la suivante : $ i=1 Pour accder au contenu d'une variable, il suffit de prfixer son nom avec le caractre '$'. Il ne faut pas confondre ce prfixe des variables avec le symbole
Gauthier Catteau - Armando Martins

51

Bash : l'interprteur de commandes

d'invite du shell qui est gnralement le mme caractre '$'. La commande echo affiche simplement le contenu de la variable. $ echo $i 1 Le nom attribu une variable peut contenir des lettres, des chiffres, ou le caractre soulign '_'. Voyons quelques exemples : $ variable=12 $ echo $variable 12 Il faut donc comprendre que le shell a remplac la chane $variable par sa valeur, 12, avant d'appeler la commande 'echo'. Cette dernire a donc t invoqu par la ligne de commande 'echo 12'. $ variable=abc def bash : def : command not found Ici le shell n'a pas pu interprter correctement cette ligne, car il a cru quelle se composait d'une affectation 'variable=abc', suivie d'une commande nomme 'def' (syntaxe rarement utilis, mais autorise). Il faut lui indiquer que les mots droite du signe gal forment une seul chane de caractres. On emploie pour cela les guillemets droits : $ variable="abc def" $ echo $variable abc def Nous pouvons aussi vrifi qu'une variable qui n'a jamais t affecte est considre comme une chane vide : $ echo $inexistante Elles sont gres par le systme et s'avrent trs utiles dans les scripts. Bien entendu, elles ne sont accessibles qu'en lecture. Ces variables sont automatiquement affectes lors d'un appel de script suivi d'une liste de paramtres. Leurs valeurs sont rcuprables dans $1, $2 ...$9. $? : C'est la valeur de sortie de la dernire commande. Elle vaut 0 si la commande s'est droule sans problme. $0 : Cette variable contient le nom du script qui a t appel. $1 $9 : Les (ventuels) premiers arguments passs l'appel du script, comme vue prcdemment. $# : Le nombre d'arguments passs au script. $* : La liste des arguments partir de $1. $$ : Le numro PID du processus courant. $! : le n PID du processus fils.

G. Protection des expressions.


Il peut arriver que certaines expressions possdent des caractres qui ont une signification particulire pour le shell, et que nous ne souhaitions pas qu'elles soient interprts par ce dernier.

52

Gauthier Catteau - Armando Martins

Bash : l'interprteur de commandes

Par exemple, afficher le prix amricain '$5' n'est pas facile : $ echo $5 $ echo "$5" En effet, le shell peut en dduire que vous souhaitez afficher le contenu du cinquime paramtre positionnel, vide en l'occurrence. De mme, le symbole '#' sert introduire un commentaire qui s'tend jusqu' la fin de la ligne, et le sens d'un message peut en tre modifi : $ echo en Fa # ou en Si ? en Fa Une autre surprise attend le programmeur qui veut raliser un joli cadre autour du titre de son script : $ echo ****************************** toto titi tata tete Le caractre '*' remplace n'importe quelle chane dans un nom de fichier. La commande echo reoit donc en argument la liste des fichiers du rpertoire courant. La solution adquate consiste protger le caractre spcial de l'interprtation du shell. Cela peut s'effectuer de plusieurs manires. On peut ainsi utiliser le caractre backslash (barre oblique inverse) '\' , les apostrophes ' ', ou encore les guillemets " ".

Protection par le caractre backslash.


Ce caractre sert dsactiver l'interprtation du caractre qu'il prcde. Ainsi, on peut crire : $ echo \$5 $5 $ echo en Fa \# ou Do \# en Fa # ou Do # $ echo \*\*\* *** Le caractre backslash peut servir prfixer n'importe quel caractre, y compris lui-mme : $ echo un \\ prcde \$5 un \ prcde $5 Lorsqu'il prcde un retour chariot, le backslash a pour effet de l'liminer et la saisie continue sur la ligne suivante. $ echo dbut \ > et fin. dbut et fin.

Protection par apostrophes.


La protection des expressions par un backslash qui prcde chaque caractre spcial est parfois un peu fastidieuse, et on lui prfre souvent le mcanisme de protection par apostrophes, qui permet de manipuler toute l'expression en une seule fois. Entre des apostrophes tous les caractres rencontrs perdent leur signification spciale. Cela signifie que le backslash est un caractre comme les autres, et que l'on ne peut pas l'employer pour protger une apostrophe. Le seul caractre qui ne puisse pas tre inclus dans une chane protger par des apostrophes est donc l'apostrophes lui mme. $ echo '#\s"&>|'

Gauthier Catteau - Armando Martins

53

Bash : l'interprteur de commandes

#\s"&>| Lorsqu'un retour chariot est prsent dans une chane entre apostrophes, la reprsentation du code est inchange : $ echo 'dbut > milieu > et fin' dbut milieu et fin

Protection par guillemets.


La protection par des apostrophes est totale, chaque caractre garde sa signification littrale. Il arrive pourtant que l'on prfre quelque chose d'un peu moins strict. La protection par des guillemets est plus adapte. Entre les guillemets, les caractres '$', apostrophes, et backslash retrouvent leur significations spciales, alors que les autres sont rduits leur expressions littrales. En fait, le backslash et le '$' n'ont un sens particulier que s'ils sont suivis d'un caractre pour lequel l'interprtation spciale a un sens. Voyons quelques exemples : $ A="ABC DEF" $ B="$A $ \$A \ \" " $ echo $B ABC DEF $ $A \ " Dans l'affectation de la variable B, le premier '$' est suivi de A ; l'valuation fournit le contenu de la variable A. Le deuxime '$' est suivi par un espace, et une interprtation autre que littrale n'aurait pas de sens. Le troisime '$' est prcd d'un backslash, il n'a donc pas de sens particulier, et l'on affiche les deux caractres $A. Le backslash suivant prcde un espace, la seule interprtation est donc littrale. Comme le guillemet suivant est prcd d'un backslash, il est littrale et ne sert pas fermer la chane ; il est donc affich. Et pour finir le dernier guillemet clt l'expression.

H. Structures de contrle
En algorithmique, l'excution des instructions se dfinit classiquement selon trois types d'enchanements : Squence : les instructions sont excutes l'une aprs l'autre, chacune attendant la fin de la prcdente pour dmarrer. Slection : Certaines instructions seront excutes ou non en fonction d'une condition. Itration : Une instruction est rpte plusieurs fois, en fonction d'une condition. Nous pouvons ajouter aux possibilits des scripts shell les excutions parallles de tches.

54

Gauthier Catteau - Armando Martins

Bash : l'interprteur de commandes

1. Slection d'instructions.
a) Construction if-then-else.
la structure "if-then-else" permet l'excution conditions. Voici la syntaxe complte de cette construction : d'instruction sous certaines

Syntaxe
if [ condition_1 ] ; then commande_1 elif [ condition_2 ] ; then commande_2 else commande_n fi La "condition_1" est excute. Il peut s'agir d'une commande compose quelconque, mais on emploie souvent la commande [ ] pour vrifier une condition. Le code de retour de "condition_1" est examin. S'il est nul, alors la condition est considre comme vraie. Dans ce cas, la commande compose "commande_1" est excute, puis le contrle est transfr la fin de la construction, aprs le "fi". Si le code de retour de "condition_1" est non null, elle n'est pas vrifie. Le contrle passe alors la deuxime partie de la slection, l'instruction "elif" (contraction de "else if", en franais "sinon si"). La "condition_2" est excute, puis, si elle est vrifie, la "commande_2" est excute. Sinon, le contrle passe la dernire partie, indique par else (en franais sinon, c'est dire dans tous les autres cas), et "la commande_n" est excute.

b) Construction case-esac.
La seconde structure de slection propose par le shell est introduite par le mot-cl "case", et termine par esac. La forme gnrale en est la suivante :

Syntaxe
case expression in motif_1 ) commande_1 ; ; motif_2 ) commande_2 ; ; .... esac L'expression indique la suite du case est value puis sont rsultat est compar (en tant que chane de caractres) avec les diffrents motifs fournis ensuite. Si la correspondance entre l'expression et le motif est ralise, les commandes composes qui le suivent sont excutes, puis le contrle passe la fin de la structure Les motifs peuvent contenir des caractres gnriques du shell comme l'astrisque qui remplace n'importe quelle squence de caractres, le point d'interrogation qui remplace un unique caractre, ou un encadrement de caractres entre crochets indiquant une alternative ou un intervalle. Des motifs peuvent galement tre juxtaposs avec un symbole "|" signifiant OU.
Gauthier Catteau - Armando Martins

55

Bash : l'interprteur de commandes

c) Les conditions de tests.


Dans une construction"if-then", la condition qui se trouve aprs le "if" ou le "elif" est reprsente par une fonction dont le code de retour correspond une valeur vraie (0) ou fausse (retour non nul). Dans de trs nombreux cas, les conditions que nous souhaiterons vrifier consisteront en des comparaisons numriques, comparaisons de chanes de caractres, ou consultations de l'tat d'un fichier. Pour ce faire, le shell Bash nous offre un oprateur interne nomm "test" qui accepte les arguments suivants en ligne de commande :

56

Gauthier Catteau - Armando Martins

Option

Vraie si
Le fichier indiqu existe. L'option -a n'tant pas dfinies Single Unix Version 3, on lui prfrera -e.

Gauthier Catteau - Armando Martins

2. Itrations d'instructions.

-a fichier

a) Introduction

Tableau 1 : Tableau des conditions

Les squences d'instructions se prsentent traditionnellement sous deux formes :

-e fichier -b fichier -c fichier -d rpertoire -f fichier -g fichier -h fichier -G fichier -k fichier -n chane -N fichier -O fichier -p fichier -r fichier -s fichier -S fichier -t description -u fichier -w fichier -x fichier -z chane chane chane_1 = chane_2 chane_1 != chane_2 chane_1 < chane_2 chane_1 > chane_2 valeur_1 -eq valeur_2 valeur_1 -ge valeur_2 valeur_1 -gt valeur_2 valeur_1 -le valeur_2

Le fichier indiqu est un nud spcial qui dcrit un priphrique en mode bloc. Le fichier indiqu est un nud spcial qui dcrit un priphrique en mode caractre. Le rpertoire indiqu existe. Le fichier indiqu est un fichier rgulier. Le bit Set-GID du fichier indiqu est positionn. Le fichier indiqu est un lien symbolique. Le fichier indiqu appartient au mme groupe que le GID effectif du processus invoquant la commande test. Le bit sticky du fichier indiqu est positionn. La longueur de chane indique est non nulle. Le fichier indiqu a t modifi depuis son dernier accs en lecture. Le fichier indiqu appartient au mme utilisateur que l'UID effectif du processus invoquant la commande test. Le fichier indiqu est un tube nomm (fichier (FIFO). Le fichier indiqu est lisible. La taille du fichier indiqu est non nulle. Le fichier indiqu est un socket. La description du fichier correspond un terminal. Le bit Set-UID du fichier indiqu est positionn. On peut crire dans le fichier indiqu. Le fichier indiqu est excutable. La longueur de chane indique est nulle. La chane est non nulle. Les deux chanes sont identiques. Les deux chanes sont diffrentes. La premire chane apparat avant la seconde dans un tri lexicographique croissant. La premire chane apparat aprs la seconde dans un tri lexicographique croissant. Les deux valeurs arithmtiques sont gales. La premire valeur est suprieure ou gale la seconde. La premire valeur est strictement suprieure la seconde. La premire valeur est infrieure ou gale la seconde.

Les mmes options peuvent tre utilises dans la commande interne [ ] qui est un synonyme de "test".

Celles qui consistent en un nombre limit de boucles (rpter 10 fois la

Bash : l'interprteur de commandes

57

Bash : l'interprteur de commandes

squence). Et celles qui dpendent d'une condition d'arrt (recommencer tant que le maximum n'est pas atteint). Les deux constructions proposes par le shell refltent ces deux mcanismes.

b) Rptitions while-do-done et until-do-done. Introduction


Les deux structures "while-do-done" et "until-do-done" servent rpter une squence d'instructions jusqu' ce qu'une condition soit vrifie.

Syntaxe : Instruction while-do-done


while [ condition commandes done ]; do

Exemple
#!/bin/bash echo "Entrez un nom de fichier" read fich while [ -z "$fich" ] ; do echo "Saisie recommencer" read fich done Dans cet exemple le script nous demande de rentrer un nom de fichier et si nous ne rentrons rien, la boucle recommence jusqu' ce que la chane de caractre ne soit pas vide.

Syntaxe : Instruction until-do-done


until [ condition ] ; do commandes done

Exemple
#!/bin/bash until [ "$var1" = fin ] ; do echo "Variable d'entre" echo "(fin pour sortir)" read var1 echo "variable = $var1" done Ici la boucle continuera jusqu' ce que nous tapions le mot fin.

Conclusion
La premires construction rpte les commandes composes qui se trouvent dans le corps de la boucle tant que (while) la condition est vrifie. La seconde les rpte jusqu' ce que (until) la condition devienne vraie ; en d'autres thermes elle les rpte tant que la condition est fausse. Le code de retour gnral est celui de la dernire commande excute.
Gauthier Catteau - Armando Martins

58

Bash : l'interprteur de commandes

c) Construction for-do-done. Introduction


La boucle "for" est un grand classique que l'on rencontre dans la plupart des langages de programmation. Hlas, son fonctionnement dans les scripts shell est totalement diffrent. Une boucle "for-do-done" avec Bash se reprsente ainsi :

Syntaxe : Instruction for-do-done


for variable in liste_de_mots ou commande ; do commandes done La variable va prendre successivement comme valeur touts les mots de la liste ou de la sortie de la commande suivant le in, et le corps de la boucle sera rpt pour chacune de ces valeurs.

Exemple
Voyons un exemple avec une liste de mots: # !/bin/bash for i in 1 2 3 5 7 11 13 ; do echo "$i = $((i * i))" done Dont l'excution affiche les carrs des premiers entiers indiqus : $ ./exemple_for_1.sh 1 = 1 2 = 4 3 = 9 5 = 25 7 = 49 11 = 121 13 = 169

Gauthier Catteau - Armando Martins

59

VIII -

Conclusion

VIII

Merci de votre attention.

Gauthier Catteau - Armando Martins

61

Вам также может понравиться