Linux Intro

43

description

introduction Linux

Transcript of Linux Intro

Page 1: Linux Intro

Linux : Découverte et Utilisation

11 décembre 2014

Abdelkader BELAHCENE

[email protected]

Page 2: Linux Intro

Table des matières

Introduction 2Avantages du Logiciel Libre (Open Source) . . . . . . . . . . . . . . . . . . . . 2Bref Apercu sur Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1 Prise en Main 61.1 L'accès a la machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.2 Gestionnaire Graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.3 Utilisation de Terminal Graphique . . . . . . . . . . . . . . . . . . . . . . 71.4 Utilisation d'éditeur de Texte . . . . . . . . . . . . . . . . . . . . . . . . 81.5 Quelques Outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.6 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2 Concepts de Base 122.1 Le Système des Fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.2 Commandes de Base Utilisateur . . . . . . . . . . . . . . . . . . . . . . . 122.3 Environnement Utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . 142.4 Autres Commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.5 Divers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.6 Un Peu de Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182.7 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

3 Petite Administration 303.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303.2 Gestion du Disque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.3 Fichiers Systèmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.4 Les Processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.5 Installation de Logiciel . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.6 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

4 Introduction aux Réseaux 374.1 Communications à Travers les Réseaux . . . . . . . . . . . . . . . . . . . 374.2 Création de sous Réseaux . . . . . . . . . . . . . . . . . . . . . . . . . . 374.3 Le Serveur ssh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

2

Page 3: Linux Intro

Introduction 1

L'objet de cette partie est de faire une présentation rapide du système linux, et des outilsessentiels non seulement pour l'utilisation et mais aussi une �petite administration� d'unemachine tournant sous linux.

Je veux dans ce document dépasser un peu, la simple utilisation de la machine, etmontrer quelque soit peu, comment regler certains problemes. C'est un peu comme unconducteur de voiture, qui doit connaitre les rudiments de la mechanique et de l'élécricitéauto. Imaginer un conducteur qui, pour changer un roue, il doit appeler une tiercepersonne ! ! ?

Bien entendu pour la panne mécanique, il faut voir un spécialiste ! !

Avant de parler du système linux, pour donnons un aperçu sur les logiciels libres etmontrer leur importance. Linux est l'exemple le plus frappant de logiciel libre.

Ce document s'adresse aussi bien aux personnes qui ont déjà utilisé et/ou administréune machine sous Linux mais qui veulent remettre un peu les choses en place et mieuxcomprendre surtout la distribution Debian et derives et un peu aussi RedHat.

Une bonne partie est réservée a la programmation shell, sans laquelle il n' y a pasd'administration.

Pour la document et sites utiles voir essentiellement : www.tldp.org, www.debian.org,www.linuxtoday.com, www.linux.org, www.linuxquestions.org, www.opensource.

org, sourceforge.net

Avantages du Logiciel Libre (Open Source)

L'arrivée fulgurante ces dernières années, sur le marché international, des logiciels libreset gratuits, fait rapidement changer les relations entre développeurs de logiciels et utili-sateurs. Il y a actuellement un engouement mondial aux logiciels libres. Les raisons sontmultiples politiques, économiques et strategiques. Il su�t de regarder quelques articlespour s'en convaincre, voir par exemple :

� France : http ://www.liberation.fr/page.php ?Article=216428 (article du 18 Juin2004)

� USA : http ://www.nsf.gov/od/lpa/news/03/pr03132.htm

1. [email protected]

3

Page 4: Linux Intro

Table des matières Page 4

Ou encore des articles plus récents, comme par exemple (Avril 2009) solutions-linux-2009-l open-source-arme-anticrise-2857.html sur le site http://www.indexel.net/actualites/ou le rapport du Lieutenant colonel Xavier Guimard de la gendarmerie francaise http://gendarmerie.defense.gouv.fr

Nous donnons ci-après les avantages essentielles :

1. Liberté d'utilisation et de choix de logiciels (ou libre choix de l'outil)

2. Liberté de modi�cation (compléter améliorer et redistribuer )

3. Liberté d'aider son prochain (travail coopératif) grace aux innombrables forumslies a chaque logiciel et sites d'aide.

4. Liberté de choisir son fournisseur

5. Abandonner le piratage des logiciels avec tous les inconvénients qui y sont liés(virus, espionnage, illégalité...).

Le logiciel libre o�re une opportunité importante de formation, surtout pour les étudiantset développeurs. Il leur permet de comprendre le fontionnement des logiciels, commentils sont ecrits et de les adapter a leur besoins. Bien sur gratuitement ce qui convientparfaitement aux etudiants aux ressources generalement limitees.

De plus des groupes de developpeurs peuvent se former facilement autour d'un theme etaider ainsi a la creation de petites entreprises et de ne pas dependre de grands editeursqui n'encouragent pas du tout le transfert de la technologie et du savoir.

Voici une partie du message (traduit) envoyé par Richard Stallman en Sept 1983 à lacommunauté internationale :

�Newsgroups : net.unix-wizards,net.usoftOrganization : MIT AI Lab, Cambridge, MAFrom : RMS%MIT-OZ@mit-eddie�Sujet : nouvelle implémentation UnixUnix libre ! À partir de cette correspondance, je vais écrire un système

complet compatible avec Unix logiciel appelé GNU (pour Not Unix Gnu) , etde le céder gratuitement à tous ceux qui peuvent l'utiliser. Contributions detemps, d'argent , de programmes et de matériel sont grandement nécessaires... .... .....Pourquoi je dois écrire GNU Je considère que la règle d'or exige que

si j'aime un programme , je dois le partager avec d'autres personnes

qui aiment ça . Je ne peux pas en bonne conscience signer un accord denon-divulgation ou d'un accord de licence du logiciel . Alors que je peux

continuer à utiliser les ordinateurs sans violer mes principes, j'ai

décidé de mettre sur pied un ensemble suffisant de logiciels libres,

afin que je serai en mesure de me passer de tout logiciel qui n'est

pas libre. Comment participer ? Je demande des fabricants d'ordinateursdes dons de machines et d'argent. Je demande aux individus de faire desdons de programmes et de travail. Un fabricant d'ordinateur a déjà o�ert defournir une machine ....... Pour plus d'informations , contactez-moi.�

LinuxIntro Belahcene 11 décembre 2014

Page 5: Linux Intro

Table des matières Page 5

Bref Aperçu sur Linux

Initialement parler de linux c'était parler du noyau du système, car au fait seul le noyauest linux, après abus de langage tous les logiciels installés sur linux font le � systèmelinux �.

Le noyau est le coeur du système qui gère les périphériques : les disques durs, la mémoireles imprimantes etc..,. Le reste des logiciels sont programmes qui tournent autour de cenoyau pour accomplir la tache adéquate. Par exemple le programme de navigation réseau�refox ne fait pas parti du système linux, c'est une application qui permet de connecterun utilisateur a travers le réseau (carte réseau et autres périphériques) gérer par linux.L'interface graphique non plus ne fait pas partie de linux , c'est aussi une applicationqui utilise les ressources de la carte vidéo et autres gérés par le noyau pour présenter lesimages et autres graphiques.

Linux fait parti de la classe des systèmes UNIX, développés et utilise depuis les années70, avec en plus l'avantage d'être libre.

Pourquoi, donc utiliser Linux :

1. D'abord c'est un système open source, avec tous les avantages précités.

2. Ensuite il hérite de plus d'une quarantaine d'années d'expériences de part lemonde des développeurs sous Unix/Linux.

3. En�n il a la robustesse des grands systèmes et la facilité d'utilisation des systèmesorientés � bureau �. En un mot un grand système dans une petite machine.

4. Après tout cela vous ne payez pas un sou pour l'obtenir.

LinuxIntro Belahcene 11 décembre 2014

Page 6: Linux Intro

1 Prise en Main

1.1 L'accès a la machine

Le système linux étant un système multi-utilisateur, pour y accéder on doit entrer unnom et mot de passe utilisateur.

Par défaut 6 terminaux texte, le 7ieme est un accès graphique, on accède avec Ctrl+Alt+F1(ou F2, ..F6, F1 à F6 sont les clés de contrôle en haut du clavier).

Parfois il est utile de travailler sans faire tourner les applications graphiques, commedans les cas suivants :

1. Lorsque des programmes très gourmands en consommation mémoire et/ou enpuissance de calcul (CPU), on récupère les ressources de la machine en arrêtanttous les programmes inutiles et surtout l'interface graphique.

2. Si la machine est utilisée comme serveur (ftp, web, dns ...) où le graphisme n'estpas requis 1.

3. Pour faire de la maintenance ou de la réparation du système.

Il est recommandé de se loger toujours en simple utilisateur, et de basculer si nécessairepour faire de l'administration, avec la commande � su � ou d'utiliser la procédure � sudo �(voir section (3)).

Si on veut accéder au terminal texte, il su�t basculer avec Ctrl+Alt+F1 (ou F2, ...F6)entrer le login et le password. Pour revenir au graphisme utiliser Ctrl+Alt+F7. On peutaussi avoir plus d'une interface graphique. C'est une émulation de terminaux graphiques.

Exercice 1. On obtient ainsi un utilisateur en mode texte sur terminal 2 et un utilisateur2 sur le terminal 8 (Ctrl+Alt+F8), avec évidemment l'utilisateur U1 sur le terminal 7(Ctrl+Alt+F7). Au fait on peut avoir ces terminaux sur plusieurs terminaux physiques.

1.2 Gestionnaire Graphique

Actuellement les gestionnaires graphiques les plus utilisés et les plus courants sont Gnomeet Kde. Il existent beaucoup d'autres, plus légers et moins puissants mais consommantmoins de ressources utiles aux machines à mémoire limitée, par exemple Xfce, Fvwm,Flubox.

1. Les gros problèmes viennent souvent du graphisme

6

Page 7: Linux Intro

1.3. Utilisation de Terminal Graphique Page 7

Une fois l'utilisateur logé, une interface graphique est ouverte, assez habituelle, avecles menus et fenêtres. Nous donnons un rapide descriptif de l'interface GNOME 2. Ladisposition des menus est légèrement di�érente du gestionnaire KDE 3, mais les mêmefonctionnalités existent.

Repérer le menu des applications du bureau. Remarquer d'abord que le bureau pos-sède plusieurs bureaux virtuels, qui sont utiles pour garder ouvertes plusieurs fenêtresd'applications en parallèles sont qu'elles soient visibles en même temps.

Le bureau complet peut être personnaliser, voir les outils dans le menu des préférences.

1.3 Utilisation de Terminal Graphique

Bien que sur l'interface graphique on utilise les outils graphique pour travailler, la ligne decommande est indispensable, aussi terminal est requis. Plusieurs outils existent, chercherdans la liste des accessoires l'outil par defaut, par exemple sous gnome c'est gnome-terminal. Dans la fenêtre terminal on peut ouvrir plusieurs onglet de terminaux

Par quelques exemples, nous montrons l'importance de la ligne de commande, elle permetde di�érer les taches :

Exemple 2. Supposer vouloir télécharger un document volumineux et que la connexionsoit limitée, on décide alors de le faire de nuit, disons vers 2 heures du matin ! ! !, ce quiest di�cile à faire à travers un navigateur. Une solution simple est de le faire avec lacommande wget 4 en di�éré grâce à la commande at 2 :00.

De même avec la ligne de commande on peut réaliser très simplement des taches répé-titives :

