Академический Документы
Профессиональный Документы
Культура Документы
2008-07
Paternit - Pas d'Utilisation Commerciale - Partage des Conditions Initiales l'Identique : http://creativecommons.org/licenses/by-nc-sa/2.0/fr/
3 11
15
23
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
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
49
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
Objectifs
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. . .
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.
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/ .
11
Prsentation de GNU/Linux
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
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.
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.
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 ...
I386 et x86_64 (notre P.C.) POWERPC (Ancien Macintosh) AMD64 ARM HPPA ALPHA IA64 MIPS MIPSEL Et pour finir SPARC
14
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
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
16
Remarque
Dans notre cas, nous allons dmarrer notre machine virtuelle et "booter" sur le cd virtuel.
17
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.
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
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.
19
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
III
23 23 23 23 23
Les application de Bureautique Les outils Graphiques Les outils pour internet. Les applications Multimdia. Les outils de virtualisation.
21
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 ?
apt-cache search Nom_du_paquet ou mot_clef Ensuite pour installer l'application on tape la commande :
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. . . .
23
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.
24
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.
25
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 .
Arrt et suppression des services inutiles. Mise jour du systme. Configuration du Firewall avec l'un des outils suivants :
a. b. c. d.
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
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
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
28
fichier. Cela permet d'utiliser un mme fichier sous plusieurs noms sans avoir le dupliquer sur le disque.
/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...
29
/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
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
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 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.
31
retrouverez tous vos paramtres comme avant le formatage du systme,si vous gardez le mme nom de compte.
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
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).
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 !
33
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
VI -
Gestion Avance
Gestions des utilisateurs et des groupes. Planification de tches : cron et atd. L'accs distance par SSH.
VI
39 41 44
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.
35
Gestion Avance
identifiant (ou login). mot de passe chiffr. plusieurs champs de gestion de l'expiration du mot de passe.
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.
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".
2. Cron
Dans un systme Unix, de nombreuses tches sont rgulirement planifies :
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").
38
Gestion Avance
@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.
39
Gestion Avance
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.
Exemple
la phrase "Linux, moi j'y comprends rien de rien !" donne le mot de passe L,mj'ycr2r
40
Gestion Avance
41
Gestion Avance
Remarque
Vous pouvez tout moment changer la pass phrase qui protge votre cl prive avec la commande "ssh-keygen -p".
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
Gestion Avance
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.
43
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.
45
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.
46
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.
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.
47
wc : Compte le nombre de lignes, mots et caractres. awk : Remise en forme de donnes texte.
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.
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.
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
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.
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 :
49
[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.
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
#!/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
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.
52
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 " ".
53
#\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
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
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
56
Option
Vraie si
Le fichier indiqu existe. L'option -a n'tant pas dfinies Single Unix Version 3, on lui prfrera -e.
2. Itrations d'instructions.
-a fichier
a) Introduction
-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".
57
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.
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.
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
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
59
VIII -
Conclusion
VIII
61