Formation SYSTEME D'EXPLOITATION Linux



Documents pareils
Cours Programmation Système

Linux et le Shell. Francois BAYART. Atelier du samedi 20 Novembre

Premiers pas en Linux

Cours 6 : Tubes anonymes et nommés


TP1 - Prise en main de l environnement Unix.

Outils pour la pratique

«Astrophysique et instrumentations associées» Cours UNIX Benoît Semelin

Introduction aux Systèmes et aux Réseaux

Aide-Mémoire unix. 9 février 2009

La Comptabilité UNIX System V Acctcom

3IS - Système d'exploitation linux - Programmation système

Bon ben voilà c est fait!

Introduction au Système d Exploitation Unix/Linux

Unix/Linux I. 1 ere année DUT. Université marne la vallée

Le système GNU/Linux IUP NTIC /11/05

Introduction...3. Objectif...3. Manipulations...3. La Sauvegarde...4. Les différents types...4. Planification...4. Les outils...5

C.M. 1 & 2 : Prise en main de Linux

TD séances n 3 et n 4 Répertoires et Fichiers sous Unix

Le prototype de la fonction main()

Programmation système en C/C++

sshgate Patrick Guiran Chef de projet support

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique

Projet Administration Réseaux

1 Configuration réseau des PC de la salle TP

Guide d'installation de la base de données ORACLE 10g ( ) pour linux FEDORA CORE 4.

Polycopié Cours Système d Exploitation I. Programme : Filière SMI S3

Imprimantes et partage réseau sous Samba avec authentification Active Directory

TP 1 Prise en main de l environnement Unix

Environnements informatiques

Introduction à Linux (pour le HPC) «Linux 101» Présentation :

Ce TP consiste à installer, configurer et tester un serveur DNS sous Linux. Serveur open source : bind9 Distribution : Mandriva

Qu'est-ce qu'un processus: Définitions

1 Démarrage de Marionnet

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

Contents. 1 Premiers pas en Linux. 1.2 Généralités. 1.1 Bref historique Linux

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Programmation système I Les entrées/sorties

Introduction aux Systèmes et aux Réseaux

Cloner un disque dur

Formation Unix et GNU/Linux

GESTION DES FICHIERS C/UNIX

Titre: Version: Dernière modification: Auteur: Statut: Licence:

Note : Ce tutoriel a été réalisé sur GNU/Linux (Ubuntu) avec un serveur LAMP installé en local.

Les commandes relatives aux réseaux

Shell Bash Niveau débutant

Table des matières Hakim Benameurlaine 1

TP 4 de familiarisation avec Unix

Personnes ressources Tice. Académie de Rouen

TP : Shell Scripts. 1 Remarque générale. 2 Mise en jambe. 3 Avec des si. Systèmes et scripts

Système et réseaux (SR1) Gestion des utilisateurs

Installation d'un serveur sftp avec connexion par login et clé rsa.

Simple Database Monitoring - SDBM Guide de l'usager

Programmation système de commandes en C

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

PPe jaune. Domingues Almeida Nicolas Collin Leo Ferdioui Lamia Sannier Vincent [PPE PROJET FTP]

Formation Technicien Supérieur de Support en Informatique T2SI. Le module LINUX. Session J04 Version 01

TP n 2 : Installation et administration du serveur ProFTP. Partie 1 : Fonctionnement du protocole FTP (pas plus de 15min)

Protocoles DHCP et DNS

La mémoire. Un ordinateur. L'octet. Le bit

Serveur de sauvegardes incrémental

Activité 1 : Création et Clonage d'une première machine virtuelle Linux OpenSuSE.

Linux LTE 2 - ISSBA. Année universitaire Linux Réseau et Archivage. Jean-Michel RICHER Faculté des Sciences, H206 1

Atelier individuel. Linux 101. Frédérick Lefebvre & Maxime Boissonneault frederick.lefebvre@calculquebec.ca U. Laval - Janv. 2014

Configurer une sauvegarde FTP simple et efficace

Introduction...3. Objectif...3. Manipulations...3. Gestion des utilisateurs et des groupes...4. Introduction...4. Les fichiers de base...

Année Cours Unix-Shell. par. Karam ALLALI. Ecole Spéciale d Informatique

Classe et groupe : 1P 3 SEN TRI. Ubuntu : serveur Contrôleur de Domaine (PDC) avec SAMBA

Réaliser un inventaire Documentation utilisateur

Administration UNIX. Le réseau

2011 Hakim Benameurlaine 1

Introduction. Adresses

Manuel de System Monitor