Exemple 3. Supposer que vous vouliez convertir une liste d'images (disons 120 images ! ! !)gif en image png, ce que vous pouvez faire avec les visionnaire graphique d'images (ima-gemagick par exemple), seulement vous êtes obligé d 'ouvrir les images une a une et deles exporter dans le nouveau format, avec la commande il su�t de faire une boucle :

for i in $(ls *.gif) ; doconvert $i.gif $i.jpeg 5

done

Schéma d'une commande : cmd options paramètres, les options commencent par �-�par exemple ls -l /home liste le répertoire /home avec l'option format long (-l) 6

2. GNOME http://www.gnome.org3. KDE http://www.kde.org4. taper man wget pour avoir l'aide sur wget5. nous verrons une amélioraton du script

6. attention au signe � - �, car ls l /home liste les répertoires l et /home

LinuxIntro Belahcene 11 décembre 2014

Page 8: Linux Intro

1.4. Utilisation d'éditeur de Texte Page 8

1.4 Utilisation d'éditeur de Texte

Pour écrire un texte il faut utiliser un éditeur de texte 7. Un éditeur de texte rend �dè-lement le texte qui est tapé sans ajout de caractères supplémentaire pour le formatage.Pour voir la di�érence entre un traitement de texte et un éditeur, tapez une phrasedans � write � par exemple d'openo�ce, sauvegarder le �chier �ch1.doc et la mêmephrase dans l'éditeur gedit, la sauvegarder dans �ch2.txt, ensuite faire cat �ch1.txt etcat �ch2.doc.

Un éditeur est utile pour administration ou développement par exemple pour écrire unprogramme en shell, en C, pascal, php, html, latex.

vi editeur s'ouvrant dans un terminal, très utile si on n a pas de graphisme. il adeux mode de fonctionnement : mode commande, taper i pour insérer du texte,échappe pour revenir au mode commande. taper :x pour sauvegarder et quitter.

nano il est plus facile à utiliser que vi, la barre des commandes s'a�che en bas,utiliser la touche ctrl avec les lettres indiquées. Les commandes courantes :Ctrl+x puis Return : enregister, Ctrl+x : quitter, Ctrl+w : Chercher, Ctrl+k :Couper, Ctrl+u : Coller

emacs éditeur tres puissant, mais aussi gestionnaire de �chier, il s'ouvre dans unterminal, mais aussi en graphique. Retenir que pour créer un �chier taper le nomdans la barre en bas de feuille. Il comprend un grand nombre de langages (C, C++,java, html, php ...), met les couleurs sur les mots cles. On peut selectionner avecla souris et coller avec le bouton du milieu. Pour les raccourcis, surtout utile pourediteur Texte sans graphique, la plupart sont donnés dans le menu graphique. Onpeut utiliser TAB pour autoCompletion dans la ligne de commande.Vous pouvez meme jouer sous emacs, par exemple Alt+x mpuz, jouer au puzzle.Retenir :

Ctrl+x Ctrl+f : Création de �chier Ctrl+x Ctrl+s : Sauvegarde

Ctrl+g : Annuler la commande Ctrl+k : Supprime une ligneCtrl+(espace) : début selection Alt+w : Copier dans pressePapierCtrl+y : Coller du pressePapier. Ctrl+x+2 : Divise la fenetre horizontal.Alt+x+c-mode : edit en mode C Alt+o+i : mettre en italicCtrl+x+r+d : Supprime le rectangleCtrl+x+r+r t 8 : copie rectangle dans t Ctrl+x+r+g t 9 : recupere rectangle depuis t

gedit un éditeur graphique simple d'utilisation, installé par défaut sur l'environne-ment gnome. Il y a beaucoup d'autres éditeurs par exemple kate, kedit etc...,l'utilisateur a le libre choix.

7. Ne pas confondre avec traitement de texte

LinuxIntro Belahcene 11 décembre 2014

Page 9: Linux Intro

1.5. Quelques Outils Page 9

mc Midnight Commander, est un gestionnaire de �chier, qui souvre dans un terminalet en meme temps editeur. Utiliser la touche Inser pour selectionner les �chiers,voir les commandes en bas de fenetre, les numéros concernent les clés, par exempleF5 pour copier, F8 pour supprimer.

geany

Bien qu'il existe des outils � composer � qui font interface et � facilitent � le développe-ment sur certains langages, il reste important de maîtriser l'instruction ou la commandedu langage avant d'utiliser l'interface. Pour être plus précis voyant l'exemple suivant :

Exemple 4. Par exemple au lieu d'écrire la commande html : <title> C'est mapage web </title> qui met un titre à une page Web, on peut sur un éditeur mozilla� composer �, par exemple, utiliser le bouton de titre correspondant.

L'inconvénient liée à cette apparente facilité (est ce réellement une facilité ! !) est queles connaissances du développeur dans le langage concerné (ici html) se restreignent àl'apprentissage de �l'outil composer� au lieu du langage de base lui même, ajouter àcela la dépendance totale à l'outil. De plus l'outil permet rarement d'exploiter toutes lespossibilités des langages et ajoute parfois des codes inutiles.

1.5 Quelques Outils

Pour découvrir l'environnement des outils, programmes et logiciels installés, faire le toursur les menus applications. Au fait quand on installe Linux un on installe avec le systèmedes centaines de logiciels avec et on peut compléter a n'importe quel moment. Pour se�xer les idées, au monte ou sont écrites ces lignes, la distributions � debian � : site o�cielDebian www.debian.org a une trentaine de CD, pas moins de 25 000 logiciels libres etgratuits téléchargeable gratuitement à partir du site, presque la moitie sur le site deRedhat/Fedora. On peut évidemment la compléter avec d'autres logiciels se trouventsur d'autres sites de Linux 10.

Libreo�ce suite de bureautique basée suite la suite staro�ce de sun contient : letraitement de texte, le tableur, le Présentateur. Cette suite remplace en mieux lasuite msO�ce (compatible) . D'autres outils ont les même fonctionnalités, maisles suites ne sont pas complètes c'est le cas du traitement de texte abiword ou dutableur gnumeric. On outre la compatibilité mso�ce n'est pas assurée.

Firefox est un navigateur internet, basé sur le netscape (qui n'est pas open source),qui permet de visualiser le rendu avec exécution du code html. D'autres naviga-teurs par exemple sont netscape, konqueror, opera, amaya.

nautilus Navigateur de répertoires et �chiers

10. voir par exemple Open Source www.sourceforge.org

LinuxIntro Belahcene 11 décembre 2014

Page 10: Linux Intro

1.6. Exercices Page 10

Lyx/Latex 11 Traitement de texte scienti�que, avec génération automatique des ré-férences , table des matières et des �gures et prise en charge totale des symbolemathématiques.

totem Visionnaire de vidéo, ka�eine ou xine sont d,autres lecteurs de �lms.

evince visionnaire des �chiers de format ps ou pdf. xpdf, gpdf, kpdf oui acroreadsont d'autres lecteurs de format pdf ou/et PostScript.

x�g outil pour dessiner des graphiques en mode vectoriel 12, qui peuvent être sauve-gardés en di�érents format ps, eps, gif, jpeg etc...

gimp visionnaire, manipulateur et traitement d'images (genre photoshop).

gnuplot traceur de courbes pour des fonctions ou tableau de coordonnées.

ksnapshot capteur d'images, de fenêtre ou encore de tout l'écran.

kuickshow visionneur d'images et des diapos

gnomeBaker graveur de CD/DVD ou k3b

qcad outil de conception de dessin d'architecture (genre autocad)

scilab calcul mathématique et scienti�que (genre matlab), ou octave.

graphviz permet la visualisation d'un �chier avec code spécial très simple en �guregraphique.

La navigation sur les �chiers, il su�t de cliquer sur l'icône �home�, pour voir les di�érentsrépertoires et �chiers.

1.6 Exercices

Certaines commandes ne fonctionnent pas avec un terminal distant, avec desclients leger par exemple, par exemple choix du clavier ou bien basculementvers terminal texte (Ctrl+Alt+F1).

1. Passer au terminal 1, (Ctrl+Alt+F1), se loger en utilisateur U1, passer au termi-nal 2, (Ctrl+Alt+F2), se loger en utilisateur U2. Lancer la commande startx, voirles erreurs, puis 13 : startx � :1. Utiliser Ctrl+Alt+F7 et Ctrl+Alt+F8 passerd'une écran à un autre.

2. Personnalisez votre bureau :

a) ajouter des boutons de fermeture de la barre des menus

b) changer nombre de bureaux virtuels

c) insérer un bouton de clavier avec (fr, us, ar)

d) ajouter un raccourci pour le terminal

12. Le �chier est forme de commandes qui reconstruit le dessin13. Pour les commandes voir la section (3)

LinuxIntro Belahcene 11 décembre 2014

Page 11: Linux Intro

1.6. Exercices Page 11

e) ajouter un raccourci pour evince

f) ajouter un bouton a une application non listee dans le menu (par exemplecheese).

3. Personnaliser le terminal, emacs et gedit.

4. La commande gksu permet a l'utilisateur de creer un lanceur de commande d'ad-ministration en fournissant le mot de passe, dans une boite de dialogue graphique.Ajouter un bouton lanceur de terminal pour �root�.

5. Utiliser mc pour copier et deplacer des �chiers de votre repertoire vers le �ashpar exemple.

6. Changer la résolution de l'écran. Changer les ecrans de veilles �screensaver�.

7. Utiliser Emacs : ouvrir plusieurs fenêtres en horizontal, en vertical, couper, copieret coller du texte avec et sans souris.

8. Ouvrir dans emacs un �chier, rendre les noms en minuscule, essayer la commandeCtrl+Alt+% puis remplacer \(\w+\) \(\w+\) avec \,(upcase \2),\1. Le \1 et\2 se referrent vers les premier et second mot. \w est le mot.

9. Ajouter un programme au démarrage automatique, par exemple minbar.

10. Ecrire un �chier d'une cinquantaine de lignes avec nano. A�cher son contenudans gedit. Donner son contenu avec cat.

LinuxIntro Belahcene 11 décembre 2014

Page 12: Linux Intro

2 Concepts de Base

2.1 Le Système des Fichiers

Tout le système (les disques durs, cdrom, disquettes, �ash ou supports distants surd'autres machines ! !) est rattaché à la racine notée par le symbole �/� , tout le reste estsous répertoire de la racine. Le système se présente sous la forme d'arborescence (parmises répertoires) il y a :

/bin contient les commandes de bases (binaire), par exemple ls, cat, mkdir,..

/sbin contient les commandes du super utilisateur (administrateur) : ifcon�g, fdisk,reboot..

/usr contient les programmes et logiciels. Dans /usr/sbin par exemple : adduser, atd,chroot

/etc contient les con�gurations des services et système : par exemple repertoireapache2, �chier vsftpd.conf

/home contient les répertoires des utilisateurs :

/dev contient les noms périphériques. par exemple [sh]da pour les disques, tty pourterminal, stdout pour sortie standard.

/var contient les �chiers variables. Par exemple repertoires des erreurs /var/log.

/proc Est un répertoire virtuel, n'a pas d'existence sur disque, contient les informa-tions sur les processus. Faire par exemple cat /proc/meminfo, pour des informa-tions sur la mémoire.

2.2 Commandes de Base Utilisateur

Ouvrir un terminal et manipuler les commandes de cette section 1 :

Les commandes sont toujours écrites en minuscule, linux est sensible à la casse. cd estdi�érent de CD. Le format générale d'une commande est commande [opt] paramètres

Les options sont précédées par le signe � - � par exemplecp -r essai *.c monRep

Copie récursive le répertoire essai et tous les �chiers d'extension C dans le répertoiremonrep. cp : est la commande, -r est l'option, essai , *.c , monRep sont les paramètres.

1. voir le document débutant-linux.pdf pour plus de détails sur les commandes

12

Page 13: Linux Intro

2.2. Commandes de Base Utilisateur Page 13

2.2.1 Commandes les plus Courantes

cd /usr/bin changement de répertoire, aller dans /usr/bin

man ls donne l'aide sur la commande, (man pour manual). On peut aussi utiliserxman ou dans konqueror man :ls

ls �help donne une aide rapide, résumé de la commande, ou encore apropos

ls Liste le répertoire courant,

ls -lrt /etc Donne la liste des �chiers et répertoire de /etc avec les détails (option-l) trie par temps (-t) en ordre inverse (-r)

mkdir monRep Crée le répertoire monRep, dans le répertoire courant.

cat �le.txt Donne le contenu du �chier �le.txt. � zcat � permet de decompressé le�chier a la volée.

tail -15 �le.txt Donne les 15 (les 10, si rien n'est indiqué) dernières lignes du �chiers�le.txt, la commande head est pareille mais pour le début du �chier.

cp f1.txt f2.txt Fait une copie de f1.txt, appelé f2.txt

mv f1.txt f3.txt le �chier f1.txt est renommé f3.txt

rm �ch*.txt supprime tous les �chiers commençant par �ch d'extension txt.

ps aux liste tous les processus 2 qui tournent sur la machine.

kill -9 2345 tue le processus dont le numéro est 2345, (s'il vous appartient).

more �ch.txt donne le contenu de �ch.txt page par page.

ls -l > f1.txt le symbole �>� redirige la sortie de �ls� vers le �chier f1.txt avec écra-sement. Si on utilise � >�> � il y aura ajout à la �n (append).

ln f1.txt f2.txt crée un lien �hard� f2.txt au �chier f1.txt, le meme �chier a 2 noms,la modi�cation de f2.txt modi�e aussi f1.txt. L'option -s, crée un lien symbolique,le lien conteient alors le nom du premier et non pas son contenu. Essayer ln -sf1.txt f3.txt pour voir la di�érence. Essayer 3 aussi ls -il f1.txt f2.txt f3.txt.

cat /etc/passwd | grep -v bash Le symbole�|�, pipe, permet de récupérer la sor-tie d'une commande pour l'envoyer en entrer dans la suivant. Ici le contenu du�chier passwd est récupérer puis �ltré avec grep pour garder les lignes ne conte-nant pas le mot � bash �.

astuce : Shift+PgUp (PgDown) permet de remonter ou descendre dans leterminal (simulation de l'ascenseur) valable aussi en mode texte.

echo �message� renvoie l'écho message sur écran.

echo $HOME donne le contenu de la variable d'environnement HOME. 4

2. Un processus est un programme en exécution.3. -i : a�che les inodes, emplacement physique4. attention au $, qui doit précéder toute variable shell.

LinuxIntro Belahcene 11 décembre 2014

Page 14: Linux Intro

2.3. Environnement Utilisateur Page 14

wc �ch.txt donne le nombre de lignes, de mot et de caractères du �chier �ch.txt.

locate localise un �chier, cherche dans la base de données des �chiers, pour faire lamise à jour de la base lancer updatedb

�nd /usr -name konqueror : cherche le mot konqueror dans le rep /usr

gzip �ch.txt Compresse le �chier �ch.txt et sera �ch.txt.gz. pour l'inverse utilisergunzip.

tar -czvf dir.tgz ladir archive et compresse les �chiers de la répertoire ladir sous lenom dir.tgz, avec x : pour extraire et t pour lister ou bien tester

di� f1.txt f2.txt donne la di�rence entre les �chiers f1.tx et f2.txt. essayer les com-mandes suivantes di� -crB f1.c f2.c > monPatch puis patch f1.c monPatch. Permetde retrouver le �chier f2.c a partir de f1.c grace au patch.

su switch user, on peut aussi utiliser le �sudo� voir �chiers /etc/sudoers

df disk free, donne la taille des partitions montées, option -h : human reading (lectureappropriée)

du /home disk used, donne la utilisée par le répertoire /home. On peut aussi utiliserl'option -h

tty donne le terminal en cours d'utilisation. Le premier est /dev/pts/0, ensuite/dev/pts/1, etc...., on peut faire sortir le résultat d'une commande dans un autreterminal. Par exemple si on est dans terminal 1, alors ls > /dev/pts/2 sort lerésultat dans le deuxième terminal

history Donne la liste des commandes deja utilisées. !Num permet de relancer lacommande de numero Num. On peut aussi personnaliser les commandes a a�-chées.

ctrl z : mettre en pause le process en cours

bg : passer le processus qui est en pause en arriere plan

fg : reprendre un process en premier plan (si plusieurs tournent en même temps, fg%n°)

nohup permet de garder le processus actif, apres femeture du terminal. Tester les 4cas dans un terminal ensuite fermer le terminal et voir ce qui se passe : gedit,puis gedit &, nohup gedit et en�n nohup gedit &.

2.3 Environnement Utilisateur

Tout utilisateur a un espace de travail et un ensemble de variables d'environnement (enlettres capitales) qui lui est propre. La commande env donne le contenu des variablescourantes, et echo donne le contenu de la variable par exemple echo $PATH 5 donne lecontenu de la variable PATH.

5. le $ est obligatoire

LinuxIntro Belahcene 11 décembre 2014

Page 15: Linux Intro

2.4. Autres Commandes Page 15

$HOME Contient le répertoire maison (Home) de l'utilisateur. taper la commandeecho $HOME pour voir votre répertoire maison (d'accueil).

$PATH Contient la liste des répertoires de recherche d'une commande. Cette variablepar défaut est di�érente pour un administrateur 6 et un simple utilisateur 7.

$LANG Contient la langue utilisée, par exemple fr_FR, le francais de France (fr_bede belgique, ar_dz : arabe algérien).

$PWD Contient le répertoire courant.

En plus des variables d'environnement l'utilisateur a aussi un ensemble de �chiers cachés(précédés par � . �, pour les lister ajouter l'option � -a � pour � all � comme ls -al) quipersonnalisent son comportement.

.bashrc : Donne le comportement a utiliser au login ou a l'ouverture d'un terminal.On peut mettre dans ce �chier les changement a rendre permanent. Les change-ment fait a chaud sont valable uniquement pour la session. export PATH=$PATH :/opt/-bin/, ajoute au chemin précédent le répertoire /opt/bin, mais ce changement estvalable uniquement pour la session, mettre la meme commande dans .bashrc lerend valable pour toutes les sessions.

.bash_history : Contient l'historique des commandes exécutées, périodiquement misà jour. les éléments les plus anciens sont supprimés. La même information peutêtre obtenue avec la commande history (qui utilise ce �chier en entrée).echo $HISTFILE $HISTFILESIZE - a�che le nom et la taille du �chier d'his-torique des commandes.cat $HISTFILE | more - a�che le contenu du �chier d'historique page par page.tail -n 24 $HISTFILE - a�che les 24 dernières lignes du �chier d'historique.

.xxxx : où xxxx est le nom d'un logiciel, est un répertoire qui dé�nit le comporte-ment du logiciel. 8 Par exemple .mozilla est le répertoire de sauvegarde du com-portement du browser mozilla pour le dit utilisateur, qui peut être completementdi�érent d'un autre utilisateur, ou encore .gconf détermine l'interface graphiquegnome

2.4 Autres Commandes

tree -d -L 2 / >tree.txt 9 permet de sortir l'arborescence du système et de stockerle résultat dans le �chier tree.txt.

a2ps -1 tree.txt -o tree.ps 10 Convertit le �chier texte tree.txt en format Post-Script (ps)

6. /usr/local/sbin :/usr/local/bin :/usr/sbin :/usr/bin :/sbin :/bin :/usr/bin/X117. par defaut : /usr/local/bin :/usr/bin :/bin :/usr/bin/X11 :/usr/games8. ind :Si le comportement ne convient plus après maints changement, détruire le répertoire concerné,

le répertoire par défaut sera recrée.

LinuxIntro Belahcene 11 décembre 2014

Page 16: Linux Intro

2.4. Autres Commandes Page 16

grep unmot �chier.txt �ltre toutes les lignes du �chier.txt qui contiennent le mot� unmot �. avec l'option -v on obtient l'inverse, c'est a dire celles qui ne contiennentpas � unmot �.

at 10 :00 à 10 la commande at exécute les instructions données dans le sous-shell,ouvert pres le retour a la ligne. Pour quitter le sous-shell (prompt �>�), taperCtrl+D.

crontab mycron.txt permet des plani�cation de taches répétées, déclarées dans le�chier mycron.txt. Le �chier mycron.txt doit contenir les dates et les actions aexecuter sous forme : minutes heure jour mois jourSemaine, suivi de la commande.La ligne suivante 20 4 15 * * tar czf mesProg.tgz *.c permet de faire l'archivaedes �chiers C tous les 15 du mois à 4 heures 15. Faire man 5 crontab pour avoirdes détails.

man 5 crontab pour voir le format du �chier crontab.

top donne l'utilisation des ressources mémoire et cpu, en réel

di� f1 f2 donne la di�érence entre les �chiers f1 et f2. � di�3 � donne la di�érenceentre 3 �chiers.

ps2pdf convertit le �chier du format ps en format pdf. � pdf2ps � fait l'inverse.

convert f1.gif f2.jpg convertit 11 le �chier image de format gif en image jpeg. Lesextensions détermine le type de conversion a faire. Cet outil fait partie du logicielimagemagick.

setxkbmap ar choisit la map du clavier arabe sur l'environnement graphique. Enmode texte utiliser kbd-con�g.

su - cpte1 bascule vers utilisateur cpte1, � - � pour avoir l'environnement de cpte1.Si aucun argument n'est donné, l'utilisateur administrateur est pris par défaut.

sudo permet a un utilisateur d'exécuter des commandes systèmes. Voir le �chier decon�guration /etc/sudoers pour plus de détail. L'avantage de cette commandeest de donner certains privilèges aux utilisateurs déclarés dans le �chier, de fairedonc de la maintenance sans avoir a connaître le mot de passe root.

cpio -o < listFich > rep.cpio Cette commande cree (option -o ) une archive(symbole >) rep.cpio qui contient la liste des �chiers enregistrée dans listFich (symbole < ). l'option -i permet de desarchiver, avec cpio -i < rep.cpio.

import -window root -quality 98 ecran.png permet la suvegarde du bureau, sousle nom ecran.png

racourcis_clavier Ctrl+L e�ace le terminal, Ctrl+r recherche de commande ansl'historique, Shift+PgUp utilise ascenceur

screen : multiplexeur de terminaux. Vous ouvrez un terminal et vous le nommez,vous lancez une tache (un script qui va qui prend du temps), et vous vous dé-connectez. Plus tard, vous pouvez reprendre la tache en réouvrant le screen, vous

11. Installer imagemagick

LinuxIntro Belahcene 11 décembre 2014

Page 17: Linux Intro

2.5. Divers Page 17

retrouvez votre tâche comme si tout était resté ouvert.Créer un screen : screen -S monScreen, (lancer un programme assez long pourle tester)Le détacher (cela veut dire qu'il n'est plus a�ché mais reste actif avec ctrl a puisd)Le rattacher à un screen détaché, screen -r monScreenla liste des screens actifs : screen -ls , kill permet d'arreter les processus attachés

Permission d'un �chier Nous donnons ici un groupe de commandes très utiles aussipour convertir les �chiers, traiter les données etc...

A chaque �chier ou répertoire, sont associées des propriétés, de type, de permissions,de date et d'appartenance.

-rw-r--r-- 1 bela bela 2204 2008-07-20 09:11 .bashrc

Dans la ligne précédente, le dernier champ est le nom du �chier � .bashrc �, avec lesinformations de date de création 2008-07-20 a 09 :11, ensuite la taille 2204 octets, lepropriétaire est bela, de groupe bela. En�n le premier champ donne les permissions :rw- : read/write pour le propriétaire, ( - : pas de permission d'exécution), r� : readpour le groupe et r� : read pour les autres. La commande chmod permet de changer cespermissions.

chmod g-x,o+w tata permet de changer les permissions, ici par exemple on ajoute�w�, permission d'écriture aux autres (�other�), g-x : enlève permission d'exécutionau groupe.ou bien avec des valeurs par exemple chmod 765 tata veut dire rwxrw-r-xpour tata.

usermod : modi�e un utilisateur (options : -l pour changer le nom, -g pour lui assi-gner un groupe, -G pour lui assigner plusieurs groupes (séparés par des virgules),-a en complément de -g ou -G, ajouter des nouveaux groupes au lieu de tout re-dé�nir). Par exemple, ajouter le groupe video à l'utilisateur bela, sans supprimerles groupes auxquels il appartenait avant : usermod -aG video bela.

2.5 Divers

Créer un lien sur Bureau

Un lien sur le bureau ressemble a ceci, on garde l'essentiel[Desktop Entry]Name=JusteEssaiExec=guvcviewIcon=/usr/share/pixmaps/guvcview/guvcview.pngType=ApplicationCategories=Video;AudioVideo;StartupNotify=true

LinuxIntro Belahcene 11 décembre 2014

Page 18: Linux Intro

2.6. Un Peu de Shell Page 18

Imprimer joliment une page de manuel

Les commandes suivantes impriment une page de manuel sur une imprimante/un �chierPostScript.

man -Tps some-man-page | lpr man -Tps some-man-page | mpage -2 | lpr

Graver une image

Graver une image iso avec la commande cdrecordcdrecord -v speed=20 dev=/dev/sr0 pfSense-Installer.iso

Copie partielle de �chier

Copier les pages 99 a 102 du �chier doc1.ps dans doc2.ps

psselect -p99-102 doc1.ps doc2.ps

Modi�er taille d'une Image

La nouvelle taille devient 800 par 600 pixels, en jpeg progressif de qualite 80% pour lapremiere image.

La deuxieme cree une image de police 72, pour le mot �Salam alaykoum�.

convert img1.png -interlace line -quality 80 -resize 800x600 img1R.png convert -pointsize 72 label :"salam alaykoum" pointsize.gif

2.6 Un Peu de Shell

La programmation shell est indispensable pour une administration saine et robuste. Leshell est une interface entre l'utilisateur ou administrateur et le noyau qui fait fonctionl'ensemble des éléments de la machine.

Avec le shell on peut aussi bien plani�er des taches que répéter de façon automatiquesdes travaux longs et fastidieux. A travers les exemples, nous découvrons les di�érentsaspect et la puissance du Shell.

On peut aussi bien lancer les actions en interactif (au fait c est ce qu'on fait toujours atravers le � terminal �) que les lancer à partir d'un �chier enregistré.

LinuxIntro Belahcene 11 décembre 2014

Page 19: Linux Intro

2.6. Un Peu de Shell Page 19

Au fait il y a plusieurs interpréteur shell, Bash est celui installé par défaut, il y aquelques di�érences entre eux. Il y a aussi le csh, le sh, le ksh. Pour plus d'informationvoir les excellents documents [?] ou [?] télechargeables depuis Documentation Linuxhttp://www.tldp.org

Il faut dire aussi que si le programme devient trop complexe, ou on veut une interfacegraphique ou encore un programme rapide, il faut alors utiliser un outil plus puissant,comme le langage C , C++, java ou encore php. Le choix du langage dépend de l'objectifassigné.

Le shell bash est un interpreteur qui exécute les commandes une a une après traductionde l'instruction en langage interne. Ce qui permet d'exécuter une partie d'un scriptjusqu'à la première erreur s'il y a.

Au contraire un langage compilé comme le C par exemple, toutes les commandes sonttraduites (compilées) en langage interne, c'est le résultat, le programme machine quis'exécute. Toute les erreurs e compilation ou de manque de librairie ou de ressourcesont détectées à la phase de compilation et édition de lien. Les quelques scripts suivantslargement commentés, donnent un rapide aperçu sur le Bash.

Un script est un ensemble de commandes regroupées dans un �chier. La premièrecommande doit être un appel à l'interpréteur qui exécute le contenu du �chier. Dansnotre cas #!/bin/bash pour appeler l'interpréteur bash. Pour le perl par exemple cas#!/usr/bin/perl et #!/usr/bin/awk pour appeler awk.

Le caractère � # � débute un commentaire sauf s'il pert sa spéci�cité, voir les exemples.

Pour exécuter les scripts donnés en exemple, copier le contenu dans un �chier, parexemple exemple1.sh, l'extension n'est obligatoire, mais conseillée pour savoir que ce�chier est un script shell. Mettre le bit exécution a vrai, chmod +x exemple1.sh, sinon ilfaut l'exécuter en invoquant le shell. Dans le premier cas il su�t de faire ./exemple1.shpour l'exécuter, dans le deuxième cas il faut exécuter la commande bash avec le �chiercomme argument : bash exemple1.sh

2.6.1 Les Entrées-Sorties

Par défaut la lecture des entrées se fait à partir du clavier et les sorties se font surécran, mais elles peuvent être récupérées d'un ou envoyées vers un �chier. Il su�t alorsd'utiliser la redirection et éventuellement les délimiteurs de bloc � { } �. Rappelons quel'utilisation d'une variable doit être précédée de � $ �

Exemple 5. Les variables sont précédées d'un $, la sortie standard est e�ectuée avec lacommande echo. On peut aussi utiliser la commande formattée printf . Notons que lesymbole � \ � désactive la speci�té d'un caractère spécial, ici la � # �.

Listing 2.1 � A�ectation et variables1 #!/bin/bash

LinuxIntro Belahcene 11 décembre 2014

Page 20: Linux Intro

2.6. Un Peu de Shell Page 20

2 a=23 # Simple affectation, pas d'espace avant et apres =3 echo "Valeur de a est $a " # $a est remplace4 echo 'Valeur de a est $a '5 # $a n'est pas remplace6 b=$a7 # b re�oit valeur de a8 echo "Valeur de b est $b "910 a=$(echo Bonjour..) # a re�oit le résultat11 # de la commande dans $( )12 a=`ls ` # autre fa�on de faire13 echo $a # tabulation et retour supprimes14 echo "$a" # Ici conservés

Exemple 6. Un script peut avoir des paramètres en entrée, ils sont récupérés dans lesvariables $0 (nom du script lui même) $1, $2, ..., $9 (pour les arguments 1, 2, ...9). Lesvariables $#, $* contiennent le nombre et la listes des arguments, alors que $$ contientle PID du script en exécution et $ ? contient le résultat de la dernière commande, 0 pourvrai. Nous voyons aussi comment les sorties sont redirigées. La lecture du �chier se faitligne par ligne, chaque ordre read lit une ligne complète.

Listing 2.2 � Parametres d'entree

1 echo "valeur de a: $a # n est pas un commentaire"2 echo 'Valeur de a: $a' \# ce n est pas un commentaire3 echo "Entree 2 valeurs : "4 read A B #ou read A puis read B5 echo "Vous avez donner les nombres: $A et $B"

2.6.2 Les Tests et les Boucles

le test if :

Le test peut être réalisé avec le classique if/then ou avec un raccourci � [[, ]] �. Laconvention unix veut que la valeur 0 est retourné si le résultat est vrai. Le � if � del'exemple suivant peut être omis. les comparaisons entre nombres sont � -lt , -gt, -eq,-ge, -le �, pour les comparaisons de chaîne de caractères il faut utiliser � <, <=, >,>=, = �

if [[ $a -lt $b ]] ; 12 then echo "$a plus petit que $b"else echo "a plus grand que ou egal à b";

fi

Le test [[ $a -lt $b ]] peut être écrit aussi (($a < $b)), attention au signe � < �, de plusles espaces dans la première expression ne sont pas nécessaire pour la deuxième.

12. le � ; � est obligatoire pour séparer les commandes sur la même ligne

LinuxIntro Belahcene 11 décembre 2014

Page 21: Linux Intro

2.6. Un Peu de Shell Page 21

boucles

Les travaux répétitifs sont réalisés par des boucles ; la plus courante est � for �, bien qued'autres commandes (while, until) existent.

for arg in liste ; do Cmds ; done, exécute les � Cmds � pour tous les éléments de� liste �

for planete in mercure mars venus jupiterdo echo "$planete"; done

Cette commande donne la liste des planetes : mercure mars venus jupiter. Dans lapartie list on peut avoir le résultat de n'importe quelle commande. Par exemple lescommandes suivantes donne le meme résultat (la commande seq donne une séquencede nombres) :

for i in 5 8 11 14 17 20; do echo " valeur de i= $i"; donefor i in $(seq 5 3 20); do echo " valeur de i= $i"; done

On peut aussi écrire les expressions a-la-Langage-C, ainsi la boucle � for � précédentepeut être écrite : (noter les doubles parenthèses, et pas de � $ � avant les variables)

for ((i=5;i<20;i+=3)); do echo " valeur de i= $i"; done

Boucle whilea=0; N=12 ; P=�Salam�while [[ $a -lt $N ]]do

echo $Plet a=$a+1;

done

Le if multiple ( case) :

Le choix des commandes a executer se fait en fonction du contenu de la variable. Dansnotre exemple, si val cascontient saghir alors la premiere est executée, si elle vautkabir on execute la deuxieme sion la deniere par defaut.

case $val insaghir) echo " petit nombre" ;;kabir) echo " grand nombre" ;;*) echo " nombre moyen " ;;

Exemple 7. Exécuter le programme suivant :

Listing 2.3 � exemples de case1 #!/bin/bash23 echo -e " entrer un entier , 0 pour finir"4 read a5 while [[ $a -ne 0 ]]6 do7 if [[ $a -gt 30 ]]; then Type="grand";8 elif [[ $a -lt 10 ]] ; then Type="petit";

LinuxIntro Belahcene 11 décembre 2014

Page 22: Linux Intro

2.6. Un Peu de Shell Page 22

9 else Type="moyen";10 fi11 case $Type in12 "petit")13 echo " petit nombre" ;;14 "grand")15 echo " grand nombre" ;;16 *)17 echo " nombre moyen " ;;18 esac19 read a20 if [[ $a -eq 0 ]] ; then exit; fi21 done