Pharmed. gestion de pharmacie hospitalière. Installation / déploiement

Introduction au protocole FTP. Guy Labasse

LEs processus coopèrent souvent pour traiter un même problème. Ces

Mise en place d un serveur DNS sous linux (Debian 6)

Client windows Nagios Event Log

Programmation C. Apprendre à développer des programmes simples dans le langage C

Introduction à l Administration Systèmes et Réseaux

Plan du cours. Historique du langage Nouveautés de Java 7

Installation de Zabbix

6 - Le système de gestion de fichiers F. Boyer, UJF-Laboratoire Lig, Fabienne.Boyer@imag.fr

PRESENTATION RESSOURCES. Christian Dupaty BTS Systèmes Numériques Lycée Fourcade Gardanne Académie d Aix Marseille

Chapitre 2 Accès aux partages depuis votre système d'exploitation

PROXY SQUID-SQARD. procédure

G4L (Ghost for Linux) Clonage vers FTP Version: août 2006

Mon premier rpm. 7 juin Avant de commencer RPM URPMI RPMBUILD... 2

Les processus. Système L3, /39

Étude de l application DNS (Domain Name System)

NON URGENTE TEMPORAIRE DEFINITIVE OBJET : RÉCUPÉRATION DES DONNÉES CLIENT SUR DISQUE DUR DÉFECTUEUX OU INVALIDÉ

Les Boitiers de Vote Electroniques (Clickers)

Installer un domaine DNS

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Mise en route et support Envision 10 SQL server (Avril 2015) A l'intention de l'administrateur SQL Server et de l administrateur Envision

Eole - gestion des dictionnaires personnalisés

Année Universitaire ième année IMAC Mardi 6 janvier Cloud computing Travaux Pratiques

Sauvegarde de postes clients avec BackupPC

Le système de gestion des fichiers, les entrées/sorties.

Transcription:

Formation SYSTEME D'EXPLOITATION Linux

Les origines Tout a commencé en 1991 avec un étudiant Finlandais Linus Torvalds DOS sur son PC, c'est trop simple il étudie Minix mais c'est trop limité il décide d'écrire un système d'exploitation de type Unix sur PC

Le Noyau Linux S'insère dans le projet GNU Noyau Unix sur PC Publié sous la licence Publique GNU (GPL)

Caractéristiques Principales Système ouvert Multi tâches Multi utilisateurs Multi processeurs Multi plateformes Versions 32 bits et 64 bits Norme POSIX

Les utilisateurs Nom de connexion Mot de passe UID identifiant utilisateur GID identifiant de groupe primaire Répertoire principal (home directory) Programme de connexion Super Utilisateur: root

Connexion Login Prompt Shell

Commandes Commande = Nom + [argument(s)] Exemples: # cat /etc/passwd # cat /etc/passwd cut f1,5 d: sort Enchainement inconditionnel # date ; whoami Enchainement conditionnel # date && whoami # date whoami

Compte utilisateur Nom de l'utilisateur: logname, whoami Infos complètes sur l'utilisateur: id Interface terminal : tty Infos sur le système d'exploitation : uname Liste des utilisateurs sur la machine: who Modification de son mot de passe: passwd Page de manuel: man

Le système de fichier

Propriétés Sensible à la casse: Document document Noms longs Fichiers dans des répertoires Structure arborescente, cycles possibles Répertoires spéciaux: /... Chemin d'accès absolu ou relatif Fichiers invisibles Fichiers spéciaux Liens (hard et soft) Gestion de disques : système de fichiers

Manipulation de fichiers et de répertoires Création d'un répertoire mkdir <nom du répertoire> mkdir p rep1/rep2/rep3 mkdir tient compte du mask: umask 022 Suppresion d'un répertoire rmdir <nom du répertoire> supprime le répertoire uniquement s'il est vide

Manipulation de fichiers et de répertoires Copie de fichiers et de répertoires cp <fichier source> cp <fichier source> cp <liste de fichiers> options: i interactif p conserve les attributs r récursif <fichier destination> <répertoire destination> <répertoire destination>

Manipulation de fichiers et de répertoires Déplacement de fichiers et de répertoires mv <fichier source> mv <fichier source> <fichier destination> <répertoire destination> mv <liste de fichiers> <répertoire destination> options: i interactif f force

Manipulation de fichiers et de répertoires Suppression de fichiers et de répertoires rm <fichier(s)> options: i interactif f force r récursif

Manipulation de fichiers et de répertoires Visualisation de fichiers ou de répertoires ls [option] [fichiers/répertoires] options: l affiche les informations a liste tous les fichiers r ordre inverse t tri par date d liste le nom du répertoire i liste les inodes