2.6.3 Les Expressions Régulières

Une expression régulière est une chaîne de caractères ou méta caractères qui sont in-terprétés par le shell de façon particulière, nous avons déjà vu � # �, qui signi�e com-mentaire, mais il peut perdre cette particularité si on le désactive. L'utilisation la pluscourante de ces caractères est dans les recherches et manipulations de chaîne de carac-tères, particulièrement avec grep .

* (étoile) remplace 0 ou plusieurs fois le caractère précédant. 124* est mis pour 12,124,1244, ...

. (point) remplace au moins une fois le caractère précédant, sauf retour chariot. 124.est mis pour 124, 1244, ...

^ (caret) indique début de ligne. A l'intérieur de � [,] �, il inverse le sens de l'expres-sion.

$ indique �n de ligne

\< indique le début du mot

\> indique la �n de mot

[] regroupe un ensemble de caractères a � matcher � 13 . [xy] replace tout mot conte-nant x ou y, de même [d-g] remplace les mots contenant une des lettres d, e, f,g ou encore [A-Rf-t] les lettres de A à R et f à t. Alors que le produit [0-4][0-9]donne 00,01..49. Cependant [^b-n] remplace toutes les lettres sauf de b à n.

\ (backslash) est utilisé pour rendre normal un caractère spécial � \$ � est le ca-ractère � $ �, de même � \\ � est le caractère � \ � lui même. Ainsi � \[xyzcat/etc/inittab | grep '\<respawn'\] � ne remplace pas toutes les chaînes contenantx, y, ou z, mais uniquement la chaîne � xyz �.

13. Attention : les caractères sont pris individuellement

LinuxIntro Belahcene 11 décembre 2014

Page 23: Linux Intro

2.6. Un Peu de Shell Page 23

2.6.4 grep

Une commande très utile et très utilisée est la commande grep. Elle a été déjà présentée,ici nous donnons plus de détails sur les options. Se rappeler la caret � ^ � signi�e débutde ligne et � $ � la �n de ligne.

-i Ignorer la casse,

-w Forcer l'appariement du mot complet,

-n A�cher le numéro de ligne

-r Recherche recursive dans les sous répertoires, préciser le répertoire

-v inverser le �ltre

-H préciser le nom des �chiers ( -h : cacher les noms)inverser le �ltre

-N N est un nombre, donne les N lignes avant et N lignes après la ligne sélectionnée.

-AN N ligne apres ( A pour After, B pour Before)

Exemple 8. Les commandes suivantes donnent respectivement les lignes qui com-mencent par le caractère #, les lignes qui �nissent par vt100 et les lignes qui contiennentles mots commençant par respawn, du �chier /etc/inittab

cat /etc/inittab | grep '^#'

cat /etc/inittab | grep 'vt100$'cat /etc/inittab | grep '\<respawn'

Exercice 9. Donner les lignes utiles du �chier /boot/grub/grub.cfg, sans les lignes vides,ni les lignes commentées. Le résultat est enregistré dans le �chier menuNew.lst, les lignessont numérotées. Le caractère pipe � | � permet de faire des �ltres successifs.

2.6.5 awk

La commande awk est constitue de 3 parties : � BEGIN � pour regrouper les commandesa executer une seule fois au debut � END � pour regrouper les commandes a exécuterune seule fois a la �n , et le corps du script exécuté a chaque ligne.

Une ligne est éclatée en champs, repérés par des variables $1,$2... pour les champs 1,2,....Le � espace � est le séparateur par défaut, la variable � FS : Field Separator � garde leséparateur, mais on peut le changer.

Chaque partie est mise entre des accolades � {,} �, On utilise l'ordre � print � pourécrire à l'écran. Les commandes suivantes sont équivalentes et donnent le nom (premierchamp) et le répertoire maison (le champ 6) de l'utilisateur, le séparateur ici est � : �.

LinuxIntro Belahcene 11 décembre 2014

Page 24: Linux Intro

2.6. Un Peu de Shell Page 24

Variables Prédé�nies

Les séparateurs par défauts sont le espaces, mais on peut les changer en décalarant dansles variables associées de meme que le numero de ligne et de champ peut etre connus :

FS Field separator, separateurs en entree

OFS Output �eld Separator, séparateur en sortie

ORS Output Record Separator, changement de ligne (enregistrement)

NR Numero de la ligne courante

NF nombre de champs

awk 'BEGIN {FS=":"} {print $1 "\t" $6}' /etc/passwdawk -F: {print $1 "\t" $6}' /etc/passwd

La commande awk accepte les commandes shell et les expressions régulières. On retrouveaussi les instructions à-la-C, voir exemple suivant.

Le programme peut aussi etre mis dans un �chier et s'executer soit avec :� awk -f nonScript� ./nomScript si la premiere ligne est #!/usr/bin/awk -f

Dans ce dernier cas il faut rendre le script executable.

Exemple 10. Donner les caractères, leur code en décimal et en hexadécimal pour lescaractères alphabétiques. Remarquer $i en sortie de echo est récupérée comme $1 entréeune (il y a un seul champ est une seule ligne ) de awk :

echo -e " Dec Hex Char\n"for i in $(seq 55 70)do

echo $i | awk '{printf("%6d %6x %6c\n", $1, $1, $1)}'done

On peut réecrire la commande comme suit :echo $i $i $i | awk '{printf("%6d %6x %6c\n", $1, $2, $3)}'

Que se passe t il so on ecrivait plutot ? :echo -e $i"\n"$i"\n" $i | awk '{printf("%6d\n", $1)}'

Selection de ligne selon un �pattern�

Nous pouvons aussi sélectionner des lignes repondant à un critère ou expression réguliere ;

Exemple 11. La premiere commande donne : la taille des �chiers sans les répertoires(qui débutent la ligne par d) de /etc selon le format désiré. La deuxieme donne l'occu-pation du disk, contenant la suite de caractère �/dev/� . Noter ici le symbole �\� devant�/�, pour rendre ce dernier ordinaire.

LinuxIntro Belahcene 11 décembre 2014

Page 25: Linux Intro

2.6. Un Peu de Shell Page 25

ls -lh /etc | awk '!/^d/ { print "Taille de "$8" est "$5}'df -h | awk '/\/dev\//{ print "periph: ",$1," Montage",$6,

"Occupation: "$5}'

Tester les commandes suivantes (les mettre dans un �chier f.awk) :BEGIN { print "donner un nombre "; }{ print "son carre est: " $1 * $1 ;

print "Encore un nombre (0 pour finir)";if ( $1 == 0) exit;

}END { print "Salam" }

Tester la commande :awk '{ if ( $1 < 20 ) print }' data.txt

Sur le �chier data.txt contenant14 15 56916 25 36325 1256 3312 22 33365 256 364

Opérations de Control

On peut aussi faire des calculs et utiliser les operations de control (boucles et tests). Leprogramme du listing fait la moyenne, executer ./moyenne.awk note.dat

./moyenne.awk note.dat#le fichier note.dat contientammar 13 12 15smail 15 12 14kaci 15 8 9houda 11 12.5 13ali 16 11 14

Listing 2.4 � operations de control

1 #!/usr/bin/awk -f2 BEGIN{3 xmin=1000; xmax=0 ;4 OFS=" ----->\t"; # Separateur de Champs5 ORS="\n------------------\n" # Separateur de Lignes6 }7 {8 n++; x += $2; y += $2^2;9 if ($2 < xmin) xmin=$210 if ($2 > xmax) xmax=$211 }12 END {13 x /= n;14 print "Nombre de donnees\t", n

LinuxIntro Belahcene 11 décembre 2014

Page 26: Linux Intro

2.6. Un Peu de Shell Page 26

15 print "Moyenne \t\t", x16 print "Min \t\t\t", xmin17 print "Max \t\t\t" , xmax18 }

Exercice 12. Modi�er cette exemple pour a�cher en plus des notes étudiants leursmoyennes (par etudiant) et en �n la moyenne globales (de toutes les notes de tous lesetudiants).

Tester les instructions if et for avec le listing :

Listing 2.5 � Les boucles

12 BEGIN { # s'execute uniquement au debut3 # Affiche les carrees4 # comme en C standard5 # val est lu en argument6 # Lancer le script avec :7 # gawk -v val=7 -f boucle.awk8 for (i=1.5; i <= val; i += 0.5) {9 printf ("Le carre de %.2f est %.4f\n",i,i*i);10 if ( i==5 ) print " 5 est trouvé";11 }12 #contient uniquement le bloc BEGIN13 }

Les commandes suivantes donnent dans l'ordre : Les lignes dont la deuxieme note est12, les lignes entre celle contenant kaci et celle contenant ali, la suivante donne les lignesdont le premier champ contient la chaine �ma�. L'expression $1 ~ /ma/ cherche la chainedans le champ 1.

Celle d'apres donne les lignes dont le champe 2 est >= 12 ET le champ 3 >= 11

en�n la derniere donne les noms pour la colonne 2 est >13 OU colonne 3 >13gawk '$3 == 12 { print $0 } ' note.datgawk '/kaci/,/ali/ { print }' note.datgawk '$1 ~ /ma/ { print $0 }' note.datgawk '$2 >= 12 && $3 >= 11 { print $0 }' note.datgawk '$2 > 13 || $3 > 13 { print $1 }' note.dat

Le script suivant a�che aussi le moyenne pour les etudiants selectionnés. Le symbole�{� doit suivre directement la condition �($2 >13|| $3 >13)� qui pose le condition pourle traitement de la ligne

#!/usr/bin/awk -fBEGIN { moy=0 }($2 >13|| $3 >13){

moy += $2+$3+$4;print $0 " moy= ", moy/3moy=0

}

LinuxIntro Belahcene 11 décembre 2014

Page 27: Linux Intro

2.7. Exercices Page 27

Les commandes suivantes donnent les processus gourmands en ressource CPU (> 1%)apartenant a root et son inverse (n' appartiennant pas a root). La awk recoit la listedes processus à partir de ps. Noter les parentheses necessaires apres le point � !� , quiintervient sur ($1 ~"root")

ps aux | awk '($1 ~"root" && $3>0.5) {print $2 }'ps aux | awk '( !($1 ~"root") && $3>0.5) {print $2 }'

2.6.6 sed

Une autre commande très utile, sed (stream editor : éditeur de texte par �ot), est souventutilisée pour des remplacements des mots ou expression dans les �chiers. principauxparamètres, (l'option -n rend la commande silencieuse).

X,Yi message �chier insert le mot message dans �chier avant toutes les lignes denuméro X au numero Y.

X,Yp/ imprime les lignes X à Y, si � Y � est omis la sortie se fait jusqu'à la �n

X,Yd/ supprime les lignes X à Y

X,Ys/exp1/exp2/g remplace exp1 par exp2 pour toutes les lignes de X à Y. avec� g � toutes les occurrences de la ligne sont concernées.

sed 6,13s/GNU/gnu/g menuNew.lst## remplace GNU par gnu dans les lignes 6 à 13

sed 3,7d;10,$d menuNew.lst ## supprime les lignes 3 à 7et les lignes de 10 juqu'a la fin

sed y/a.s/A,S/ note.dat remplace les a par A, . par , et s par S

2.7 Exercices

1. Créer un �chier �ch1.txt avec nano, utiliser les copier/coller pour le remplir.Donner le nombre de caractères de ce �chier.

2. Exécuter les commandes suivantes quand cela est possible, sinon dites pourquoi :

a) Véri�er le contenu du �chier �ch1.txt en utilisant gedit et cat.

b) Créer un répertoire temp1, copier le �chier �ch1.txt dans temp1. aller danstemp1 modi�er �ch1.txt.

c) Copier �ch1.txt dans votre bureau, copier le dans /etc.

d) Lister le contenu du répertoire /home, avec les options, de tri selon le temps,le temps inverse, la taille. lister les �chiers cachés de votre répertoire �maison�.

e) Véri�er dans quel répértoire vous etes. Faire 2 copies du �chier �ch1.txt :�ch2.txt et �ch3.txt. Les déplacer vers votre repertoire �maison�.

f) Supprimer les �chiers �ch2.txt et �ch3.txt ainsi que le répertoire temp1.

LinuxIntro Belahcene 11 décembre 2014

Page 28: Linux Intro

2.7. Exercices Page 28

3. Utiliser les racourcis de répertoire pour vous déplacer vers /etc, /home , /usr/binet votre répertoire maison.