Manipulation de fichiers et de répertoires Nature des fichiers file <fichier>

Manipulation de fichiers et de répertoires Création de fichiers ou modification touch [option] <fichier> options: a modification de la date de dernier accès c ne crée pas le fichier s'il n'existe pas m change la date de modification par la date courante t change la date au lieu de la date courante format de la date : MMDDhhmm[YY] exemple: touch t 04010000 ~/test.txt

Manipulation de fichiers et de répertoires Recherche de fichiers ou de répertoire find <répertoire de recherche> <options> <actions> options: type nature de l'objet (f=fichier, d=directory,l=lien) name nom de l'objet size taille de l'objet perm permission de l'objet atime date de création ctime date de modification des attributs mtime date de dernière modification actions print affiche le résultat de la commande exec effectue une commande Unix sur les fichiers ok = exec mais demande confirmation

Les expressions régulières

Les expressions régulières Expression régulière = reconnaissance d'expression Caractères spéciaux: Méta caractères Facteurs d'occurence Les méta caractères:. Caractère quelconque sauf fin de ligne. $ Fin de ligne. ^ Début de ligne, sauf dans [], négation [] Un des caractères contenus dans les crochets. Intervalle de caractères dans []

Les expressions régulières Les facteurs d'occurences:? Expression régulière précédente optionnelle * Répétition 0, 1 ou plusieurs fois + Répétition 1 ou plusieurs fois {n} Répétition de exactement n fois {n,} Répétition de au moins n fois {n,m} Répétition de au moins n mais au plus m fois Alternative \c Suppression de la spécificité du caractère 'c' () Groupement d'expressions

Expressions régulières ab(cd)*ef abcdef, abcdcdef, abcdefg, abef ab[c d]ef abcef, abdef ab[^a z]ef ab1ef, abcef ^From:.*.com$ From: robert@prolibre.com grep i '^ro*bash$' /etc/passwd grep '05\/Feb[^:]*:23.*scripts.*\+dir' /var/log/apache/access.log 62.195.62.11 [05/Feb/2002:23:30:50 +0100] "GET /scripts/..%c0%af../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 404 312 " " " " 62.195.62.11 [05/Feb/2002:23:30:50 +0100] "GET /scripts/..%c1%9c../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 404 312 " " " " 62.195.62.11 [05/Feb/2002:23:30:50 +0100] "GET /scripts/..%%35%63../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 400 296 " " " " 62.195.62.11 [05/Feb/2002:23:30:51 +0100] "GET /scripts/..%%35c../winnt/system32/cmd.exe?/c+dir HTTP/1.0" 400 296 " " " "

Caractères spéciaux ' empêche l'évaluation des méta caractères " empêche l'expansion des méta caractères sauf \ ` et $ ` évalue et fournit le résultat de la commande $ (cmd) \ empêche l'interprétation du caractère spécial $préfixe une variable

Caractères spéciaux exemples: ls l `which firefox` ls l $HOME echo nom de la connexion: $USER echo nom de la connexion: `whoami` echo nom de la connexion: $(whoami) echo 'nom de la connexion: $USER '

Redirection d'entrée/sortie Flux d'une commande

Redirection d'une commande Redirection de sortie: ls l 1> fichier ou ls l > fichier ls l 2> /tmp/test Ajout à la fin d'un fichier (concaténer): ls l 1>> fichier Redirection de l'entrée wc < /tmp/test > /tmp/test1

Redirection d'une commande Réunion de canaux grep 'linux' /usr/doc/* > /tmp/result 2>&1 Redirection des erreurs grep 'linux' /usr/doc/* > /tmp/result 2> /dev/null

Groupes et utilisateurs A qui appartient le fichier que l'on crée? directory (admin,admin) tux (tux,pingoo) crée le fichier toto.txt Linux: toto.txt user:tux group:pingoo

Droits d'accès des fichiers Droits: lecture (r) écriture (w) exécution (x) U G O rwx rwx rwx A qui : utilisateur (u) groupe (g) autre (o)

Modifications des droits d'accès La commande: chmod <droits> <fichier(s)> qui u(ser) g(roup) o(ther) Comment = force les droits + ajoute les droits retire les droits quoi r(ead) w(rite) x(execute)

Modifications des droits d'accès Commandes: Change le owner du fichier chown <user> <fichier(s)> ex: chown billou /tmp/windows ex: chown billou.gates /tmp/winnt Change le groupe du fichier chgrp <group> <fichier(s)> ex: chgrp gates /tmp/win2000 Change le mask de création des fichiers umask <droits> ex: umask 037

Droits d'accès étendus SUID (s) exécute une commande sous l'id du propriétaire SGID (s) exécute une commande sous le groupe du propriétaire le répertoire créé appartiendra au groupe du répertoire principal Sticky Bit (t) présence en mémoire droit de n'effacer des fichiers que si on en est propriétaire (/tmp)

Commandes Alias, unalias, history!! réexecution de la dernière commande!n réexecution de la commande numéro n! n réexecution de la nième dernière commande!chaîne réexecution de la dernière commande commençant par la chaîne!?chaîne réexecution de la dernière commande contenant la chaîne

Initialisation de l'environnement Cela est dépendant du shell utilisé. shell de commande.bashrc

Personnalisation du prompt Par défault le prompt fini par le caractère $ (# pour root). Le prompt par défaut: '\s\w\$' \d Affichage de la date \h Nom de la machine \n Saut de ligne \s Nom du shell \t Heure \u Nom de l'utilisateur \w Répertoire courant \# Numéro de commande depuis la connexion \! Numéro de commande (historique) Exemple: $ PS1= "[\#] \u(\h)\w: "

Traitement du contenu des fichiers cat affiche sur le canal de sortie, des octets lus sur le canal d'entrée concaténation de fichiers head affiche les premières lignes d'un fichier tail affiche les dernières lignes d'un fichier more affiche des octets lus sur l'entrée standard wc affiche le nombre de lignes, de mots, de caractères split division d'un fichier en plusieurs fichiers sort tri des lignes d'un fichier grep recherche d'occurence

Traitement du contenu des fichiers cut extraction de colonnes ou de champs diff comparaison de fichiers comm comparaison ligne à ligne de 2 fichiers triés uniq rend unique les ligne trié d'un fichier tr traitement des caractères d'un fichier sed substitution de caractères pr mise en page

Gestion du temps date affiche la date cal affiche le calendrier pour le mois en cours time temps d'exécution d'une commande at diffère l'exécution d'une commande crontab exécution cyclique d'une commande

Compression des fichiers gzip, gunzip, zcat, zless, zgrep exemple: cat file1 file2 gzip > foo.gz gzip cr IMG > IMG.gz Bzip2, bunzip2, bzcat

Archivage La commande standard est : tar Exemples: archive le répertoire /home/robert tar czvf robert.tar.gz /home/robert extrait le contenu de l'archive tar xzvf robert.tar.gz tar xyvf robert.tar.bz2 liste le contenu de l'archive tar tzvf robert.tar.gz

Installation logiciels depuis la source A lire: REAME ou readme.txt INSTALL Installation standard:./configure help Make make install (en tant que root)

Gestion des processus

Gestion des processus Ps : liste les processus en cours Ctrl z stoppe l'execution du processus en cours kill envoie un signal à un processus (TERM, HUP, KILL, INT ) jobs liste les processus en arrière plan bg l'execution du processus est placé en background fg relance l'exécution d'un processus stoppé stty configuration du terminal

Le Fork Un fork est une fonctionnalité sous les systèmes Unix ou Linux qui permet de dupliquer un processus. Pour expliquer son fonctionnement, on va partir d'un processus qu'on appellera "Le Papa". Ce processus va simplement se dupliquer et les deux processus (le père et le fils) afficheront chacun leur statut (père ou fils).

Le Fork Lancement du père Nous allons partir d'un processus père. Afin de bien déterminer les enjeux du fork, on va également observer ses descripteurs de fichiers, ou plutôt l'un des plus importants: celui du flux de sortie (stdout) c'est à dire l'écran. On va aussi lui mettre une petite variable globale qui servira plus tard pour l'affichage du statut du processus (père ou fils). Voici à quoi va ressembler notre processus de départ:

Le fork

Le fork

Le fork Le père a appelé fork et il s'est dupliqué. Cela implique plusieurs choses: Un nouveau processus a été créé, il est considéré comme le fils du processus qui a appelé fork() Ce processus est une copie conforme de son père. D'ailleurs, la prochaine instruction à exécuter sera la même pour les deux : la condition if. La fonction fork() ne retourne pas la même chose pour les deux processus. Pour le fils, il retournera 0. Pour le père, il retournera le pid du fils (son numéro de processus). Cette duplication implique certaines choses concernant les variables et les descripteurs de fichiers. Nous allons y venir.

Le Fork

Le Fork L'appel système getpid() retourne le PID du processus appelant. getppid() retourne le PID du père du processus. La primitive exec() La primitive execlp() permet le recouvrement d'un processus par un autre exécutable (voir 6.2). int execlp( char *comm, char *arg,..., NULL ); comm est une chaîne de caractères qui indique la commande à exécuter. arg spécifie les arguments de cette commande (argv). Exemple : exécution de ls l /usr execlp( "ls", "ls", " l", "/usr", NULL );

Le Fork La primitive exit() exit() est une autre fonction qui ne retourne jamais, puisqu'elle termine le processus qui l'appelle. #include <stdlib.h> void exit(int status); L'argument status est un entier qui permet d'indiquer au shell (ou au père de façon générale) qu'une erreur s'est produite. On le laisse à zéro pour indiquer une fin normale.

Le Fork La primitive wait() #include <sys/types.h> #include <sys/wait.h> int wait( int *st ); L'appel wait() permet à un processus d'attendre la fin de l'un de ses fils. Si le processus n'a pas de fils ou si une erreur se produit, wait() retourne 1. Sinon, wait() bloque jusqu'à la fin de l'un des fils, et elle retourne son PID. L'argument st doit être nul.

Le Fork La primitive sleep() #include <unistd.h> int sleep( int seconds ); L'appel sleep() est similaire à la commande shell sleep. Le processus qui appelle sleep est bloqué durant le nombre de secondes spécifié, sauf s'il reçoit entre temps un signal. Notons que l'effet de sleep() est très différent de celui de wait() : wait bloque jusqu'à ce qu'une condition précise soit vérifiée (la mort d'un fils), alors que sleep attend pendant une durée fixée. sleep ne doit jamais être utilisé pour tenter de synchroniser deux processus.

Le Fork Bombe fork en C : #include <unistd.h> int main(void) { while(1) { /* ici on peut ajouter un malloc pour utiliser plus de ressources */ fork(); } return 0; }

Le Fork Bombe fork en bash :(){ : :& };: :() définit une fonction nommée :. { : :& } est le corps de la fonction. Dans celui ci, la fonction s'appelle elle même (:), puis redirige la sortie à l'aide d'un pipe ( ) sur l'entrée de la même fonction : et cache le processus en fond avec &. La fonction, ensuite appelée avec :, s'appelle récursivement à l'infini.

Quelques notions de réseau Adresse IP: exemple: 192.168.1.2 Netmask: exemple: 255.255.255.0 DNS Domain name server exemple: 192.168.1.1 Gateway: exemple: 192.168.1.1

Quelques notions de réseau DHCP: les informations réseau sont assignés dynamiquement par un serveur (provider Internet lors d'une connexion par modem) Informations sur le hostname hostname i hostname d getent hosts /sbin/ifconfig a /sbin/route n

Quelques notions de réseau Quelques fichiers importants /etc/hosts /etc/resolv.conf /etc/network/* ou /etc/sysconfig/* /etc/init.d/* Quelques programmes importants drakconf linuxconf yast2 webmin

Quelques notions de réseau Connexion à distance rsh, telnet, ssh ftp, ncftp, scp

Structures de contrôles case mot in [ modèle [ modèle ]... ) suite_de_commandes ;; ]... esac #!/bin/bash read p Entrez votre réponse : rep case $rep in o O ) echo OUI ;; n N) echo NON ;; *) echo Indefini esac

Structures de contrôles while suite_cmd1 do suite_cmd2 done while who grep fasm >/dev/null do echo l utilisateur fasm est encore connecte sleep 5 done

Structures de contrôles while read [ var1... ] do commande(s) de traitement de la ligne courante done <fichier_à_lire #!/bin/bash who > tmp while read nom reste do echo $nom done < tmp rm tmp

Structures de contrôles for var in liste_mots do suite_de_commandes Done #!/bin/bash for a in toto tata do echo $a done

Structures de contrôles if suite_de_commandes1 ; then suite_de_commandes2 [ elif suite_de_commandes ; then suite_de_commandes ]... [ else suite_de_commandes ] fi

Structures de contrôles #!/bin/bash if [[ f $1 ]] then echo $1 : fichier ordinaire cat $1 elif [[ d $1 ]] then echo $1 : repertoire ls $1 else echo $1 : type non traite fi

Fonction function nom_fct { suite_de_commandes } c=coucou function f1 { echo $c => utilisation dans la fonction d une variable externe c }

Fonction #!/bin/bash function ping { echo ping if (( i > 0 )) then ((i )) pong fi } function pong { echo pong if (( i > 0 )) then ((i )) ping fi } declare i i=4 ping # (1) ping et pong sont definies