4. Copier �ch1.txt dans �ch2.txt avec quelques modi�cations, donner ensuite la dif-férence entre les 2 �chiers.

5. Donner le nombre de �chiers et répertoires de /etc.

6. Lancer la commande top (taper �q� pour en sortir) . Quelle est le CPU, la taillede la mémoire totale, étendue et utilisées de votre machine.

7. Créer un répertoire temp1, y copier les �chiers de con�guration (extension conf)de /etc. Créer une archive compressée conf.tgz, pour tous ces �chiers. des-archiverdans un répertoire temp2. Procéder de 2 manières : archiver puis compresser, etarchiver et compresser en une seule fois.

8. Quelle est votre chemin (PATH), compléter-le avec le répertoire courant ? Rendrepermanent votre nouveau PATH, donner un message à chaque connexion (nou-veau shell).

9. Donner la liste de repertoires /etc dans un autre terminal. Donner le nombre determinaux ouverts ( nombre de processus bash).

10. Changer les permissions de �ch1.txt et �ch2.txt, de 2 manières. �ch1.txt unique-ment accessible en lecture/écriture à votre groupe, �che2.txt accessible en lectureà tout le monde.

11. On veut imprimer le �chier /boot/grub/menu.lst avec une police de caracteresoignée, on le convertit au format postscript (ps) puis en format pdf.

12. Dans 3 minutes, sauvegarder vos processus dans le �chier myProc.txt.

13. Toutes les 3 minutes ajouter un �chier, par exemple �ch1.txt à un autre �chierpar exemple à �ch1New.txt. Ensuite il faut arreter le planning.

14. On veut planni�er l'utilisation d'un logiciel dont l'utilisation simultanée est limi-tée, et donc on crée des groupes. Le logiciel est utilisé à tour de role, par exemplele groupe P1 de 8h à 12h, le groupe P2 de 12H à 17h , le groupe P3, la nuit 17Hau matin 8H. Proposer une gestion d'utilisation. Modi�er ensuite la gestion pourlever la restriction le week end (vendredi samedi). Voir la commande chgrp.

15. Archiver les �chiers conf (extension .conf ) de 12 a 15 heures toutes le 2 minutesentre la minute 8 et 25.

16. Lancer le capteur d'images, sauvegarder votre bureau, puis une fenetre et en�nune partie de la fenetre. Lancer quickshow (visionneur d'images et diaporama),lancer diaporama sur les images a récupérer de votre machine.

17. Ecrire un script bash qui a�che 10 fois le mot �Salam�. Refaire pour un nombrede fois a lire du clavier. Refaire avec nombre comme argument du script.

18. Que fait la commande :

for i in $(cat list.txt ); do wget -chttp://www.geogebra.org/book/intro-en/WS_HO_4/Tiling/$i; done

LinuxIntro Belahcene 11 décembre 2014

Page 29: Linux Intro

2.7. Exercices Page 29

19. Ecrire un script qui a�che N fois une phrase lue au clavier. Refaire la question,les entrees se font d'un �chier donné en argument du script.

20. Ecrire un scipt qui lit 4 nombres a partir d'un �chier et les écrit dans un autre.Les noms de �chier sont donnés en arguments.

21. Faire des copies de vos �chiers shell (extension .sh), avec ajout de .bak. parexemple �che1.sh aura pour copie �ch1.sh.bak. Refaire l'opération sans .sh, c'esta dire la copie sera �che1.bak. (ind : voir basename)

22. Que donnent les commandes suivantes :

ls /etc/[mt]* -ld ls /etc/[^mt]* -ldls /etc/[m-t]* -ld ls /etc/[^m-t]* -ld

23. Tester l'existence de toutes les machines de votre réseau 192.168.10.0. Utiliserping option -c 2 (2 paquets).

24. Sauvegarder dans le �chier ps.txt la liste de tous les processus. Sauvegarder dansmesProcess.txt vos processus. Quel est leur nombre.

25. Donner les lignes utiles du �chier Récupérer le �chier /etc/inittab dans un autresans les commentaires ni lignes vides. Le résultat est enregistré dans le �chierinittabNew, les lignes seront numérotées. (ind : Le caractère pipe � | � permet defaire des �ltres successifs).

26. Compter les utilisateurs de �refox, si l'un deux utilise plus de 1.5% de CPUl'arreter.

27. Tous les soirs a 22 :30, arreter les processus qui tournent depuis plus de 6h.

28. tous les matins a 8h nettoyer votre repertoire tmp, de tous les �chiers .bak si leurtaille depassent 1MB.

29. Ecrire un script (utiliser awk) qui arretent les processus qui consomment plusde 2% CPU, si le processus n'appartient pas a root. Refaire pour les utilisateursordinaires (UID > 999)

LinuxIntro Belahcene 11 décembre 2014

Page 30: Linux Intro

3 Petite Administration

Même si on est un simple utilisateur de la machine, on est souvent amené à faire neserait ce qu'une �petite administration�. Par exemple on installe un logiciel, on con�gurela carte réseau, on sauvegarde le système, ces taches nécessitent la permission du superuser, ou administrateur. Aussi il est très recommandé d'avoir quelques notions de bases.Dans la plus part des cas on peut utiliser une interface graphique, mais parfois il estpréférable d'utiliser la ligne de commande. Dans ce chapitre nous essayons de faire le tourdes questions essentielles, à savoir les systèmes de �chiers, les processus, l'installationdes logiciels.

3.1 Installation

Disons deux mots sur l'installation d'une distribution, par exemple Centos/Redhat ouDebian/ubuntu.

Les choses essentielles à retenir pour l'installation standard sont

1. Choix du clavier et de la langue

2. Partionnement du disk : l'installateur exécute un partitionneur gparted ou fdisk.

3. Adresse de la carte réseau, s'il y a pas de DHCP, mettre manuellement une adresseà la carte.

4. Entrer un mot de passe d'administrateur et un compte d'utilisateur.

Le reste est fait de facon automatique (détection de carte video, carte son, réseau...).

Si vous avez un probleme de carte video, ce qui est actuellement rare, sauf si votremateriel est tres recent par rapport au software. Dans ce cas vous pouvez utiliser unCD-Live, recuperer ensuite le �chier /etc/X11/xorg.conf et copier dans le repertoire dela distribution installe 1.

Si vous avez un ordinateur portable et que ce dernier redémarre brutalementpendant la procédure d'installation, éditez l'entrée Install en appuyant surla touche Tab, puis tapez noacpi noapic nolapic à l'écran d'accueil au lieude simplement valider, ce qui désactivera l'ACPI (un système d'économied'énergie qui est bogué sur certaines cartes mères).

1. L'installation peut se faire meme si le graphisme ne fonctionne pas

30

Page 31: Linux Intro

3.2. Gestion du Disque Page 31

Figure 3.1 � résultat de fdisk et df

3.2 Gestion du Disque

Ci-après nous donnons les commandes les plus utilisées pour l'administration d'un ma-chine seule ou dans un réseau local. Il est bien entendu que toute les commandes utili-sateur sont aussi valables pour l'administrateur.

fdisk cette commande est dangereuse et est réservée au super user. Elle gère lepartionnnement du disk. On peut aussi utiliser � parted � qui permet de redi-mensionner une partition.

mkfs -t vfat /dev/hda2 crée un système de �chier et formatte la partition /dev/hda2en format vfat. Avec di�érents types de système reconnus, donnés en options, ext2,ext3, vfat..., on peut aussi utiliser mkfs.vfat.

LinuxIntro Belahcene 11 décembre 2014

Page 32: Linux Intro

3.3. Fichiers Systèmes Page 32

mount -t vfat /dev/hdc1 /media/disk : montage de la partition 1 du disk 3 sur lerépertoire /mnt/hd1, Si le point de mount est déclare dans /etc/fstab, l'utilisateurpeut le monter, s'il lui est permis, autrement il faut être administrateur.

quota permet de �xer des tailles limites aux usagers, et empêcher ainsi qu'un utilisateurne remplisse le disque.

3.3 Fichiers Systèmes

Nous voyons ici �chiers systèmes importants :

/etc/inittab Le processus de démarrage lit ce �chier pour déterminer quel est leniveau de fonctionnement du système.

A chaque niveau correspond un ensemble de services à lancer qui sont enregistrés dans lerépertoire correspondants. Par exemple niveau 1 correspond au fonctionnement � single �,un seul utilisateur, pas de � muli-user �, le graphisme n'est pas lancé, la carte réseauest désactivé, voir le services dans /etc/rc1.d, pour niveau 2 , 3 ou 5 voir les réper-toires /etc/rc2.d, rc3.d ou rc5.d. Le niveau 0 est l'arrêt, le niveau 6 est le redémarrage� reboot �. Lire les commentaires du début de ce �chier.

Les services qui tournent automatiquement au démarrage : dans le niveau 2 sont dans/etc/rc2.d

Tous les programmes commençant par S sont exécutés au démarrage, et ceux qui com-mencent par K sont arrêtés.

Comment arrêter (ou lancer) un service à chaud : /etc/init.d/vsftpd stop (ou start)

Comment supprimer (ou ajouter) un service de la liste de démarrage.

Supprimer le lien de rm /etc/rc2.d/S20vsftpd (ou ajouter le lien avec S au début dunom) par exemple : cd /etc/rc5.d ; ln -s ../init.d/ssh S96ssh crée un lien au servicessh porle faire démarrer automatiquement.

/etc/fstab Contient les systèmes de �chiers et partitions à monter au démarrage età rendre accessible à l'utilisateur et au système.

On peut empêcher un utilisateur d'accéder à un périphérique donné, par exemple laligne suivante :

/dev/hdb /media/cdrom0 iso9660 user

Signi�e le périphérique � hdb � ici le cdrom, est monte sur le répertoire /media/cdrom0,avec la permission a tout utilisateur pour le faire, le type du device est un iso9660(cdrom). Si on supprime le mot � user �, il faudrait alors être administrateur pour fairele montage. Ceci est valable pour les disques durs , les �ash disk, etc...

/etc/hosts Ce �chier contient le numero des cartes et les nomes des machines asso-cies. On peut aussi bien identi�er la machine avec sont nom ou sa carte réseau.

/etc/passwd Contient la liste de tous les utilisateurs y compris les utilisateurs sys-tèmes. Le mot de passe n'et pas stocké dans ce �chier, la ligne suivante :

LinuxIntro Belahcene 11 décembre 2014

Page 33: Linux Intro

3.4. Les Processus Page 33

bella:x:1004:1002:�,:/home/bella:/bin/bash

Signi�e que l'utilisateur bella, dont le mot de passe crypte est ailleurs (ici dans /etc/-shadow), a pour UID et GID (User et Group IDenti�er) 1004 et 1002, son répertoiremaison est /home/bella, et a le droit d'utiliser le shell bash, c'est à dire il peut se logeret travailler sur la machine.

/etc/network/interfaces (sous Redhat : /etc/syscon�g/network-script/ifcfg-eth0)Ce �chier contient les informations de con�guration de la carte réseau. Nous leverrons en détail, voir 4 page 37 dans le chapitre réseau.

ifcon�g eth0 192.168.10.10 Con�gurer la carte réseau ethernet eth0 et lui a�ectel'adresse indiquée 2

/etc/X11/xorg.conf Dans ce �chier se trouve la con�guration du graphisme, lesdéclarations de la souris du clavier et de la carte vidéo. La commande Xorg -con�gure permet de refaire la con�guration et de réécrire le �chier xorg.conf.Version recente de xorg, la detection se fait de facon automatique au demar-rage su serveur X. Utiliser plutot la commande xrandr par exemple : xrandr�current a�che les informations sur l'ecran actuel, et xrandr �size 1024x768�xe l'a�chage a la resolution 1024 par 768 pixels.

3.4 Les Processus

Un processus est un programme en exécution, c'est à dire chargé en mémoire et doncen exécution ou en attente de l'être. Contrairement à ce qui pourrait paraître, mêmesi l'utilisateur ne lance aucune application, il y beaucoup de processus en exécution enmême temps 3. Pour avoir une idée, exécuter la commande ps aux par exemple pouravoir les détails sur les processus, ou encore la commande top. Ces commandes sontdétaillées plus loin. Dès qu'un processus est lancé il reçoit un identi�ant PID (ProcessusIDenti�cation).

Pour arrêter un programme en exécution ou un processus il su�t de donner son PID àla commande kill. Par exemple kill -9 345, détruit complètement le programme dont lenuméro est 345, si la permission est accordée.

Linux est un système mutli-utilisateur, plusieurs utilisateurs peuvent y travailler enmême temps sur la même machine ou à distance. Il est déconseillé de se loger en superutilisateur (compte administrateur ou root), si à un moment donné, nous avons besoinde lancer une commande d'administrateur, il su�t d'utiliser le �su� mis pour �switchuser�, qui permet de passer momentanément en root.

Par exemple pour créer un compte il faut être super user, voici un exemple :

2. La con�guration peut se faire par outil graphique évidemment3. c'est un abus de langage, en realite une seule instruction machine est exécutée à la fois, à moins

d'avoir un multiprocesseurs

LinuxIntro Belahcene 11 décembre 2014

Page 34: Linux Intro

3.5. Installation de Logiciel Page 34

bela@pc1020:$ su -Password: -------> donner le mot de passe de rootpc1020:~# adduser cpte1Adding user `cpte1'... directory `/home/cpte1'.Enter new UNIX password: ------> mot de passe cpte1Retype new UNIX password:password updated successfully Changing the user information

3.5 Installation de Logiciel

3.5.1 Logiciel Précompilé type deb

Installation avec dpkg

L'installation de logiciel sous debian se fait par la commande dpkg (Debian PacKaGe),tout comme sous redhat on utilise rpm (Redhat Package Manager). Un autre outil pluspuissant apt-get sera étudie a la section suivante. faire dpkg �help ou man dpkg pouravoir les di�érentes options.

dpkg -i apache2_2.2.8-3_all.deb

Permet d'installer � -i � le logiciel apache2. Le paquet doit être donne complètement,avec sa version. Les options les plus courantes en plus de -i, sont (concerne les paquetsinstalles) :

� -l : a�che des informations sur le paquet (uniquement le nom : par exempleapache2)

� -L : le contenu du logiciel, liste des �chiers� -r : supprime le paquet (remove)

Remarque 13. dpkg ne résoud pas les dépendances, c'est à dire, si un logiciel A dépendde B, si B n'est pas installe, dpkg vous informe que A nécessite B, mais n'essaiera pasd'installer B, B doit être installé manuellement.

Installation avec apt-get

La distribution debian a un outil extrêmement puissant et utile pour l'installation deslogiciels, il permet de faire la résolution automatique des dépendances, c'est à dire lors-qu'un logiciel nécessite l'installation d'un autre, ce dernier est alors installé a moins qu'ilne soit pas présent, dans ce cas l'installation n'est pas réalisée.

Utilisation de Synaptic

Le logiciel synaptic est une interface a la commande apt-get, en plus d'installation ou dela suppression de logiciel, cet outil donne aussi des informations concernant les paquets.Au fait il utilise les �chiers sources.list pour charger la liste des dépôts, les �chiers

LinuxIntro Belahcene 11 décembre 2014

Page 35: Linux Intro

3.6. Exercices Page 35

Packages pour les info sur les paquets et aptget.conf pour les info sur le proxy parexemple.

De même que pour la commande apt-get on peut utiliser synaptic à travers un proxy.Dans Paramètres->Préférences->Réseau con�gurer la proxy et ajouter le login/motde-passe s'il est requis.

3.5.2 Logiciel Précompilé type RPM

Installation avec rpm

Les distributions compatible Redhat, comme Fedora, Centos, mandriva... utilisent unproche de apt, Yum. Installer un paquet individuel, tout comme dpkg, nécessite dedonner le paquet du type rpm, et utiliser la commande rpm, mais les dépendances nesont pas résolues, pour ce faire utiliser yum.

Installer apache2 se fait avec :rpm -i apache2_2.2.8-3_all.rpm

les options -i pour installer, -U pour une mise à jour , -q pour une requete (query) suiviede l pour lire l'entete, suivie de L pour donner la liste des �chiers.

3.6 Exercices

1. Lister le �chier passwd, remarquer les informations de root, de user et de ftp. Quereprésente la dernière colonne.

2. Créer un répertoire windC, y monter la partition windows qu'il faudra reperer,(voir fdisk). Créer un répertoire usb1, y monter le �ash disk. De meme pour lecdrom, dans un répertoire Cd.

3. Autoriser l'utilisateur a faire le montage de cette partition en lecture seulement.

4. Arrêter les services atd et cron, tester ensuite si les programmes at et crontabfonctionnent. Redémarrer les de nouveau et véri�er at et crontab.

5. On veut lancer automatiquement au démarrage un programme, par exemple min-bar, donner la procédure.

6. Monter puis démonter des partitions et dire quelles sont leur taille et type.

7. Comment retrouver le mot de passe root avec le CD de Démarrage ?

8. Comment retrouver le grub (le menu démarrage) détruit par l'installation dewind$XP? Le �chier /boot/grub/menu.lst contient les infos sur le menu de dé-marrage, voir les commentaires sur le �chier. fdisk -l permet de lister les partitions.�

9. Créer un usager user1, regarder groupes secondaires, en particulier peut il monterautomatiquement un �ash disk ou écouter le son.

LinuxIntro Belahcene 11 décembre 2014

Page 36: Linux Intro

3.6. Exercices Page 36

10. Créer un autre usager user3, permettre a l'utilisateur user1 l'accès et la lecturedu répertoire /home/user3 mais pas à l'utilisateur user2. Ind : regarder les per-missions et le groupe du répertoire.

11. Permettre aux utilisateurs du groupes gr1 d'utiliser �refox pour naviguer de 13heures à 14 heures et pour le groupe gp2 de 16 heures à 17 heures, tous les jourssauf vendredi.

12. Donner le nom, les paramètres et le PID du script en exécution.

13. Créer deux usagers u1 et u2 dans le groupe gr1 (a créer), autoriser uniquementle passage (en lecture seule) d'un utilisateur à un autre de ce groupe.

14. Écrire un bash script qui permet de récupérer dans votre répertoire les �chiersde /etc/init.d, de les archiver et compresser, créer un répertoire de travail et lesdésarchiver dans celui-ci.

15. Arrêter tous les processus dont le PID est supérieur a 500 ;

16. Écrire un script qui convertit tous les noms de �chiers de minuscule vers majusculed'un répertoire donné. Voir la commande tr.

17. Installer le logiciel source �tk-1.1.9-i386.bz2.

LinuxIntro Belahcene 11 décembre 2014

Page 37: Linux Intro

4 Introduction aux Réseaux

A tous les niveaux des couches sont dé�nis des protocoles de communication.

Dé�nition 14. Un protocole est un ensemble de règles et de procédures à respecterpour pouvoir échanger des informations entre machines / logiciels des données sur unréseau

Le modèle ISO découpe la communication en 7 couches qui ne sont pas toujours trèsnettement distinctes, le modèle simpli�é se réduit à 4 couches.

� Application : web, ftp, trai-tement par l'applicatif

� Transport : véri�cation del'information

� Routage de réseau : choix duchemin

� Réseau physique transmis-sion de bits.

Remarque 15. A chaque niveau sur une machine correspond sur la machine distante lamême couche qui joue le même rôle. Par exemple la couche transport véri�e la validitéde l'information et fait corriger les erreurs de transmission.

4.1 Communications à Travers les Réseaux

Nous résumons en bref la communication entre les ordinateurs dans un réseau et lesdi�érentes couches intervenant.

La �gure 4.1 montre comment les couches interviennent dans une communication entrepar exemple client ftp et serveur ftp.

Chaque couche de réseau, ajoute sa propre entête qui sera traitée par la couche corres-pondante sur la machine distante. Ainsi par exemple la couche d'application, ici serveurftp, ajoute concernant le port et autre information de l'application que la couche applica-tion du correspondant doit ouvrir pour voir le port concerne et le reste de l'informationpour savoir qu'elle est l'application qui la prendre en charge, ici serveur ftp.

4.2 Création de sous Réseaux

La commande ifcon�g (sans paramètre) : donne la con�guration d'une carte réseau : lenuméro ou addresse IP : (4 octets : 192.168.10.10). Chaque machine dans le réseau est

37

Page 38: Linux Intro

4.2. Création de sous Réseaux Page 38

TCP

Pilote Ethernet

Ordinateur B

Serveur FTP

Protocole FTP

Protocole TCP

Protocole IP

Pro. Ethernet

Carte Reseau

Terminal

Linux Kernel

Client FTP

TCP

Pilote Ethernet

Ordinateur A

IP IP

3Com CoreBuilder 5000TM

Switching Hub

cmgt cmgt

mgt fb fb fb fb fb fb fb fbtpl6 tpl6 5302m 5302m

Figure 4.1 � Communication Client Serveur

identi�e par un numéro. Une machine M1 voit M2 si elles sont dans le meme réseau(ou sous réseau) : la séparation en sous est faite par le mask. par exemple 255.255.255.0creer des sous reseau de 254 machines au maximum.

Les informations de reseau sont stockées dans le �chier /etc/network/interfaces.Pour changer manuellement il su�t de modi�er ce �chier et puis de relancer le serveuravec la commande

/etc/init.d/networking restart

Ou bien utiliser la commande network-admin gw 192.168.10.1 qui faitautomatiquement la con�guration.

auto loiface lo inet loopbackauto eth0iface eth0 inet staticaddress 192.168.10.10netmask 255.255.255.0gateway 192.168.10.1

Une adresse dynamique est donne automatiquement par un serveur DHCP, utile voireindispensable si on a peu d'adresse et/ou on veut contrôler les adresses. La con�gurationprecedante, �xe l'adresse de eth0, en static,

Les adresses statiques sont données soit à chaud (utiliser par exemple ifcon�g) ou per-manentes (utiliser les �chiers de con�guration ou un outil qui écrit dans le �chier /etc/-network/interfaces .

LinuxIntro Belahcene 11 décembre 2014

Page 39: Linux Intro

4.2. Création de sous Réseaux Page 39

Remarque 16. Une adresse IP est liée a une carte réseau (ou modem.. ) et non pas à unemachine qui peut avoir plusieurs cartes et donc plusieurs adresses.

Une carte peut avoir plusieurs adresses, on utilise des alias, par exemple, la carte eth0physique a deux adresses correspondant aux cartes logiques eth0 et eth0 :1

ifconfig eth0 192.168.10.10ifconfig eth0:1 192.168.75.35

Le masque permet d'eclater un résaux en plusieurs sous réseaux. Le masque est unesuite de 32 bits qui jouent le role de �ltre. Pour que deux cartes reseaux puissentcommuniquer, il faut qu'elle aie la même partie addresse correpondant au masque (i.e :les bits a 1 du masque).

m1 : 192.168.10.10 m2 : 192.168.10.125m3 : 192.168.10.155 m4 : 192.168.10.225masque 24 bits: m1, m2 , m3 et m4 meme reseaumasque 25 bits :bit 25 de M1 est 0 car 10 s'ecrit 00001010bit 25 de M2 est 0 car 125 s'ecrit 01111101bit 25 de M3 est 1 car 155 s'ecrit 10011011bit 25 de M4 est 1 car 225 s'ecrit 11100001M1 et M2 dans un meme S/reseauM3 et M4 dans un autre S/reseaumasque de 26 bits: chacune est dans un réseau a part.

Exemple 17. Exemples de réseau avec 254 machines et de deux sous réseaux de 126machines chacun, ce dernier cas nécessite un bit supplémentaire pour le masque. Deuxbits suplémentaires sont nécessaires pour faire 4 sous-réseaux , etc...

Masque Adr. Réseau Adr.Machines Adr. Di�usion

24 bits 192.168.10.0 192.168.10.1 à 254 192.168.10.25525 bits 192.168.10.0 192.168.10.1 à 126 192.168.10.127

192.168.10.128 192.168.10.129 à 254 192.168.10.255

Remarque 18. Les commandes suivantes ajoutées au �chier interface, personnalise leroutage, voir le �chier exemple :/usr/share/doc/ifupdown/examples/network-interfaces.gz. Les regles sont lues dansl'ordre, si la premiere n'est pas veri�ée on passe a la deuxieme, la regle par default doitetre la derniere. Dans l'exemple suivant, on n'utilise le gw 192.168.1.200, que si lereseau est di�erent de 192.168.1.128 ;

up route add -net 192.168.1.128 netmask 255.255.255.128 gw 192.168.1.2up route add default gw 192.168.1.200

Exemple 19. Les machines d'adresse 192.168.10.10 et 192.168.10.175 peuvent se co-muniquer avec le masque 255.255.255.0, car la partie controle est 192.168.10, le dernieroctet etant a 0 , n est pas concerne. Par controle elle ne peuvent le faire avec le masque255.255.255.128, en e�et le premier bit (128 en binaire est : 1000 0000) du quatriemeoctet est aussi controle, dans ce cas 10 a le premier bit a 0, par contre 175 son bit est à1.

LinuxIntro Belahcene 11 décembre 2014

Page 40: Linux Intro

4.2. Création de sous Réseaux Page 40

4.2.1 Con�guration de Passerelle

Pour changer de réseaux, il est nécessaire d'utiliser une passerelle. Imaginer une passerellecomme un couloir dans une maison, il permet de passer d'une chambre a une autre, cequi veut aussi dire que chaque chambre a un acces sur le couloir. Ainsi la passerelle doitavoir une adresse dans le premier reseau et une autre dans le deuxieme.

Exemple 20. Considérons 2 sous réseaux avec les adresses 192.168.10.0 et 192.168.20.0avec le masque 255.255.255.0. La machine d'un sous reseau ne peut acceder directementa une machine d'un autre. La passerelle doit avoir 2 cartes avec les adresses par exemple192.168.10.1 et 192.168.20.1, le role de cette passerelle et de faire suivre � forwarding �les paquets d'une carte a une autre.

Ajout de passerelle à chaud dans le noyau sans sauvegarder pour prochain boot ourelance du service networking :

route add default gw 192.168.10.1

Lancer la commande route -n pour voir le resultat de la commande precedante.Destination Passerelle Genmask Indic Metric Ref Use Iface192.168.10.0 0.0.0.0 255.255.255.0 U 0 0 0 eth00.0.0.0 192.168.10.1 0.0.0.0 UG 0 0 0 eth0

La premiere ligne signi�e que l'acces au reseau 192.168.10.0 se fait dirctement a traversla carte reseau eth0. La deuxieme, veut dire, par defaut , tout ce qui n est pas dans lereseau precendent est envoye a travers la carte eth0 a la machine passerelle 192.168.10.1.

Pour rendre permanente toutes ces informations les stocke dans le �chier /etc/net-work/interfaces. Editer ce �chier pour voir les informations enregistrees a l'installation.Pour rendre actif le � Forwarding � mettre a 1 (par defaut elle est a 0) la variable/proc/sys/net/ipv4/ip_forward, a chaud avec la commande ,

sysctl -w net.ipv4.ip_forward=1

De façon permanente mettre dans le �chier /etc/sysctl.confnet.ipv4.ip_forward=1

4.2.2 Filtrage des adresses

Pour que le � Forwarding � se fasse correctement il faut que la passerelle soit declareesur les machines clientes qui communiquent, c'est a dire dans les deux sens. Commeles machines en communications (A et B) ne sont pas dans le meme reseau, A ne peutconnaitre B qu'a travers une passerelle, de meme B ne connait A qu'a travers unepasserelle. Dans l'exemple de la �gure (4.2). La machine 1 communique avec la machine2 du fournisseur 2 a travers le passerelle locale puis le fournisseur1. Ce dernier declaresa passerelle fournisseur 2, et non pas notre réseau locale.Comment alors la machine 2 pourra t elle trouver le chemin vers la machine 1 et luirepondre ? On utilise alors le � Masquerading �. C'est a dire on masque l'adresse de lamachine 1 par l'adresse de la passerelle qui, elle est connue du fournisseur 1, puisque lapasserelle et le fournisseur 1 sont dans le même réseau. On dit qu'on translate ( -t nat) les adresses. Voir pour des détails les �rewalls. Retenons pour l'instant la commandeà utiliser :

LinuxIntro Belahcene 11 décembre 2014

Page 41: Linux Intro

4.2. Création de sous Réseaux Page 41

��������������������

��������������������

Machine1

Fournisseur2

23.12.11.120Passerelle

192.168.10.1

192.168.10.10

Reseau Local

193.194.120.15

Fournisseur1

193.194.120.12

Figure 4.2 � Passerelle

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

On fait ici la translation d'adresse sur la carte en sortie eth1, en cachant les adresseslocales, c'est a dire tous les paquets sortant par eth1 prennent l'adresse de cette derniere.La commande iptables -t nat -L permet de lister les regles (-L) et iptables -t nat-F permet de vider les regles de translation.

Notons que cette commande est lance a chaud sur le noyau, pour la rendre permamanteon peut utiliser un script qui la lance au demarrage. On peut utiliser la proceduresuivante :

1. On ecrit la commande dans un �chier par exemple /etc/init.d/runIptable.sh

2. Le rendre executable chmod +x /etc/init.d/runIptable.sh

3. Creer un lien dans /etc/rc2.d vers ce �chier :� cd /etc/rc2.d ; ln -s ../init.d/runIptable.sh S90runIp

Au démarrage 1 le noyau chargera la commande iptables.

L'adresse du DNS est stockée dans le �chier de résolution des adresses : /etc/resolv.conf

netselect -vv url1 url2 donne le site le plus proche parmi les arguments, ici entreurl1 et url2

1. On suppose ici que le niveau de fonctionnement est 2

LinuxIntro Belahcene 11 décembre 2014

Page 42: Linux Intro

4.3. Le Serveur ssh Page 42

4.3 Le Serveur ssh

Remplace le telnet avec la sécurité dans le transfert de mot de passe, voir le �chier/etc/ssh/sshd_con�g, pour modi�er si nécessaire les autorisation d'exporter degraphique

for i in $(seq 210 223); do ping -c 2 192.168.10.$i; done

S'il est installé, on trouve le script qui permet l'arrêt/démarrage dans /etc/init.d. Dansles répertoires /etc/rcS.d et /etc/rc2.d ou /etc/rc5.d (niveau de fonctionnement : /etc/i-nittab) on met les liens avec ln -s vers les scripts de démarrage.

Démonstration. /etc/init.d/ssh stop, puis start pour le relancer. Le supprimer de /etc/rc5.d/S77sshpermet de l'enlever du démarrage automatique. La commande

rm /etc/rc5.d/S77ssh

supprime le lien, pour ne pas le lancer au démarrage. Pour l'arrêter à chaud/etc/init.d/ssh stopln -s /etc/init.d/ssh /etc/rc5.d/S79ssh

S : start pour lancer, 79 indique l'ordre d'exécution des services, n'a de l'importance ques'il doit être exécuté après un autre service.

Con�guration du ssh server : pour autoriser le transfert du graphisme, mettre a yes leX11Forwarding dans le �chier /etc/ssh/sshd.con�g, ou a no pour interdir le transfert dugraphisme.

A la premiere connection sur le serveur ssh, ce dernier presente son empreinte ou identite,ainsi le client peut veri�er si necessaire que la clé publique 2 présentée par le serveur estbien sa clé publique... sinon le client risque de se connecter à un faux serveur qui auraitusurpé l'adresse IP du vrai serveur.

Essayer un acces sur le serveur puis lancer une commande qui ouvre une fentre parexemple gedit

ssh [email protected]

Refaire la connection avec l'option -X, et réessayer de nouveau gedit. Une autre optioninteressante est de lancer une commande a distance sans se loger comme par exemple

ssh -X [email protected] "gedit --display=:0.0"

Ouvrir le �chier /etc/ssh/sshd_con�g, veri�er quelque option, par exemple ne pasaccepeter le login avec root � PermitRootLogin no � et ne pas admettre une connectionsans password, � PermitEmptyPasswords no �.

ssh -l root 192.168.10.170 "echo -e 'l2009\nl2009'> f.txt; passwd < f.txt "

Cette commande permet de changer le mot de passe root sur la machine 192.168.10.170,le nouveau mot de passe est l2009.

2. voir notre document sur la securite des serveurs

LinuxIntro Belahcene 11 décembre 2014

Page 43: Linux Intro

4.4. Exercices Page 43

4.4 Exercices

1. Soient les sous réseaux 192.168.10.0, 192.168.142.0 et 192.168.20.0 et les machinesM1 :192.168.10.15, M2 :192.168.10.32, N1 :192.168.20.65 et N2 :192.168.142.20.Est ce que les machines N1, N2, M1 et M2 se voient directement avec le masque255.255.255.0.

2. Même question pour le masque 255.255.128.0 ? Quel est le masque qui éclatele réseau 192.168.0.0 en 8 sous réseaux et quelles sont les plages d'adresses desmachines, de di�usion et de réseaux.

3. Les connections peuvent elles se faire entre M1 :192.168.40.10/24, M2 :192.168.50.10/21et M3 : 192.168.60.10/20. Expliquer.

4. Créer des alias à votre carte réseau pour être dans 2 réseaux di�érents : 192.168.128.0et 192.168.0.0, par exemple 192.168.10.10 et 192.168.210.10. Utiliser le �chier decon�gurations /etc/network/interfaces (sauvegarder le �chier initial).

5. Faire de votre machine une passerelle, si vous avez une seule carte utilisez lesalias.

a) On suppose que vos voisins sont dans 2 sous-réseaux (M1 : 192.168.10.10/25et M2 : 192.168.10.150/25) et ne peuvent se voir qu'à travers votre passerelle.Con�gurer votre machine passerelle.

b) on suppose que M2 ne declare pas de passerelle , faire en sorte que M1 puisseacceder à M2. M2 peut elle aller sur M1 ?

6. Con�gurer le serveur ssh de sorte qu'il n'y est pas d'accces root, que le temps d'es-sai ne depasse pas une minute. Activer l'acces sans password, refuser le transfertde graphisme. Refaire en inversant ces autorisations.

7. Con�gurer le serveur ssh de sorte qu'il n y est pas d'accces root, que le tempsd'essai ne depasse pas une minute et pas admettre d'acces sans password, refuserle transfert de graphisme. refaire en autorisant tout cela.

LinuxIntro Belahcene 11 décembre 2014