Vous êtes sur la page 1sur 35

ISTA KHENIFRA

OPEN SOURCE
SECTEUR NTIC
TECHNIQUES DE RESEAUX INFORMATIQUES (TRI)
TECHNIQUES DE SUPPORTET MAINTENANCE INFORMATIQUE ET RESEAUX (TSMIR)

Réalisé par : M. OUHAMMOU


Réalisé par : M. OUHAMMOU ISTA-KHENIFRA

PARTIE THEORIQUE
Linux est devenu en quelques années une alternative sérieuse aux systèmes d’exploitation Microsoft pour les
ordinateurs personnels (PC). Linux est la version PC la plus répandue du système d’exploitation Unix utilisé dans
l’informatique professionnelle sur stations de travail et grands ordinateurs.
Le succès actuel de Linux est dû à ses multiples avantages :
libre et ouvert, diffusé gratuitement ou à faible coût ;
indépendant de tout constructeur et de tout éditeur de logiciels ;
évolutif, mais très stable dans son fonctionnement ;
doté d’une interface graphique conviviale et personnalisable ;
assurant la portabilité du savoir et des logiciels du monde Unix ;
disposant d’outils bureautiques et de publication de qualité ;
supportant de nombreux outils de développements ;
disposant d’un excellent support des protocoles et applications Internet.
D’autres caractéristiques générales
Multi-tâches : exécute plusieurs programmes simultanément.
Multi-utilisateurs : plusieurs utilisateurs actifs sur la même machine en même temps.
Multi plates-formes : il fonctionne sur différents processeurs, et pas seulement sur Intel ( Mac, SUN, SGI,
ALPHA, etc. ).
Graticiel : Linux est une libre implantation totalement gratuite, pas de licence à payer.
Open source : le code source est publique c'est aussi un programme qu'on a le droit de copier, modifier,
redistribuer.
compatibilité de code avec les autres UNIX supporté par des milliers de Développeurs disponible partout.
Possibilité de cohabitation avec d’autres systèmes.
Quelques petits points noirs
Linux ne supporte pas tous les composants matériels du monde PC.
Linux demande un changement d ’habitude.
Linux fait la différence entre majuscules et minuscules.

Architecture d’ Linux
Afin d’assurer une certaine stabilité au système, Linux a été conçu autour d’une architecture en couche. Il y a
trois couches fondamentales qui forment le système :
La couche des processus utilisateurs : Chaque processus utilisateur dialogue avec l’extérieur par le biais de
trois fichiers particuliers qui sont ouverts en permanence :
l’entrée standard (standard input) ;
la sortie standard (standard output) ;
la sortie d’erreur standard (standard error output) ;
Par défaut, ces fichiers sont liés au terminal, et représentent le
clavier (input) et l’écran (output).
Le noyau (en anglais kernel) : Le noyau est la partie centrale
d’Unix. Il est résident, il se charge en mémoire au démarrage. Il
gère les tâches de base du système, à savoir: l'initialisation, les
processus système et les processus utilisateurs, le processeur et la RAM, les fichiers systèmes.
La couche de gestion des périphériques : C'est pour assurer l'indépendance vis à vis du matériel que la
gestion des périphérique est faite par une couche logicielle. Vu du noyau, un périphérique est considéré comme
un fichier. En fonction des caractéristiques de ce fichier, le noyau va déterminer l'adresse mémoire des sous-
programmes à exécuter pour réaliser la liaison avec le périphérique en question. Cette couche dépend
étroitement du matériel.
Le shell
Sous le nom shell (en français coquille), on désigne l'interface utilisateur qui, dans l'architecture d'UNIX,
entoure le noyau.
Plus simplement, le shell est un programme qui permet à l'utilisateur de dialoguer avec le cœur du système
2
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
(le noyau).
Il permet de réaliser plusieurs tâches :
Il interprète les ordres tapés au clavier par l'utilisateur et permet ainsi l'exécution des programmes;
Il fournit à l'utilisateur un langage de programmation interprété;
Il permet de modifier l'environnement;
Il se charge de réaliser les redirections des entrées-sorties, les pipes et la substitution de type fichier
(détaillés plus loin dans ce cours).

Afin de pouvoir accéder au terminal, vous devez au préalable vous identifier grâce à un couple login/mot de
passe. En fonction de cela, vous aurez accès à plus ou moins de programmes sur le système.
On distingue principalement 2 types de comptes utilisables sur le système :
Le compte utilisateur classique user@localhost~$
Le compte root (Administrateur) root@localhost~#

Variables d’environnement
Les variables sont des valeurs associées à des noms explicites; elles constituent l'environnement d'exécution
des commandes.
On retrouve dans l'environnement standard du shell un certain nombre de variables dont il se sert à
l'exécution.
Voici les principales variables d’environnement utilisées par le shell :
CDPATH: liste des répertoires recherchés quand cd est exécuté avec un nom relatif comme argument,
DISPLAY: l’écran sur lequel on travaille (par défaut :0.0),
ENV: nom d’un fichier exécuté à chaque appel de ksh,
GID: le numéro du groupe actuel de l’utilisateur,
HOME: répertoire de login,
HOST: le nom de la machine sur laquelle on se trouve,
IFS: séparateur de mots dans les commandes (espace, tabulation ou passage à la ligne); IFS est utilisé pour
les commandes internes pour découper une liste de paramètres,
LOGNAME: le nom de l’utilisateur,
MANPATH: liste des répertoires où se trouvent les pages de manuel,
PATH: liste des répertoire de recherche des commandes, le séparateur est «:»,
PS1, PS2: prompts initial et secondaire (habituellement $ et >),
PWD: le répertoire courant,
SHELL: le shell par défaut,
TERM: nom du type de terminal utilisé,
UID: le numéro de l’utilisateur.
L'arborescence du système de fichiers de Linux
Linux possède de nombreux répertoires, et ils ont chacun leur rôle. Voici le rôle de certains répertoires:
/ : Répertoire "racine", point d'entrée du système de fichiers
/dev : C'est ici que les périphériques (réels et virtuels) sont accessibles (partitions, disques, cartes son,
ports SCSI, ports USB, etc.). Il est souvent nécessaire d'utiliser des programmes pour interpréter ces
contenus (par exemple, en montant la partition /dev/hda1 dans /mnt/hda1 pour accéder aux fichiers).
/mnt : C'est en général à cet endroit qu'on accède aux autres systèmes de fichiers (autres partitions,
CD/DVD, clés USB, serveurs de fichiers...)
/etc : Répertoire contenant les fichiers de configuration du système.
/media : Certaines distributions montent les périphériques amovibles à cet endroit.
/var : Fichiers dont le contenu varie :-)
3
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
– /var/log : On trouve ici les logs des différents logiciels et serveurs. Cela permet de voir ce qui s'est
passé quand quelquechose ne va pas.
– /var/spool : Fichiers en cours de traitement (file d'impression, mails en cours d'envoie...)
– /var/tmp : Fichiers temporaires (voir aussi /tmp).
/home : Chaque utilisateur possède son propre répertoire pour y stocker ses fichiers personnels et la
configuration des programmes.
/tmp : Sont stockés ici les fichiers temporaires (fichiers créés pendant le fonctionnement des logiciels et
supprimés à la fin). (Voir aussi /var/tmp)
/boot : Sont stockés ici les fichiers de démarrage du système (noyau du système, etc.). On y trouve aussi
certains fichiers de configuration (GRUB...)
/lib : Ce sont des bibliothèques utilisées par divers programme (C'est l'équivalent des DLL Windows). Par
exemple, libjpeg.so permet à tous les programme de lire et écrire des fichiers JPEG.
/sbin : Ce répertoire contient les programmes systèmes et les outils d'administration (par exemple les
outils permettant de formater un disque).
/bin : Ici sont situés les programmes utilisés à la fois par les utilisateurs et les administrateurs.
/lost+found : Le répertoire /lost+found/ (lost, found = perdu, trouvé), créé automatiquement à chaque
démarrage du système, est destiné à stocker les fichiers récupérés suite à un incident sur le système (après
une coupure intempestive de l'alimentation, par exemple). En l'absence d'incident, ce répertoire, en toute
logique, devrait rester vide.

Les types de fichiers


On distingue trois types principaux de fichiers :
1. Ordinaires : fichiers de données, programmes (-)
2. Répertoires : appelés aussi catalogues, c'est en fait un fichier qui contient d'autres fichiers (en fait une
table listant d'autres fichiers) (d)
3. Spéciaux : ni ordinaires ni répertoires, ce sont les périphériques (c : caractère, b : blocs), liens
symboliques (l) , tubes nommés (p), sockets (s).
- Un nom de fichier peut contenir sur les Linux récents 255 caractères. Tous les caractères sont
généralement autorisés (sauf /), mais il vaut mieux éviter les métacaractères ou caractères
accentués et spéciaux. L'extension n'est pas gérée mais peut être précisée pour plus de clarté.
- La commande file permet de déterminer le type de fichier ;texte, image, son, …

4
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA

Commencer le travail sur Gnu/Linux


I. Quelques types d’installation :
Procédures d’installation :
Manuelle :
Automatisée : Vous pouvez permettre à une installation de s'exécuter seule à l'aide de Kickstart. Le
fichier Kickstart spécifie les paramètres pour une installation. Une fois que le système d'installation
démarre, il peut lire un fichier Kickstart et commencer le processus d'installation sans participation
supplémentaire de la part d'un utilisateur.
Clonage : création d’une image de votre installation à l’aide d’un logiciel de clonage
II. La défragmentation (cas de l’installation de plusieurs systèmes d’exploitation sur un même
ordinateur) :
L'importance de la défragmentation
Avant d'aller plus loin, il est très vivement conseillé d'effectuer une défragmentation. C'est une opération
qui consiste en gros à mieux organiser les fichiers sur votre disque dur, à les rassembler pour éviter qu'ils
ne soient éparpillés.
Les avantages seront les suivants:
– Comme vos fichiers seront près les uns des autres, le disque dur mettra moins de temps à les récupérer
quand on les lui demandera.
– Et surtout, c'est ce qui nous intéresse ici, cette organisation « prépare » votre disque au
partitionnement que vous allez faire. Si vous ne le faites pas, il y a un risque que certains bouts de
fichiers disparaissent lors du partitionnement : vous pourriez alors vous retrouver avec un système
d’exploitation instable !
III. Les systèmes de fichiers :
Sur chaque partition, les fichiers sont organisés selon ce qu'on appelle un système de fichiers. C'est en
quelque sorte une façon d'organiser les fichiers : ils sont tous référencés dans une sorte d'annuaire
gigantesque.
Le système de fichiers permet aussi de dire qui a le droit de voir tel ou tel fichier. D'autre part, les systèmes
de fichiers récents sont dits « journalisés », c'est-à-dire qu'en cas de crash (votre PC est éteint
brusquement), le système est capable de retrouver ses fichiers sans trop de problèmes.
Règle importante : il ne peut y avoir qu'un seul système de fichiers par partition.
Journalisée
Nom du Taille ou non ? Gestion
Taille maximale
système de maximale
d'une partition
☺ en cas de des droits Notes
fichiers d'un fichier crash du d'accès?
disque

ext2fs il ne dispose pas de la journalisation. Il s'avérer utile sur des disquettes


(Extended File 2 TiB 4 TiB Non Oui 3½ et sur les autres périphériques dont l'espace de stockage est restreint,
System) car aucun espace ne doit être réservé à un journal.

ext3 est essentiellement ext2 avec la gestion de la journalisation. Il est


ext3fs 2 TiB 4 TiB Oui Oui possible de passer une partition formatée en ext2 vers le système de
fichiers ext3 (et vice versa) sans formatage.

ext4 est le successeur du système de fichiers ext3. Il est cependant


1 EiB
ext4fs 16 TiB Oui Oui considéré par ses propres concepteurs comme une solution intermédiaire
=260 bytes
en attendant le vrai système de nouvelle génération que sera Btrfs

ReiserFS est reconnu particulièrement pour bien gérer les fichiers de


moins de 4 ko. Un avantage du ReiserFS, par rapport à ext3, est qu'il ne
nécessite pas une hiérarchisation aussi poussée: il s'avère intéressant
ReiserFS 8 TiB 16 TiB Oui Oui pour le stockage de plusieurs fichiers temporaires provenant d'Internet.
Par contre, ReiserFS n'est pas recommandé pour les ordinateurs
portables, car le disque dur tourne en permanence, ce qui consomme
beaucoup d'énergie.

Ce système de fichiers est utilisé notamment dans la manipulation des


XFS 8 exbibytes 16exbibytes Oui Oui
grands fichiers.

FAT 2 GiB 4 GiB Non Non


(File Allocation Table)

FAT32 4 GiB 8 TiB Non Non Développé par Microsoft.


NTFS
(New Technology File 16 TiB 256 TiB Oui Oui
System)

5
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
IV. Le partitionnement sous Linux :
1. Deux types de partitions :
– primaire : c'est la partition de base, classique, on ne
peut en créer que quatre par disque ;
– logique : c'est un type de partition qui peut contenir de
nombreuses sous-partitions. Celle-ci n'est pas limitée
en nombre, à la différence de la partition primaire.
2. Partitions indispensables
Partition racine
– Point de montage : /
– Utilité : La partition racine est la base de l'arborescence de votre système. Par défaut, si aucun réglage
n'est changé, c'est dans celle-ci que tous les fichiers vont être placés : fichiers de configuration,
programmes, documents personnels, etc.
– Taille : Le minimum est 8 Go. Cependant, pour une question de confort, sa taille devrait être d'au moins 15
Go. Attention: si cette partition est pleine, votre système ne pourra plus démarrer.
– Type : on choisira généralement EXT4 pour une installation sur disque dur, ou bien EXT2 pour une
installation sur clef USB3).
Partition swap
– Point de montage : swap (ne se voit pas à la racine)
– Utilité : L'espace d'échange (en anglais, swap space) est une extension de la mémoire vive (RAM) de votre
ordinateur. Afin d'éviter un blocage de votre ordinateur lorsque sa RAM est pleine, le système se sert de
cette partition pour décharger temporairement la RAM. Cependant, elle sert aussi de décharge de la RAM
lors de la mise en hibernation, c'est pour cette raison que la taille de la partition swap doit être d'au moins
la taille de votre RAM si vous souhaitez utiliser cette fonction.
– Taille : Si vous avez moins de 1 Go de RAM, entre 1,5× et 2× la taille de votre RAM. Si vous avez plus de 1
Go de RAM, de 1× à 1,5× la taille de votre RAM.
– Type : SWAP
Partition boot (parfois nécessaire)
– Point de montage : /boot
– Utilité : Certains ordinateurs n'arrivent pas à lire les fichiers de démarrage s'ils sont situés trop loin
(>100Go) du début du disque. Dans ce cas, il est généralement nécessaire de créer une partition /boot en
début de disque.
– Taille : 100Mo~1Go
– Type : Linux (généralement EXT4)
3. Partitions optionnelles (NB : ça reste une proposition parmi d’autres)
Partition de partage de données avec Windows, MacOS ou autre
– Point de montage : /media/le_nom_que_vous_voulez (pour une partition montée automatiquement).
– Utilité : Si vous conservez un système d'exploitation déjà installé dans votre ordinateur (Microsoft
Windows® ou Apple MacOS®), sachez que ceux-ci sont incapables de lire et d'écrire dans les partitions
de Linux. Mais l'inverse est vrai : Linux sait lire et écrire dans leurs partitions. Pour échanger des
fichiers entre les deux systèmes d'exploitation, il est conseillé de créer une partition de partage entre
Linux et votre autre système, ce qui est beaucoup plus sûr que de stocker des données directement sur
la partition système de Windows ou MacOS.
– Taille : Selon votre usage.
– Type : pour partager des données avec Windows choisissez une partition de partage de type NTFS.
Avec Apple MacOS, choisissez HFS+. Avec un autre système Linux, choisissez EXT4
Partition de données personnelles
– Point de montage : /home
– Utilité : Lorsque vous disposez d'un disque dur suffisamment grand, un dossier home séparé permet
d'isoler les paramètres personnels et les dossiers personnels des utilisateurs du reste du système. Par
défaut, ce dossier fait partie de la partition racine. Un /home séparé est généralement superflu, voire
gênant (notamment sur de petits disques) si vous débutez avec Linux. Consulter ce comparatif pour
savoir si un home séparé peut vous être utile. Important: un /home séparé ne sert pas à partager des
données avec Windows ou MacOS (voir le paragraphe précédent).
– Taille : Selon votre usage.
– Type : on choisira généralement EXT4 pour une installation sur disque dur, ou bien EXT2 pour une
installation sur clef USB. Remarque : d'autres systèmes de fichiers sont disponibles.
Partition pour les fichiers temporaires
– Point de montage : /tmp

6
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
– Utilité : Ceci est recommandé particulièrement pour les serveurs ou les ordinateurs dans lesquels il y a
une modification fréquente de fichiers volumineux dont la taille peut augmenter drastiquement
(comme en retouche photographique ou en montage de vidéos). Ce dossier contient les fichiers qui ne
sont nécessaires que temporairement. Cela comprend, par exemple, des pages web au moment de leur
visionnement, des documents en cours de modifications ou des fichiers en cours de téléchargement.
Séparer le dossier des fichiers temporaire du reste de la partition racine garantit que les transactions
en cours peuvent continuer même si la partition racine devient pleine ou, au contraire, que les
transactions s'arrêteront par manque d'espace sans bloquer inopinément le système d'exploitation, ce
qui est essentiel dans le cas d'un serveur de données.
– Taille : Selon votre usage.
– Type : on choisira généralement EXT4 pour une installation sur disque dur, ou bien EXT2 pour une
installation sur clef USB. Remarque : d'autres systèmes de fichiers sont disponibles.
V. Structure du disque :
• La structure du disque est composée de trois éléments principaux :
– Master Boot Record
• Le secteur de partition principale est le premier secteur d'un disque et comme tout secteur il fait
une taille de 512 octets. Sa structure contient diverses informations sur le disque ainsi que sur les
différentes partitions principales qui le composent. Il va également nous permettre de démarrer à
partir du disque.
– Extended Boot Record:
• Le secteur de partition secondaire est le premier secteur d'une partition étendue, sa structure
contient diverses informations sur les partitions logiques (fonction identique au MBR vis à vis des
partitions physiques).
– Boot Sector
• Le secteur d'amorçage détient les instructions permettant de charger le noyau en mémoire depuis
son emplacement sur le disque.

1. Structure du MBR
• Le MBR contient tout d'abord le programme de
partition qui est chargé de trouver le Boot Sector de la
première partition active du disque.
• Il contient également une structure appelée la table des
partitions principales. Cette table contient elle même une
structure par partition dans laquelle sont définies les
propriétés de chacune d'entre elles.
• Enfin on trouve un code d'identification à la fin du secteur
qui indique que le disque est correctement partitionné et
qu'on peut amorcer le système dessus.
2. Structure d'une entrée de partition
• Chaque entrée de partition contient tout d'abord un flag
indiquant son état. Si elle est active (on peut démarrer
dessus) le flag aura la valeur Ox80 sinon il aura la valeur
0x00. Nous trouvons également diverses informations
concernant ses propriétés comme son type ou sa taille.
3. Partitionnement : Windows / Linux

7
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
VI. Exempes de chargeurs d'amorçage :
Un chargeur d'amorçage (ou bootloader) est un logiciel permettant de lancer un ou plusieurs systèmes
d'exploitation (multi-boot), c'est-à-dire qu'il permet d'utiliser plusieurs systèmes, à des moments différents, sur la même
machine.
Société Microsoft :
• NTLDR (NT LoaDeR ou Chargeur d'amorçage de Windows NT) avec
le BIOS. Sa configuration est stockée dans le fichier boot.ini.
Open source :
• GRUB (GRand Unified Bootloader)(Sous license GNU)
• IsoLinux de Syslinux pour booter à partir d'un DVD ISO 9660
• LILO (Linux loader) pour le BIOS et elilo pour EFI
• PXELinux de Syslinux pour booter à partir d'une carte réseau
Apple :
• Boot Camp est un outil de partitionnement de disque qui écrit le
chargeur d'amorçage utilisé par EFI
VII.Installer un poste de travail Gnu/Linux :
Télécharger les images iso de la dernière version de la distribution sélectionnée.
Amorçage de l’installation
Partitionnement du disque dur
Installation du chargeur de boot
Configuration du réseau
Détermination du fuseau horaire
Initialisation du mot de passe root
Choix et installations des logiciels
Paramétrages post-installation

VIII. Etapes de démarrage :


1) Le BIOS vérifie le système (POST) : Au démarrage, exécution du BIOS (Basic Input/Output System) stocké
en ROM (mémoire morte)
Test du système, recherche et vérification des périphériques, principalement périphérique
d'amorçage du système (disquette, CDROM, ou disque dur)
8
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
Recherche du MBR sur le périphérique d'amorçage
● MBR (Master Boot Record) : secteur de 512 octets, contient le bootloader, ainsi que la table
de partition du disque.
Chargement et exécution du Bootloader, suite d'instructions de démarrage du système
d'exploitation sur le périphérique.
2) Bootloader 1 lancé à partir du MBR du disque dur principal
Les deux chargeurs de démarrage les plus connus : GRUB ou LILO
Exécution divisée en deux étapes :
– le BIOS exécute un binaire de taille réduite stocké dans le MBR
– ce 1er chargeur localise et exécute un 2è chargeur stocké à l'endroit indiqué dans la
configuration (disque dur par ex.)
LILO : configuration succinte stockée dans le MBR. A chaque changement de configuration, une
écriture dans le MBR doit être faite (/sbin/lilo -v -v)
GRUB : chargeur plus récent, lecture possible de la configuration sur partition ext2 ou ext3 dans
/boot/grub/grub.conf
3) Le Boot1oader 1 lance le bootloader 2 sur la partition /boot/
Affichage de l'écran de sélection des système d'exploitation ou des différents noyaux Linux. Une
séléction automatique d'un choix par défaut est effectué au bout d'un laps de temps configurable.
En fonction du choix, exécution d'un binaire de noyau Linux stocké dans /boot/ ; nom de type
vmlinuz-<version-noyau> (où <version-noyau> correspond à la version du noyau spécifiée dans
les paramètres du chargeur de démarrage)
chargement en mémoire de initrd, "image disque RAM initial" : utilisé ensuite par le noyau pour
charger des pilotes utiles au système (par ex. pour disque SCSI)
Avertissement : Supprimer le répertoire /initrd/ provoquerait un échec de votre système, avec un
message d'erreur panique au moment du démarrage.
Le processus de démarrage est cédé au noyau (kernel)
4) Le Bootloader 2 charge le noyau Linux (kernel) et initrd en mémoire
Le noyau est le cœur du système. C'est lui qui fait l'interface entre vos applications et votre
matériel. Par exemple, il gère la mémoire, donne l'ordre d'exécution des tâches sur le(s)
processeur(s), interagit avec vos périphériques via les pilotes matériels (souris, claviers, etc),
s'occupe du réseau, ...
Le noyau (kernel en anglais) est composé d'une partie statique à laquelle on peut dynamiquement
greffer des modules. La partie statique est utilisée lors du démarrage de votre ordinateur et sera
toujours chargée en mémoire, tandis que les modules peuvent être chargés seulement une fois la
machine démarrée et uniquement en cas de besoin.
5) Le noyau charge les modules nécessaires (initrd) et monte la partition root en lecture seulement
6) Le noyau passe le contrôle du processus de démarrage au programme /sbin/init.
7) /sbin/init : chargement des services et outils de l'espace utilisateur, montage des partitions répertoriées
dans /etc/fstab.
8) Invite de connexion de l'utilisateur
IX. Connexion d’un utilisateur :
Lors du démarrage d’une machine, plusieurs étapes se succèdent :
mise sous tension de la machine et de ses périphériques,
bootstrap du système (charger le noyau Linux),
montage des disques,
vérification des systèmes de fichiers (fsck),
passage en multi–utilisateur,
lancement des services.
X. Présentation de l’environnement graphique :
La gestion graphique sous linux repose sur plusieurs couches :
une couche système qui fournit les outils de base,
un gestionnaire d’affichage X Window ou Display Manager qui se charge de la connexion,
un gestionnaire de fenêtres qui permet notamment d’avoir plusieurs fenêtres,
et récemment un environnement de bureau intégré (desktop environment) qui contient des utilitaires et
une suite d’applications.
Xwindow permet également de disposer de plusieurs bureaux virtuels ou espaces de travail.
Les distributions Linux fournissent également beaucoup de gestionnaires de fenêtres (AfterStep, WindowMaker,
twm, etc.) ainsi que deux principaux environnements graphiques qui sont :

9
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
KDE (K Desktop Environment) associé au gestionnaire de fenêtres kwm.
Gnome (GNU Network Object Model Environment), qui peut être associé à plusieurs gestionnaires de
fenêtres.
Xfce Généralement apprécié pour sa légèreté et sa simplicité.
XI. Déconnexion :
En mode texte (console)
Pour sortir de session, vous pouvez utiliser la commande exit ou logout ou encore ctrl-d. La déconnexion
est effective lorsqu’apparaît l’invite login :.
En mode graphique
Pour sortir de session, il faut sélectionner avec le bouton gauche de la souris le menu démarrer puis
choisir la commande log out. La déconnexion est effective lorsqu’apparaîtra l’invite graphique login.
XII.Commande Linux :
Une commande est composée en premier d’un code mnémonique (son nom proprement dit), suivi parfois d’options et/ou
de paramètres. Une option dans une ligne de commandes Unix est une lettre. Elle commence par un tiret "–". Sous Linux, les
options peuvent être de la forme :
-c c = caractère
--mot mot = un mot explicite
l’espace est le caractère séparateur des différents éléments d’une commande. Cette dernière est prise en compte et n’est
interprétée que lorsque l’utilisateur a tapé la touche <return>.
LE TERMINAL
Il est possible sous Linux d’activer simultanément plusieurs consoles de connexion. En mode texte, le basculement entre les
consoles est obtenu par la combinaison de touches <alt–ctrl–Fx>, où Fx représente les touches de fonction F1 à F8 situées sur
le haut de votre clavier.
XIII. La désignation des fichiers :
Un fichier est repéré par son nom et sa position dans l’arborescence : son chemin d’accès (pathname). La syntaxe de ce
chemin d’accès est très précise et peut être décrite des deux manières suivantes :
Le chemin d’accès absolu : Il commence toujours par le caractère / qui désigne le répertoire racine et se termine par le
nom du fichier que l’on veut atteindre.
Le chemin d’accès relatif : Tout utilisateur peut se positionner sur n’importe quel répertoire de l’arborescence. Ce
répertoire devient courant (répertoire de travail). A partir de ce répertoire courant, l’utilisateur construit son propre sous–
arbre de répertoires et de fichiers.
Exemple
chemin absolu /home/saad/develop/prog1
répertoire courant /home/saad
chemin relatif develop/prog1
le chemin personnel : commence par le caractère ~ suivi de l’utilisateur qui pour répertoire personnel le répertoire contenu
dans /home. Si le nom de l’utilisateur n’est pas spécifié, l’identité de l’utilisateur connecté est utilisée implicitement.
XIV. L’interpréteur de commandes : Bash
À la connexion, avant l’interprétation des commandes, c’est-à-dire apparition à l’écran du prompt, le Bash interprète les
fichiers d’initialisation : /etc/profile et .bash profile. Le fichier /etc/profile est géré généralement par l’administrateur alors
que le fichier .bash profile, qui est dans le répertoire d’accueil (HOME), est à la disposition de l’utilisateur. Ces fichiers
permettent de modifier ou de créer des variables internes au shell, ou des variables d’environnement, de créer des fonctions,
etc. Si le fichier .bash profile n’existe pas ou n’est pas en lecture, alors le Bash recherche dans votre répertoire d’accueil
(HOME) et dans cet ordre, le fichier .bash login puis .profile et interprète le premier qui existe et qui est en lecture.
Lorsque le Bash est utilisé en mode interactif et n’est pas un shell obtenu après une connexion, il exécute le fichier .bashrc, s’il
existe. Souvent l’utilisateur intègre dans le fichier .bash profile, l’exécution du fichier .bashrc afin d’obtenir une initialisation
commune au shell de login.
Nom Symbole Valeur(octet)
Kilooctet Ko 210
Mégaoctet Mo 220
Gigaoctet Go 230
Multiples de Téraoctet To 240
l'octet :préfixes Pétaoctet Po 250
binaires Exaoctet Eo 260
Zettaoctet Zo 270
Yottaoctet Yo 280

10
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA

PARTIE PRATIQUE
TP ( 1 ) : Arrêt et redémarrage du système
L'arrêt du système est une opération qui est du ressort de l'administrateur. On ne peut donc le réaliser que sous le
compte root. Plusieurs commandes sont disponibles, les plus simples sont données ci-dessous :
halt, qui permet d'arrêter le système.
reboot, qui permet de le redémarrer.
La commande -h now(halt now) arrête le système immédiatement : shutdown -h now
La commande -r now(reboot now) fait redémarrer tout de suite : shutdown -r now
PLANIFIER UNE EXTINCTION OU UN REDÉMARRAGE
Si vous voulez éteindre ou redémarrez votre machine dans 30 mn alors :
Pour éteindre : shutdown -h +30
Pour rebooter : shutdown -r +30
Si vous voulez l'éteindre ou le redémarrez à une heure fixe, (ici nous dirons 23:00) :
Pour l'éteindre : shutdown -h 23:00
Pour redémarrer : shutdown -r 23:00
Annuler une extinction ou un redémarrage : shutdown –c
-t sec Arrêter le système dans sec secondes
shutdown -t sec '' Message...'' Affiche le message sur tous les terminaux actifs.

TP ( 2 ) : Manipulation des fichiers et des répertoires


man
• Affiche les pages du manuel système. Chaque argument donné a man est généralement le nom d'un
programme, d'un utilitaire, d'une fonction ou d'un fichier spécial.
• Exemples d'utilisation :
o man man affiche les informations pour l'utilisation de man
o man mkdir affiche les informations pour l'utilisation de mkdir
• 'q' pour quitter
mkdir
• Crée un répertoire vide
• Options les plus fréquentes :
o -p : Crée les répertoires parents s'ils n'existent pas
o -m : créer les répertoires avec le mode d’accès indiqué.
cd
• Permet de se promener dans les répertoires
• Exemples d'utilisation :
o cd permet de revenir au répertoire /home/utilisateur ou /root (identique à cd ~)
o cd - permet de revenir au répertoire précèdent
o cd .. permet de remonter au répertoire parent (ne pas oublier l'espace contrairement à
Windows)
o cd / permet de remonter à la racine de l'ensemble du système de fichiers
pwd
• Affiche le répertoire en cours
ls
• Permet de lister un répertoire
• Options les plus fréquentes :
o -l : Permet un affichage détaillé du répertoire (permissions d'accès, le nombre de liens physiques,
le nom du propriétaire et du groupe, la taille en octets, et l'horodatage)
o -h : Associé avec -l affiche la taille des fichiers avec un suffixe correspondant à l'unité (K, M, G)
o -a : Permet l'affichage des fichiers et répertoires cachés (ceux qui commencent par un . (point))
o -m :Sépare les fichiers par une virgule.
o -t :Tri par date.
o -F :Affiche les types de fichiers i.e. en rajoutant le symbole correspondant: / (répertoire), *
(exécutable), @ (lien).
o -S :Tri par ordre de taille décroissante.
o -X :Tri par type d'extension.
o -r :Tri inverse.
o -R : Affiche le contenu des arborescences dont on a donné les chemins.
o -lu :Tri par date de dernier accès et affiche cette date.
11
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
o -lct : Permet de trier les fichiers et répertoires par date de modification décroissante
• Exemples d'utilisation :
o ls –a affiche tous les fichiers et répertoires cachés du répertoire courant
o ls /etc/ affiche le contenu du répertoire /etc/
mv
• Permet de déplacer ou renommer des fichiers et des répertoires
• Options les plus fréquentes :
o -f : Ecrase les fichiers de destination sans confirmation
o -i : Demande confirmation avant d'écraser
o -u : N'écrase pas le fichier de destination si celui-ci est plus récent
o -v : affiche le nom des fichiers avant de les déplacer
• Exemples d'utilisation :
o mv monFichier unRep/ Déplace monFichier dans le répertoire unRep
o mv unRep/monFichier . Déplace le fichier monFichier du répertoire unRep là où on se
trouve(.)
o mv unRep monRep Renomme unRep en monRep
cp
• Équivalent MS-DOS/MS Windows : copy
• Signification : copy
• Permet de copier des fichiers ou des répertoires
• Options les plus fréquentes :
o -a : Archive. Copie en gardant les droits, dates, propriétaires, groupes, etc.
o -i : Demande une confirmation avant d'écraser
o -f : Si le fichier de destination existe et ne peut être ouvert alors le détruire et essayer à nouveau
o -R ou -r : Copie un répertoire et tout son contenu, y compris les éventuels sous-répertoires
o -u : Ne copie que les fichiers plus récents ou qui n'existent pas
o -v : permet de suivre les copies réalisées en temps réel
o -l : effecteur des liens matériels plutôt que des copies des fichiers.
o -s : effecteur des liens symboliques plutôt que des copies des fichiers.
o -p : conserver le propriétaire, le groupe, les permissions d’accès et les dates du fichier original.
• Exemples d'utilisation :
o cp monFichier sousrep/ Copie monFichier dans sousrep
o cp -r monRep/ ailleurs/ Copie le répertoire monRep (et ses éventuels sous-répertoires)
vers ailleurs en créant le répertoire ailleurs/monRep s'il n'existe pas.
rm
Attention cette commande est très dangereuse . Exécutez la uniquement si vous savez ce que vous faites !
• Équivalent MS-DOS/MS Windows : del ou erase
• Signification : remove
• Permet d'effacer des fichiers
• Options les plus fréquentes :
o -f : Ne demande pas de confirmation avant d'effacer
o -r ou -R: Efface récursivement les fichiers ainsi que les répertoires
o -i : Demande une confirmation avant d’effacer.
• Exemples d'utilisation :
o rm CeFichier Efface le fichier CeFichier
o rm -rf /tmp/LeRep Efface le répertoire /tmp/LeRep ainsi que tous ses fichiers sans demander de
confirmation
rmdir
• Équivalent MS-DOS/MS Windows : rmdir ou rd
• Signification : remove directory
• Supprime un répertoire (vide)
• Options les plus fréquentes :
o -p : Supprime les répertoires parents s'ils deviennent vides
• Exemples d'utilisation :
o rmdir LeRep Supprime le répertoire LeRep
touch
• Cette commande permet (entre autres) de créer un fichier vide.
cat
• une commande multi–usage qui permet d’afficher, de créer, de copier et de concaténer des fichiers.
• Exemples d'utilisation :
o cat f1 affiche le fichier sur la sortie standard ☺ l’écran.
12
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
o cat f1 >f2 copie du fichier f1 dans le fichier f2.
o cat f1 f2 f3 >f123 concaténation des fichiers f1, f2, f3 dans le fichier f123.
more
• permet d’afficher le contenu d’un fichier . On se déplace avec les flèches, "q" pour quitter, "h" pour l'aide
complète.
less
• est une amélioration de more. Permettent d’afficher page par page à l’écran le contenu d’un fichier texte.
La commande more est traditionnelle. Un utilisateur de Linux doit lui préférer la commande less,
équivalente mais plus élaborée.

TP ( 3 ) : Les liens logiques (symboliques) et physiques (matériels)

Un lien physique est simplement une manière de nommer un fichier, donc un fichier peut avoir plusieurs noms.
Un fichier n’est effacé réellement que lorsque son dernier nom est supprimé.
Un lien symbolique est un fichier spécial qui contient un chemin d’accès.
La commande ln permet de créer les liens entre les fichiers
o -s : créer des liens symboliques ; ln -s source destination
o Pour créer un lien physique : ln source destination
o -f : force l’écrasement du fichier de destination s’il existe
o -i : demander confirmation avant de supprimer les fichiers de destination

TP ( 4 ) : Recherche de fichiers dans une arborescence.


Il est utile de pouvoir retrouver certains fichiers dans l’arborescence du système et d’effecteur certains
traitements avec cette liste de fichiers. La commande utilisée est:
find chemin ... [ opérande ... ]
o -name fichier Vrai si le fichier a le nom indiqué.
o -perm droits Vrai si les droits correspondent.
o -type x Vrai si le type (b,c,d,f) correspond.
o -links n Vrai si le fichier a exactement n liens.
o -user nom Vrai si le nom de l’utilisateur correspond.
o -group nom Vrai si le nom du groupe correspond.
o -size n Vrai si le fichier a une taille de n blocs.
o -atime n Vrai si le dernier accès remonte à n jours.
o -mtime n Vrai si la dernière modification remonte à n jours.
o -ctime n Vrai si la date de création remonte à n jours.
o -nouser Vrai si le compte utilisateur du fichier n’existe pas.
o -nogroup Vrai si le groupe du fichier n’existe pas.
o -newer f Vrai si le fichier a été modifié plus récemment que le fichier f.
o -print Affiche le nom du fichier.
o -exec cmd {} \; Exécute la commande cmd.
o -ok cmd {} \; Exécute la commande cmd avec demande de confirmation.
La liaison qui existe par défaut entre les critères et un ET. Il existe des opérateurs logiques explicites pour
connecter les critères : opérateur logique Expression dans la commande find
ET -a
OU -o
NON !
locate / updatedb
Recherche de fichiers suivant leur nom ; cette commande est plus rapide que la commande find car elle
utilise une base de données des fichiers présents sur le système (voir la commande updatedb). Cependant,
si la base de données des fichiers n'est pas à jour, le résultat de la recherche n'affiche pas tous les fichiers
existants.

13
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA

TP ( 5 ) : L’éditeur vi

14
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA

TP ( 6 ) : Linux : Gestion des utilisateurs et des groupes.


- Création - Suppression des utilisateurs
adduser - passwd :
• Linux est un système multi-utilisateur. Il doit donc permettre l'administration des comptes.
• Commandes pour …
– Créer un utilisateur : adduser nom_user
– Affecter un mot de passe : passwd nom_user
• Cette seconde commande n'est pas obligatoire mais fortement conseillée.
• L'utilisateur peut évidemment modifier son mot de passe avec cette même commande.
• Résultats de la création d’un utilisateur :
– Ajout d'un compte pour l'utilisateur (uid) avec un mot de passe éventuellement
– Création d'un groupe dit primaire (gid) qui par défaut porte son nom
– Création d'un répertoire personnelle /home/nom_user Répertoire initialisé avec un contenu situé
dans /etc/skel
– Les 2 premiers points se traduisent concrètement par l'ajout d'une ligne dans les fichiers :
/etc/passwd /etc/group
– /etc/passwd et /etc/group sont deux fichiers texte que l'administrateur peut modifier avec un
éditeur de texte.
Le fichier : /etc/passwd
• Une ligne du fichier /etc/passwd se présente ainsi (séparateur de champs ":") :
mounir:*:300:400:Mounir OUHAMMOU:/home/mounir:/bin/bash
• Respectivement
• Nom de l'utilisateur (login)
• Mot de passe crypté (fichier /etc/shadow)
• Numéro de l'utilisateur (uid)
• Numéro de groupe (gid)
• Champ commentaire (nom par exemple)
• Le répertoire de démarrage
• Interpréteur de commande (shell)
• La commande adduser permet également de fixer toutes les valeurs qui sont, sinon, fixées par défaut :
adduser –u 250 –g 600 –G ista,users mounir
• Voir la liste des paramètres de la commande adduser.
Les paramètres de la commande useradd
useradd [-c comment] [-d homedir] [-g initial_group] [-G group2,group3,...] [-m] [-s shell]
[-u UID] [-e YYYY-MM-DD] [-f inactive_days]
-u uid Pour fixer le numéro de l'utilisateur
-g gid Pour fixer le numéro du groupe primaire. Le groupe doit exister dans /etc/group
-G liste Appartenance de l'utilisateur à une liste de groupes (séparateur "," – sans espace)
-s shell Attribution du shell par défaut /bin/bash
-c commentaire
-d répertoire personnel Par défaut le répertoire porte le nom de l'utilisateur et est placé dans /home
-m Pour créer le répertoire personnel
-e date Fixe une date d'expiration du compte (YYYY-MM-DD)
-k rep-skel Recopie le contenu de rep-skel dans le répertoire personnel, par défaut utilisation de /etc/skel.
-f inactive_days délai avant verrouillage si mot de passe non changé
-p password mot de passe déjà crypté avec crypt
• Importance du dernier paramètre, qui montre l'intérêt de /etc/skel. Ce Répertoire permet de configurer
les sessions des utilisateurs en modifiant les scripts contenu par ce répertoire.
useradd – adduser : Il existe également la commande useradd qui présente quelques différences avec adduser,
en particulier elle n'initialise pas le profil de l'utilisateur avec /etc/skel. Ce travail est laissé à la charge de
l'administrateur
Le fichier /etc/group
• Une ligne du fichier /etc/group se présente ainsi (séparateur de champs ":") :
ista:*:800:mounir,hamid,mihdi
mounir:*:400:
users :*:100: mounir,hamid,mihdi,ali
• Respectivement
• Nom du groupe
• Mot de passe du groupe
15
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
• Numéro du groupe (gid)
• Liste des utilisateurs appartenant au groupe séparés par des virgules
Les informations confidentielles des utilisateurs
• Traditionnellement, pour des raisons de sécurité les mots de passe cryptés ne figurent pas dans le fichier
/etc/passwd.
• Les utilisateurs ont accès à ce fichier lors de leur connexion, il est donc accessible en lecture.
• Les informations confidentielles sont stockés dans le fichier /etc/shadow.
Une ligne du fichier /etc/shadow se présente ainsi (séparateur de champs ":") :
nom_user:passwd:last_modif:may_modif:must_modif:avertir:expiration:desactiv:reserved
Par exemple - username:Npge08pfz4wuk:9479:0:10000::::
nom_user:passwd:last_modif:may_modif:must_modif:avertir:avant_expiration:date_expiration:réservé

nom_user Le Nom de l'Utilisateur


passwd Le mot de passe crypté.
last_modif Date de la dernière modification du mot de passe (en nombre de jours depuis le 1er janvier 1970).
may_modif Nombre de jours avant que le mot de passe puisse être modifié (un 0 indique qu'il peut être
changé à n'importe quel moment).
must_modif Nombre de jours avant que le mot de passe ne doive être modifié
avertir Nombre de jours durant lesquels l'utilisateur est informé de l'expiration de son mot de passe.
avant_expiration Nombre de jours entre l'expiration du mot de passe et la fermeture du compte.
date_expiration Date de la fermeture du compte (en nombre de jours depuis le 1er janvier 1970).
réservé Champ réservé à une utilisation future

• Pour supprimer un mot de passe, l'administrateur supprime simplement le contenu du champ "mot de
passe" avec un éditeur de texte.
La commande id :
• La commande id permet d'obtenir les informations concernant un utilisateur, par exemple avec :
id mounir
on obtiendra : uid=300 (mounir) gid=400 (mounir) groupes=400(mounir),100(users), 800(ista)
Changer le mot de passe d'un utilisateur
• La commande passwd permet de changer le mot de passe d'un utilisateur. L'administrateur peut changer
n'importe quel mot de passe. Un utilisateur normal ne peut changer que son propre mot de passe.
passwd [ options ] [ login ]
• Si l'argument login n'est pas spécifié, le changement de mot de passe s'applique sur l'utilisateur courant.
-k Indique que seul le mot de passe doit être mis à jour sans toucher aux propriétés d'expiration
Permet de verrouiller le compte spécifié en préfixant le mot de passe crypté par le caractère "!". Seul l'utilisateur
-l
root peut utiliser cette option
-u Déverrouille le mot de passe du compte. Seul l'utilisateur root peut utiliser cette option
Supprime le mot de passe d'un compte. Le champ réservé au mot de passe crypté sera supprimé dans le fichier de
-d
configuration. Seul l'utilisateur root peut utiliser cette option
Affiche des informations sur le statut du mot de passe pour un compte donné. Seul l'utilisateur root peut utiliser
-S
cette option
Usermod : Modification des informations sur un utilisateur :
usermod paramètres nom_user
Les paramètres sont identiques à ceux de la commande adduser, par exemple :
usermod –u 670 –c formateur mounir
Modification du numéro et du commentaire sur l'utilisateur mounir
userdel : Suppression d'un utilisateur :
userdel nom_user
Supprime la ligne de nom_user dans /etc/passwd
userdel –r nom_user
-r afin de supprimer également le répertoire

16
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
Groupe primaire - groupes secondaires
• Les groupes sont des ensembles d'utilisateurs qui partagent les mêmes fichiers et répertoires.
• Un utilisateur doit appartenir au moins à un groupe. Il est créé au moment de la création de l'utilisateur et
est dit groupe primaire.
• Un utilisateur peut faire partie d'autres groupes dits groupes secondaires.
groups-groupadd-groupmod-groupdel
Connaître les groupes d'un utilisateur :

groups nom_user
– Créer un groupe :
groupadd nom_groupe
– modifier les paramètres d'un groupe:
groupmod [-g gid] [-n group_name] group
– Supprimer un groupe :
groupdel nom_groupe
– Ajouter un utilisateur à un groupe :
• Par usermod : usermod –G grp1,grp2 nom_user
• Par l'édition du fichier /etc/group
Options de groupadd groupadd option groupe
-g Permet de choisir la valeur numérique du GID du nouveau groupe. Cet identifiant doit être unique
-r Cette option permet d'ajouter un groupe système (dont le GID est inférieur à 500)
-f Permet de stopper la commande lorsque le groupe ou le GID du nouveau groupe existe déjà
gpasswd
• On peut aussi ajouter et enlever des utilisateurs d'un groupe grâce à la commande gpasswd
-a : Ajout d'un utilisateur
-d : Suppression d'un utilisateur

TP ( 7 ) : Linux : Gestion de la Sécurité (Fichiers – Répertoire)


La Sécurité – Les Fichiers
• Un système multiutilisateur doit également permettre à chaque utilisateur de protéger et/ou partager ses
fichiers et répertoires.
• La notion de partage n'existe pas en tant que telle (comme dans Windows 200x Server). Un répertoire est
partagé si plusieurs utilisateurs ont des droits sur ce répertoire.
Avec la commande ls -l on obtient un ensemble de lignes comme :

• Les droits se décomposent en 4 zones :


.|...|...|... soit -|rw-|r--|r--
La première zone indique la nature du fichier :
- fichier ordinaire
d fichier répertoire
c fichier spécial : périphérique accédé en mode caractère
b fichier spécial : périphérique accédé en mode bloc
p tube nommé (named pipe)
l lien symbolique
s socket
• Les 3 dernières zones correspondent aux 3 catégories d’utilisateurs possibles du fichier.
... ... ...

u g O

• La section u (u=user) fixe les droits accordés au propriétaire du fichier.

17
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
La section g (g=group) fixe les droits accordés aux utilisateurs faisant partie du groupe auquel

appartient le fichier.
• La section o (o=other) fixe les droits des autres utilisateurs.
• Chaque zone propose à la catégorie correspondante 3 droits. Dans l'ordre rwx
• "r" droit de lecture autorisé ; "-" si non permise
• "w" droit d'écriture autorisé ; "-" si non permise
• "x" droit d'exécution autorisé ; "-" non permise
Les droits sur les Fichiers : Signification de ces droits sur les fichiers :
• "r" : Droit de lire le contenu du fichier
• "w" : Droit d'écrire dans le fichier
• "x" : Droit d'exécuter si le fichier est un script ou un fichier binaire
Les droits sur les répertoires : Signification des droits sur les répertoires :
• "r" : Droit de lire le contenu du répertoire, afficher son contenu (commande ls)
• "w" : Droit de modifier le contenu, créer, supprimer des fichiers et des répertoires (commandes cp, mv, rm)
• "x" : Droit d'accéder aux fichiers du répertoire et de s'y déplacer (commande cd)
• Le créateur d'un fichier en devient le propriétaire.
• Le groupe primaire auquel appartient le créateur au moment de la création devient le groupe du fichier.
• Le propriétaire à le droit de modifier tous les droits sur les fichiers et les répertoires dont il est
propriétaire, y compris de transmettre son droit de propriété.
Changer les droits: notation symbolique
chmod nouveau_droits fichier(s)
On utilise généralement les notations :
• [u, g, o, a] pour désigner le bénéficiaire (a=all)
• [r, w, x] pour désigner le droit
• [+, -, =] pour désigner l'opération (ajouter, retirer ou affecter)
– Fixer de nouveaux droits (remplacement)
chmod u=rwx,g=rw,o=r liste.txt pour obtenir : -rwxrw-r--
chmod g=rwx document les autres restent inchangés
chmod u=rw,g=r,o= liste2.doc pour obtenir : -rw-r-----
– Modifier les droits
chmod g+rw liste.txt avant : -rwx--xr-- résultat : -rwxrwxr--
chmod go-rx document avant : -rwxrwxrw- résultat : -rwx-w--w-
chmod a-x liste2.doc avant : -rwxrwxr-x résultat : -rw-rw-r--
– Modifier les droits, récursité
chmod –R nouveau_droits répertoire
Exemple :
chmod –R go-rwx /home/mounir
Cette commande supprime tous les droits sauf au propriétaire sur tous les fichiers,
répertoires et sous-répertoires à partir de /home/mounir.
Changer les droits d'accès : notation octale
En binaire les droits affectés aux différents groupes vont de 000 (pour "---") à 111 (pour "rwx") en passant par
101 (pour "r-x").
En octal ces valeurs vont de 0 à 7.
chmod 764 lettre.txt
chmod u=rwx g=rw o=r lettre.txt
Ces deux commandes sont équivalentes.
Changer les droits d'accès : umask
Quels sont les droits affectés à la création d'un fichier ou d'un répertoire ?

La commande umask :

umask (pour afficher le masque)
umask –S (pour afficher le masque sous forme symbolique)
umask valeur_masque (pour modifier le masque)
Le masque donné à la commande umask précise les droits qui seront supprimés à la création du fichier. Par
exemple avec : umask 021 (en binaire 000 010 001), un fichier créé avec ce masque obtiendra les droits suivants
: 111 101 110 soit u=rwx g=rx o=rw
Pratiquement les droits effectifs sont obtenus de la façon suivante :
Octal Binaire
777 111 111 111 Permissions maximum
XOR (ou -) 021 000 010 001 Masque (umask)
= 756 111 101 110 Permissions appliquées

18
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
Les commandes chown - chgrp
• pour…
– Changer le propriétaire
chown [-R] new_proprio fichier
– Changer le groupe propriétaire
chgrp [-R] new_groupe fichier
(avec -R : l'option de récursivité)
– Seul le propriétaire (ou root) peut exécuter ces commandes
D’autres commandes utiles :
– pwck : vérification de la cohérence de /etc/passwd
– grpck : vérification de la cohérence de /etc/group
– finger : informations sur un utilisateur
– su : se connecter à un compte
– id : connaître son identité
– chsh (Linux) : changer de shell

TP ( 8 ) : Redirection des flots et fichiers


Le principe de redirection :
On appelle processus, ou tâche, l’exécution d’un
programme exécutable. Au lancement de chaque
processus, l’interpréteur de commandes ouvre
d’office une entrée standard (par défaut le clavier),
une sortie standard (par défaut l’écran) et la sortie
d’erreur standard (par défaut l’écran).

Ces entrées-sorties standard peuvent être redirigées vers


un fichier, un tube, un périphérique. La redirection de la
sortie standard consiste à renvoyer le texte qui apparaît à
l’écran vers un fichier. Aucune information n’apparaîtra à
l’écran, hormis celles qui transitent par la sortie d’erreur
standard.

Il est naturellement possible de rediriger toutes les


entrées-sorties standard d’un processus. Par
conséquent, le processus recherchera les
informations dont il a besoin dans un fichier et non
plus au clavier. Il écrira dans des fichiers ce qui
devait apparaître à l’écran.

Le caractère < suivi du nom d’un fichier indique la redirection de l’entrée standard à partir de ce fichier :
Le caractère > suivi du nom d’un fichier indique la redirection de la sortie standard vers ce fichier :
Si on double le caractère > (c.-à-d. >>), suivi du nom du fichier indique que l’information ou la redirection sera
ajoutée au fichier
Les caractères 2> suivis du nom d’un fichier indiquent la redirection de la sortie d’erreur standard vers ce
fichier.
Les caractères 2>> suivis du nom d’un fichier indiquent que la redirection de la sortie d’erreur standard sera
ajoutée au fichier.
Les caractères &> suivis du nom d’un fichier indiquent la redirection de la sortie standard et de la sortie
d’erreur standard vers ce fichier.

TP ( 9 ) : LES TUBES DE COMMUNICATION (PIPE) ET LES FILTRES


Les tubes
Un tube (pipe en anglais) est un flot de données qui permet de relier la sortie standard d’une commande à l’entrée
standard d’une autre commande sans passer par un fichier temporaire.
19
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA

Dans une ligne de commandes, le tube est formalisé par la barre verticale |, que l’on place entre deux commandes :
P1 | P2 | P3
Les filtres
les filtres. Un filtre est une commande qui lit les données sur l’entrée standard, les traite et les écrit sur la sortie
standard.
Le concept de tube, avec sa simplicité, devient un outil très puissant dans Linux qui propose un choix très vaste de
filtres. Les filtres les plus utilisés sont les suivants :
grep recherche les occurrences d’une chaîne de caractères.
o –i : ne pas tenir compte de la casse (majuscules / minuscules).
o –n : connaître les numéros des lignes.
o –v : inverser la recherche : ignorer un mot( toutes les lignes qui ne contiennent pas un mot donné).
o –r : rechercher dans tous les fichiers et sous-dossiers (grep -r est équivalente à écrire rgrep).
o –c : qui affiche seulement le nombre de lignes contenant la chaîne.
egrep équivalente grep -E une extension de grep. On doit utiliser l'option -E pour faire comprendre à grep que
l'on utilise une expression régulière (voir le tableau des caractères spéciaux). Exemples :
• grep -E ^alias début de la ligne
• grep -E [Aa]lias renvoie toutes les lignes qui contiennent "alias" ou "Alias".
• grep -E [0-4] renvoie toutes les lignes qui contiennent un nombre compris entre 0 et 4.
• grep -E [a-zA-Z] renvoie toutes les lignes qui contiennent un caractère alphabétique compris entre
a et z ou entre A et Z.
• egrep −w '(th | sh).*rt'
wc compte le nombre de caractères (ou octets), mots et lignes.
o –l : pour afficher seulement le nombre de lignes,
o –w : pour afficher seulement le nombre de mots,
o –c : pour afficher seulement le nombre de caractères.
o –m : compter le nombre de caractères
uniq supprimer les doublons
• uniq doublons.txt
• uniq doublons.txt sans_doublons.txt
o –c : compter le nombre d'occurrences
o –d : afficher uniquement les lignes présentes en double
cut conserver uniquement une partie de chaque ligne fichier
• Pour conserver uniquement les caractères 2 à 5 de chaque ligne du fichier, vous taperez : cut -c 2-5 noms.txt
• Pour conserver du 1er au 3ème caractère : cut -c -3 noms.txt
• De même, pour conserver du 3ème au dernier caractère : cut -c 3- noms.txt
• cut -d , -f 1 notes.csv
• cut -d , -f 1,3 notes.csv
• cut -d , -f 2-4 notes.csv
• cut -d , -f 3- notes.csv
• cut -d , -f 1,4 notes.csv
head • Afficher les 15 premières lignes de /etc/hosts : head -15 /etc/hosts
& • Afficher les 15 dernières lignes de /etc/hosts : tail -15 /etc/hosts
tail • Afficher toutes les lignes à partir de la quinzième : tail +15 /etc/hosts
• Affichez les lignes 15 à 20 : head -20 /etc/hosts | tail -6
sort trie les lignes des fichiers, la sortie se faisant sur la sortie standard. Le tri s’effectue sur une ou plusieurs
clés extraites de chaque ligne. Voici les principales options qui vont permettre de réaliser ce tri:
o +pos1 -pos2: permet d’indiquer le début et la fin d’un clé de tri; celle-ci peut être composée de
plusieurs zones de tri concaténées. Le tri commence au champ pos1+1 et se termine au champ
pos2+1. S’il n’y a pas de pos2, la zone de tri va jusqu’à la fin de la ligne,
o –t séparateur: indique le caractère qui sépare les différents champs. Si un séparateur n’est pas
défini, les champs sont séparés par toute suite d’espace ou de tabulations contigus,
o –b : ignore les espaces et les tabulations de tête dans chaque champ,
o –n : effectue un tri numérique sur les champs,
o –f : ignore la différence entre majuscules et minuscules,

20
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
o –c : affiche un message si les lignes ne sont pas dans le bon ordre,
o –o fichier : sort le résultat du tri dans fichier (attention sort fich > fich détruit fich avant de le trier,
préférer cette option à toute redirection!),
o –r : inverse l’ordre de tri,
o –u : ne garde qu’une ligne par clé...
Exemples :
• sort -t: +2 -3 /etc/passwd tri le fichier /etc/passwd par numéro d’utilisateur
• ls -l / | sort -b +2 -3 +7 tri de la liste des fichiers sous la racine par propriétaire (+2 -3) et par nom de fichier

Caractère spécial Signification


. Caractère quelconque
^ le mot doit être placé au début de la ligne
$ Fin de ligne
[] Un des caractères entre les crochets
L'élément précédent est optionnel (peut être présent 0 ou 1
?
fois)
* L'élément précédent peut être présent 0 ou plusieurs fois
+ L'élément précédent doit être présent 1 ou plusieurs fois
| Ou
() Groupement d'expressions
La commande xargs
Le mécanisme de tube est très pratique pour assembler entre elles des commandes Linux. Cependant, beaucoup
de commandes ne lisent pas dans leur entrée standard : ls, rm, cp, ln, mv et bien d’autres ne sont pas des filtres,
mais traitent leurs arguments :
rm alpha beta gamma est une commande correcte, alors que ls | rm n’a AUCUN sens.
Ces commandes ne peuvent donc pas apparaître dans un tube, sauf au début. La commande xargs permet de lever
cette restriction en construisant une liste de paramètres à partir de l’entrée standard :
cmd1 | xargs cmd2 signifie : lancer cmd2 en lui passant en paramètres ce qui arrive dans l’entrée standard de
xargs, donc la sortie standard de cmd1.

TP ( 10 ) : Le groupement de commandes
Il existe plusieurs méthodes pour enchaîner des commandes sur une même ligne :
Exécution séquentielle : cmd1; cmd2;...; cmdN
Exécution sous condition d'erreur : cmd1 || cmd2 || ... || cmdN
si cmd1 ne se termine pas correctement, alors cmd2 est exécuté, et ainsi de suite.
Exécution sous conditions de réussite : cmd1 && cmd2 && ... && cmdN
si cmd1 s'est bien déroulée, alors cmd2 sera exécutée; et ainsi de suite
Les groupes de commandes peuvent remplacer les commandes simples dans les pipes; mais dans ce cas, il
faudra entourer le groupe de commande avec des accolades {}; cela permet les combinaisons les plus
variées; par exemple :
{ cmd1 && cmd2; cmd3 || cmd4 } | cmd5
ATTENTION: l'espace après { et le ; et avant } sont indispensables.
L'utilisation des parenthèses () est possible et a le même effet à la différence qu'elles invoquent un nouveau
shell qui sera chargé de l'exécution des commandes.

21
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA

TP ( 11 ) : EXÉCUTER UN PROGRAMME À UNE HEURE DIFFÉRÉE


Nous savons lancer une commande pour qu'elle s'exécute tout de suite. Il est cependant aussi possible de
« retarder » son lancement.
Linux vous propose toute une série d'outils qui vous permettent de programmer à l'avance l'exécution d'une
tâche, comme par exemple la commande crontab que nous allons étudier.
Tous les outils que nous allons découvrir dans ce chapitre feront en outre appel à la notion de date. Nous allons
donc dans un premier temps nous intéresser au formatage de la date.
date : régler l'heure
Personnaliser l'affichage de la date
Si vous regardez le manuel (man date), vous verrez qu'il est possible de personnaliser l'affichage de la date :
vous pouvez choisir quelles informations vous voulez afficher et dans quel ordre (vous pouvez par exemple
ajouter les nanosecondes ou encore le numéro du siècle actuel).
Pour spécifier un affichage personnalisé, vous devez utiliser un symbole + suivi d'une série de symboles qui
indiquent l'information que vous désirez. Je vous recommande de mettre le tout entre guillemets.
Prenons quelques exemples pour bien comprendre :
• $date "+%H"
• 12
Le +%H est le format de date. %H signifie « le numéro de l'heure actuelle ».
Essayons autre chose d'un peu plus compliqué :
• $date "+%H:%M:%S"
• 12:36:15
Ici, j'ai rajouté les minutes (%M) et les secondes (%S).
J'ai séparé les nombres par des deux-points, mais j'aurais très bien pu mettre autre chose à la place :
• $date "+%Hh%Mm%Ss"
• 12h41m01s
Modifier la date
La commande date permet aussi de changer la date.
Attention, il faudra être root pour faire cela (vous devrez placer un sudo devant par exemple).
Il faut préciser les informations sous la forme suivante : MMDDhhmmYYYY. Les lettres signifient :
– MM : mois ;
– DD : jour ;
– hh : heure ;
– mm : minutes ;
– YYYY : année.
Notez qu'il n'est pas obligatoire de préciser l'année. On peut donc écrire :
• $sudo date 11101250
• mercredi 10 novembre 2010, 12:50:00 (UTC+0100)
La nouvelle date s'affiche automatiquement et elle est mise à jour sur le système.
Attention à bien respecter l'ordre des nombres : Mois - Jour - Heure - Minutes.
at : exécuter une commande plus tard
Vous souhaitez qu'une commande soit exécutée plus tard ? Pas de problème ! Il est possible de programmer
l'exécution d'une commande avec at.
Avec at, le programme ne sera exécuté qu'une seule fois. Si vous voulez que l'exécution soit répétée
régulièrement, il faudra utiliser la crontab que nous verrons plus loin.
Exécuter une commande à une heure précise
La commande s'utilise en deux temps.
1. Vous indiquez à quel moment (quelle heure, quel jour) vous désirez que la commande soit exécutée.
2. Vous tapez ensuite la commande que vous voulez voir exécutée à l'heure que vous venez d'indiquer.
Il faut donc d'abord indiquer à quelle heure vous voulez exécuter votre commande, sous la formeHH:MM :
• $ at 14:17
L'exécution des commandes est demandée à 14 h 17 aujourd'hui. Si vous tapez cela dans votre console, vous
devriez voir ceci s'afficher :
• $ at 14:17
• warning: commands will be executed using /bin/sh
• at>

22
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
at comprend que vous voulez exécuter des commandes à 14 h 17 et vous demande lesquelles. C'est pour cela
qu'un prompt est affiché : on vous demande de taper les commandes que vous voulez exécuter à cette heure-là.
Pour cet exemple, nous allons demander de créer un fichier à 14 h 17 :
• $ at 14:17
• warning: commands will be executed using /bin/sh
• at> touch fichier.txt
• at> <EOT>
• job 5 at Mon Nov 10 14:17:00 2010
Après avoir écrit la commande touch, at affiche à nouveau un prompt et vous demande une autre commande.
Vous pouvez indiquer une autre commande à exécuter à la même heure… ou bien arrêter là. Dans ce cas, tapez
Ctrl + D (comme si vous cherchiez à sortir d'un terminal). Le symbole <EOT> devrait alors s'afficher,
et at s'arrêtera.
at affiche ensuite le numéro associé à cette tâche (à ce « job », comme il dit) et l'heure à laquelle il sera exécuté.
Attendez 14 h 17, et vous verrez que le fichier sera créé. ☺
Et si je veux exécuter la commande demain à 14 h 17 et non pas aujourd'hui ?
• $ at 14:17 tomorrow
tomorrow signifie « demain ».
Et si je veux exécuter la commande le 15 novembre à 14 h 17 ?
• $ at 14:17 11/15/16
La date est au format américain, les numéros du jour et du mois sont donc inversés : 11/15/10. 11 correspond
au mois (novembre) et 15 au numéro du jour !
Exécuter une commande après un certain délai
Il est possible d'exécuter une commande dans 5 minutes, 2 heures ou 3 jours sans avoir à écrire la date.
Par exemple, pour exécuter la commande dans 5 minutes :
• $ at now +5 minutes
… ce qui signifie « Dans maintenant (now) + 5 minutes ». Les mots-clés utilisables sont les suivants :
– minutes ;
– hours (heures) ;
– days (jours) ;
– weeks (semaines) ;
– months (mois) ;
– years (années).
Un autre exemple : $ at now +2 weeks … exécutera les commandes dans deux semaines.
atq et atrm : lister et supprimer les jobs en attente
Chaque fois qu'une commande est « enregistrée », at nous indique un numéro de job ainsi que l'heure à laquelle
il sera exécuté.
Il est possible d'avoir la liste des jobs en attente avec la commande atq :
• $ atq
• 13 Mon Nov 10 14:44:00 2010 a saad
• 12 Mon Nov 10 14:42:00 2010 a saad
Si vous souhaitez supprimer le job n° 13 (je ne sais pas, parce que ça porte malheur par exemple), utilisez atrm :
• $ atrm 13
La commande batch
La commande batch fonctionne comme at mais on ne précise pas d'heure ni de date. La travail est placé dans un
file d'attente (FIFO) et est exécutée quand c'est son tour.
• batch < fic_commandes
sleep : faire une pause
Vous pouvez enchaîner plusieurs commandes à la suite en les séparant par des points-virgules comme ceci :
• $ touch fichier.txt; rm fichier.txt
touch est d'abord exécuté, puis une fois qu'il a fini ce sera le tour de rm (qui supprimera le fichier que nous
venons de créer).
Parfois, enchaîner les commandes comme ceci est bien pratique… mais on a besoin de faire une pause entre les
deux.
C'est là qu'intervient sleep : cette commande permet de faire une pause.
• $ touch fichier.txt; sleep 10; rm fichier.txt
Cette fois, il va se passer les choses suivantes :
– fichier.txt est créé ;
– sleep fait une pause de 10 secondes ;
23
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
– rm supprime ensuite le fichier.
Par défaut, la pause est exprimée en secondes. Il est aussi possible d'utiliser d'autres symboles pour changer
l'unité :
– m : minutes ;
– h : heures ;
– d : jours.
Pour faire une pause d'une minute :
• $ touch fichier.txt; sleep 1m; rm fichier.txt
Vous pouvez aussi remplacer les points-virgules par des &&, comme ceci :
• touch fichier.txt && sleep 10 && rm fichier.txt
Dans ce cas, les instructions ne s'enchaîneront que si elles se sont correctement exécutées. Par exemple,
si touch renvoie une erreur pour une raison ou une autre, alors les commandes qui suivent (sleep, rm) ne seront
pas exécutées.
crontab : exécuter une commande régulièrement
Contrairement à at qui n'exécutera le programme qu'une seule fois, crontab permet de faire en sorte que
l'exécution soit répétée : toutes les heures, toutes les minutes, tous les jours, tous les trois jours, etc.
La « crontab », qu'est-ce que c'est ?
crontab est en fait une commande qui permet de lire et de modifier un fichier appelé la « crontab ».
Ce fichier contient la liste des programmes que vous souhaitez exécuter régulièrement, et à quelle heure vous
souhaitez qu'ils soient exécutés.
crontab permet donc de changer la liste des programmes régulièrement exécutés. C'est toutefois le
programme cron qui se charge d'exécuter ces programmes aux heures demandées.
Ne confondez donc pas crontab et cron : le premier permet de modifier la liste des programmes à exécuter, le
second les exécute.
Comment utilise-t-on crontab ?
Il y a trois paramètres différents à connaître, pas plus :
• -e : modifier la crontab ;
• -l : afficher la crontab actuelle ;
• -r : supprimer votre crontab. Attention, la suppression est immédiate et sans confirmation !
Commençons par afficher la crontab actuelle :
• $ crontab -l
• no crontab for saad
Normalement, vous n'avez pas encore créé de crontab. Vous noterez qu'il y a une crontab par utilisateur. Là
j'édite la crontab de saad car je suis loggé avec l'utilisateur saad, mais root a aussi sa propre crontab. La preuve :
• $ sudo crontab -l
• no crontab for root
Bien, intéressons-nous à la modification de la crontab. Tapez :
• $ crontab -e
Si vous avez bien configuré votre .bashrc tout à l'heure (et que vous avez relancé votre console), cela devrait
ouvrir le programme Nano que vous connaissez.
Si par hasard vous n'avez pas fait quelque chose correctement, c'est le programme « vi » qui se lancera. Comme
vous ne le connaissez pas encore, tapez :q puis Entrée pour sortir. Vérifiez à nouveau votre configuration
du .bashrc et n'oubliez pas de fermer puis de rouvrir votre console.
Modifier la crontab
Les champs
Le fichier ne contient qu'une seule ligne :
# m h dom mon dow command
Comme cette ligne est précédée d'un #, il s'agit d'un commentaire (qui sera donc ignoré).
Cette ligne vous donne quelques indications sur la syntaxe du
fichier :
• m : minutes (0 - 59) ;
• h : heures (0 - 23) ;
• dom (day of month) : jour du mois (1 - 31) ;
• mon (month) : mois (1 - 12) ;
• dow (day of week) : jour de la semaine (0-6,0 étant le dimanche) ;
• command : c'est la commande à exécuter.
En clair, vous devez d'abord indiquer à quel moment vous voulez que la commande soit exécutée, puis ensuite
écrire à la fin la commande à exécuter.
C'est un peu comme un tableau. Chaque champ est séparé par un espace.
24
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
Chaque « X » sur le schéma peut être remplacé soit par un nombre, soit par une étoile qui signifie « tous les
nombres sont valables ».
Imaginons que je veuille exécuter une commande tous les jours à 15 h 47. Je vais écrire ceci :
47 15 * * * touch /home/saad/fichier.txt
Seules les deux premières valeurs sont précisées : les minutes et les heures. Chaque fois qu'il est 15 h 47, la
commande indiquée à la fin sera exécutée.
J'ai écrit le chemin du fichier en entier, car vous ne pouvez pas être sûrs que le crons'exécutera dans le
répertoire que vous voulez. Il est donc toujours préférable d'écrire le chemin du fichier en absolu comme je l'ai
fait ici : /home/saad/fichier.txt.
Au fait, pourquoi passer par la commande crontab -e pour modifier un fichier ? Il ne serait pas plus
simple d'ouvrir le fichier directement avec nano .crontab, par exemple ?
Oui, mais ce n'est pas comme cela que ça fonctionne. La crontab exige de passer par une commande, c'est
comme. ça. Il y a quelques avantages à cela, puisque cela permet au programme de vérifier si votre fichier
est correctement écrit avant de mettre à jour la crontab. S'il y a une erreur de syntaxe, on vous le dira et
aucun changement ne sera apporté.
Essayez d'enregistrer et de quitter vi. Vous verrez que la crontab vous dit qu'elle « installe » les changements
(elle les prend en compte, en quelque sorte) :
• crontab: installing new crontab
• saad@saad-desktop:~$
Désormais, fichier.txt sera créé dans mon répertoire personnel tous les jours à 15 h 47 (s'il n'existe pas déjà).
Revenez dans la crontab, nous allons voir d'autres exemples (tableau suivante).
Crontab Signification
47 * * * * commande Toutes les heures à 47 minutes exactement.> & Donc à 00 h 47, 01 h 47, 02 h 47, etc.
0 0 * * 1 commande Tous les lundis à minuit (dans la nuit de dimanche à lundi).
0 4 1 * * commande Tous les premiers du mois à 4 h du matin.
0 4 * 12 * commande Tous les jours du mois de décembre à 4 h du matin.
0 * 4 12 * commande Toutes les heures les 4 décembre.
* * * * * commande Toutes les minutes !
Est-il possible d'exécuter une commande plus fréquemment que toutes les minutes ?
Non, c'est impossible avec cron. La fréquence minimale, c'est toutes les minutes.
Les différentes notations possibles
Pour chaque champ, on a le droit à différentes notations :
• 5 (un nombre) : exécuté lorsque le champ prend la valeur 5 ;
• * : exécuté tout le temps (toutes les valeurs sont bonnes) ;
• 3,5,10 : exécuté lorsque le champ prend la valeur 3, 5 ou 10. Ne pas mettre d'espace après la virgule ;
• 3-7 : exécuté pour les valeurs 3 à 7 ;
• */3 : exécuté tous les multiples de 3 (par exemple à 0 h, 3 h, 6 h, 9 h…).
Vous connaissiez déjà les deux premières notations. Celles que nous venons de découvrir nous permettent de
démultiplier les possibilités offertes par la crontab.
Voici, sur le tableau suivante, quelques exemples d'utilisation.
Crontab Signification
30 5 1-15 * * commande À 5 h 30 du matin du 1er au 15 de chaque mois.
0 0 * * 1,3,4 commande À minuit le lundi, le mercredi et le jeudi.
0 */2 * * * commande Toutes les 2 heures (00 h 00, 02 h 00, 04 h 00…)
*/10 * * * 1-5 commande Toutes les 10 minutes du lundi au vendredi.
Rediriger la sortie
Pour le moment, nous avons exécuté notre commande très simplement dans la crontab :
47 15 * * * touch /home/saad/fichier.txt
Toutefois, il faut savoir que si la commande renvoie une information ou une erreur, vous ne la verrez pas
apparaître dans la console. Normal : ce n'est pas vous qui exécutez la commande, mais le programme cron.
Que se passe-t-il alors si la commande renvoie un message ? En fait, le résultat de la commande vous est envoyé par e-mail. Chaque utilisateur possède sa propre boîte e-mail sur les machines de type Unix.
rediriger une sortie, vous savez faire ça, non ?
47 15 * * * touch /home/saad/fichier.txt >> /home/saad/cron.log
Pour rediriger aussi les erreurs !
47 15 * * * touch /home/saad/fichier.txt >> /home/saad/cron.log 2>&1
Et si je ne veux pas du tout récupérer ce qui est affiché ?
Nous avons déjà appris à le faire ! Il suffit de rediriger dans /dev/null (le fameux « trou noir » du système).
Tout ce qui est envoyé là-dedans est immédiatement supprimé.
47 15 * * * touch /home/saad/fichier.txt > /dev/null 2>&1

25
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA

TP ( 12 ) : l'espace sur disque


Taille des partitions
La commande : df (disk free)

• Filesystem ou système de fichier :


le nom du fichier correspondant à la partition (la plupart commence par : /dev/hda ou /dev/sda...).
• 1K-blocks ou taille en Ko : c'est facile : la taille totale de votre partition (ici en Ko).
• Used ou occupée : l'espace occupé par les fichiers de votre partition.
• Available ou disponible : l'espace disponible de votre partition.
• Use% ou %Occupé : Le pourcentage occupé (ou non libre) par les fichiers.
• Mounted on ou monté sur : grâce à cela, on peut savoir où se trouvent les différentes partitions dans
l'arborescence.
df -h : L'option h permet d'ajuster de façon plus humaine les valeurs en octets ; exemple : 1100 Ko sera
écrit en Mo.
Taille des fichiers
On sait déjà comment observer l'espace qu'occupe un fichier seul: ls -l "fichier seul "
l'espace qu'occupent plusieurs fichiers : ls -l fichier1 fichier2 fichier3
• l'option h : ls -lh fichier1 fichier2 fichier3
Donc, pour connaître la taille d'un répertoire, on fait : ls -lhd « nom du répertoire »
• Non... Si vous faites ça, cela va toujours vous répondre : 4,0 Ko, c'est ce qu'occupe un répertoire vide
!
Taille des répertoires
on utilise la fonction du (disk usage)
– du, sans option, permet de connaitre la taille en octets qu'occupent le répertoire, ses sous-
répertoires, ses sous-sous-répertoires, etc.
– on peut aussi utiliser l'option h.
Un répertoire seulement : du -s
du -sh *
Pour connaître l'espace occupé par tous les fichiers (vous aurez les répertoires, ses fichiers, les sous-
répertoires, ses fichiers, etc.) : du -a

TP ( 13 ) : La compression gzip - bzip2


gzip
• Elle est utilisée pour compresser un fichier quelconque, et en particulier une archive tar.
• L'extraction se fait par la commande gunzip, ou de manière équivalente par gzip -d
gzip [options] [fichiers]
• Elle peut décompresser les fichiers .gz, mais aussi les fichiers .z , .Z
options :
-1 à -9 : Fixe le niveau de compression -1 etant le plus faible
-d : Décompresse l'archive passée en argument
-c : Ecrit sur la sortie standard au lieu de remplacer le fichier d’origine
-l : Affiche des infos sur les fichiers de l'archive (taux de compression...)
-r : gzip parcoure tous les répertoires de manière récursive lors de la dé/compression
Exemples :
• 2 - Compresse au maximum chaque fichier .txt séparément, et les renomme en ajoutant le
suffixe .gz : gzip -9 *.txt
bzip2 : admet la même syntaxe que gzip, mais effectue une compression plus efficace au détriment d'un besoin
accru de mémoire et cpu.

TP ( 14 ) : Sauvegarde & restauration


SAUVEGARDE PAR tar
La commande tar permet de sauvegarder toute une arborescence de fichiers dans une archive : cette archive
contient tous les fichiers et répertoires, mais aussi les uid, gid, permissions et dates de chaque fichier et répertoire
archivé. Ceci permettra de restaurer tout ou partie de cette archive en cas de besoin, avec les propriétés et
permissions correctes.
Pour une sauvegarde : tar cvf nom_archive Fichier(s)
26
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
tar cvf archive1.tar /home/*
• c: création d'archive
• v : mode bavard 'verbose' : dit ce qui se fait
• f : le paramètre suivant est le nom de l'archive
Pour lister le contenu de l'archive : tar tvf nom_archive
tar tvf archive1.tar
• t : liste le contenu de l'archive
Pour une restauration : tar xvf nom_archive fichiers
tar xvf archive1.tar
• x : extraction de l'ensemble des fichiers de l'archive, ou du ou des fichiers spécifiés.
Autres clés et paramètres :
• r : les fichiers sont ajoutés à la fin de l'archive.
• k : spécifie la taille en ko du support d'archivage,
pour faire du multi-volumes
• l : on sauvegarde les fichiers et pas les liens
symboliques (le fichier pointé est sauvé)
• z : l'archive est compressée au format gzip.
• Z : l'archive est compressée au format compress.
• j : l'archive est compressée au format bzip2.
• p : Préserver les permissions des fichiers ,
SAUVEGARDE PAR cpio
La commande cpio sauvegarde sur la sortie standard les
fichiers dont on saisit les noms sur l'entrée standard, par
défaut le clavier et l'écran. On utilisera donc les redirections.
Voici les options :
• -v : mode bavard « verbose », informations détaillées
• -c : sauvegarde des attributs des fichiers sous forme
ASCII (pour l'échange entre divers OS)
• -B : augmente la vitesse d'exécution en utilisant une
mémoire tampon (5120 octets soit 10 blocs)
Pour une sauvegarde : cpio -oL
• o : output, creation de la sauvegarde en sortie
• L : sauve les fichiers liés et pas les liens symboliques
Pour lister le contenu de l'archive : cpio -it
• i : lecture de l'archive en entrée
• t : comme pour tar, liste le contenu de l'archive
Pour une restauration : cpio -i[umd]
• u : restauration inconditionnelle, avec écrasement des fichiers qui existent déjà. Par défaut les fichiers ne
sont pas restaurés si ceux présents sur le disque sont plus récents ou du même âge.
• m : les fichiers restaurés conservent leur dernière date de modification
• d : cpio reconstruit l'arborescence des répertoires et sous-répertoires manquants.
Exemples :
• Sauvegarde de l'arborescence courante sur une disquette avec compression :
find . print | cpio -ocvB | compress >/dev/fd0
• Restauration : cat /dev/fd0 | uncompress | cpio -iuvBd
SAUVEGARDE PAR dd
La commande « dd » (device to device) est destinée à la copie
physique, bloc à bloc, d'un fichier périphérique vers un
fichier périphérique. A l'origine on l'utilisait pour la lecture et
l'écriture sur bande magnétique, mais elle peut être
employée avec n'importe quel fichier. La commande dd
permet de réaliser des copies physiques de disques et de systèmes de fichiers.
Argument utilisation
if=fichier « fichier » désigne le ficher à copier, à défaut l'entrée standard.
of=fichier « fichier » désigne le résultat de la copie, à défaut la sortie standard.
bs=valeur « valeur » désigne la taille commune du bloc pour les fichiers d'entrée et de sortie, par défaut à 512 octets.
skip=n nombre de blocs qu'il faut sauter au début du fichier d'entrée.
seek=n nombre de blocs à sauter au début du fichier de sortie
count=n nombre de blocs à copier
conv=... Conversion lors de la copie (lcase : minuscule, ucase : majuscule, ascii, abcdic, swab : permutation des octets)

27
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
Exemple :
Ici on va placer le secteur de boot de la partition (ou est installé lilo ou grub) dans un fichier.
dd if=/dev/hda5 of=boot.lnx bs=512 count=1

TP ( 15 ) : Les droits d’accès spéciaux


Il existe trois droits spéciaux : suid, sgid et sticky bit. Ils sont ajoutés grâce à la commande chmod.
Droit lettre chiffre
suid s 4
sgid s 2
sticky t 1
• SUID :Lorsque vous exécutez une commande, celle-ci se lance avec votre uid. Cette commande aura donc
accès seulement aux fichiers où vous possédez des droits. Si le suid est placé sur un exécutable, ce dernier
se lancera avec l'uid de son propriétaire.
• SGID :Le droit sgid fonctionne de la même façon que le suid en ce qui concerne les exécutables. Mais le sgid
peut aussi être attribué à un dossier. Tout fichier créé dans un dossier portant le sgid aura comme groupe
propriétaire le groupe du dossier.
• Sticky :Si vous possédez le droit d'écriture sur un dossier, vous pouvez renommer ou supprimer tous les
fichiers qu'il contient. Ce fonctionnement n'est pas adéquat pour un dossier public, où tout le monde à
accès en écriture comme "/tmp". Si le sticky bit est placé sur un dossier, seul le possesseur d'un fichier
pourra le renommer ou le supprimer.

TP ( 16 ) : Gestion des processus


PROCESSUS
Un processus est un programme en cours d’exécution.
PROCESSUS PERE ET PROCESSUS FILS
Le processus fils est un processus qui a été créé par un autre processus qui prend le nom de processus père.
IDENTIFICATION D’UN PROCESSUS
Un processus sous Linux est identifié par un numéro unique qui s’appelle le numéro d’identification du processus
PID (Process IDentifier) et qui lui est attribué par le système à sa création.
CLASSIFICATION DES PROCESSUS
a) Les processus système (daemons)
Ces processus ne sont sous le contrôle d’aucun terminal et
ont comme propriétaire l’administrateur du système ou
un uid d’administration. Ils assurent des tâches d’ordre
général, parfois disponibles à tous les utilisateurs du
système. Ils ne sont d’habitude stoppés qu’à l’arrêt du
système d’exploitation. Les plus courants sont :
– init : initialise un processus par terminal connecté
sur la machine, permettant la connexion des
utilisateurs. Ce processus a le numéro 1. C’est le
processus parent de tous les interpréteurs de commandes créés par la connexion d’un utilisateur.
– crond : permet l’exécution d’un programme en mode cyclique.
– xinetd : super démon internet chargé de créer les processus serveurs réseau sur requêtes des clients.
b) Les processus utilisateurs
Ils correspondent à chaque exécution d’un programme par l’utilisateur, le premier d’entre eux étant l’interpréteur
de commandes à la connexion. Ces processus appartiennent à l’utilisateur et sont généralement attachés à un
terminal.
QUI FAIT QUOI ? la commande w
– L'heure (aussi accessible via "date")
– L'uptime (aussi accessible via "uptime")
• C'est la durée de fonctionnement de l'ordinateur.
• Notez que, contrairement à Windows, il est extrêmement rare que l'installation d'un programme nous
réclame de redémarrer l'ordinateur. En fait, vous avez besoin de redémarrer principalement quand
vous mettez à jour le noyau (le coeur) de Linux. Autrement, il n'est jamais nécessaire de redémarrer
l'ordinateur entièrement.
– La charge (aussi accessible via "uptime" et "tload"): un indice de l'activité de l'ordinateur.
28
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
– La liste des connectés (aussi accessible via "who")
• USER : le nom de l'utilisateur (son login)
• TTY : le nom de la console dans laquelle se trouve l'utilisateur. Souvenez-vous que sous Linux il y a en
général 6 consoles (tty1 à tty6) et qu'en plus de ça on peut en ouvrir une infinité grâce aux consoles
graphiques (leur nom commence par pts en général), comme le propose le programme "Terminal" sous
Gnome ou "Konsole" sous KDE.
• FROM : c'est l'adresse IP (ou le nom d'hôte) depuis laquelle il se connecte. Ici comme je me suis
connecté en local (sur ma propre machine, sans passer par internet), il n'y a pas vraiment d'IP.
• LOGIN@ : l'heure à laquelle cet utilisateur s'est connecté.
• IDLE : depuis combien de temps cet utilisateur est inactif (depuis combien de temps il n'a pas lancé de
commande).
• WHAT : la commande qu'il est en train d'exécuter en ce moment. En général, si vous voyez "bash" cela
signifie qu'il a juste un invite de commandes ouvert (il n'exécute donc pas de commande particulière).
LISTER LES PROCESSUS
ps : liste des processus statique
• ps : liste des processus statique
– ps sans arguments, il affiche seulement les processus lancés par le même utilisateur dans la même
console. Cela limite énormément les processus affichés, car beaucoup sont lancés par root et ne
sont pas lancés depuis la même console que vous.
• ps -ef : lister tous les processus -e (affichage de tous les processus) et -f (affichage détaillée)
UID Nom de l'utilisateur qui a lancé le processus
PID Numéro du processus
PPID Numéro du processus père ou parent
C Facteur de priorité (plus la valeur est grande, plus le processus est prioritaire)
STIME Heure de lancement du processus
TTY Nom du terminal sur lequel exécute le processus
TIME Durée de traitement du processus
COMMAND Nom du programme qui a donné naissance au processus
• ps -ejH : afficher les processus en arbre
– Plusieurs processus sont des "enfants" d'autres processus, cela vous permet de savoir qui est à
l'origine de quel processus.
• Options les plus fréquentes :
-u : Affiche les processus de l'utilisateur qui exécute la commande
-au : Affiche les processus de tous les utilisateurs
-aux : Affiche l'intégralité des processus du système. Équivalent à ps -A
-faux : Affiche tous les processus du système en les regroupant par enchaînement d'exécution
top : liste des processus dynamique

PID numéro du processus


USER nom du propriétaire du processus
PR priorité du processus
NI "nice" = courtoisie du processus (effet inverse de la priorité)
VIRT taille de la mémoire virtuelle utilisée par le processus (VIRT=SWAP+RES)
RES taille de la mémoire réelle (RAM) utilisée par le processus
SHR taille de la mémoire partagée (utilisable par d'autres processus)
S -- Process Status 'D' = uninterruptible sleep 'R' = running 'S' = sleeping 'T' = traced or stopped 'Z' =
S
zombie
% du temps processeur consommé par ce processus depuis le dernier affichage de top (temps de
%CPU
rafraîchissement = 3 secondes, par défaut ?)
%MEM % de la mémoire réelle (RAM) utilisée par ce processus
TIME+ Temps processeur en 1/100sec consommé depuis le démarrage du processus
COMMAND Nom du programme exécuté par ce processus
• On navigue à l'intérieur de ce programme en appuyant sur certaines touches du clavier. En voilà au moins 2 à connaître :
– q : ferme top.
– h : affiche l'aide, et donc la liste des touches utilisables.
• Mise à part cela, voici quelques commandes à connaître au sein de top qui peuvent vous être utiles :
– B : met en gras certains éléments.
– f : ajoute ou supprime des colonnes dans la liste.

29
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
– F : change la colonne selon laquelle les processus sont triés. En général, laisser le tri par défaut en fonction de
%CPU est suffisant.
– u : filtre en fonction de l'utilisateur que vous voulez.
– k : tue un processus, c'est-à-dire arrête ce processus. On vous demandera le numéro (PID) du processus que
vous voulez tuer.
– s : change l'intervalle de temps entre chaque rafraîchissement de la liste (par défaut c'est toutes les 3 secondes).
Visualisation arborescente : pstree
Cette présentation permet de voir plus facilement les dépendances entre processus.
ARRETER UN PROCESSUS
• Ctrl + C : arrêter un processus lancé en console
• kill : tuer un processus
– il faudra auparavant récupérer le PID du ou des processus que vous voulez tuer. Pour cela, 2 solutions :
• ps
• Top
– Code : Console $ ps -u mounir | grep firefox
– firefox 321 ? 00:00:03 firefox-bin
– kill 321 (termine le processus)
– kill –9 321 ("tue" le processus)
• Suppression d'un processus
la commande : kill [-numéro de signal] PID

– PID : le numéro du processus
– numéro de signal : Un nombre allant de 1 à 30 qui est une valeur système précis (valeur par défaut 15)

• Un utilisateur ne peut arrêter que les processus dont il est propriétaire c'est à dire qu'il a lancé.
• Seul l'administrateur a le droit d'arrêter un processus ne lui appartenant pas.
Contrairement à kill, killall attend le nom du processus à tuer et non son PID.
• Supposons que nous ayons 3 processus "find" en cours d'exécution que nous souhaitons arrêter.
• ps -u user1 | grep find
• 675 pts/1 00:00:01 find
• 678 pts/2 00:00:00 find
• 679 pts/3 00:00:01 find
• Pour tous les tuer, il faudra donc taper : killall find

TP ( 17 ) : LE JOB CONTROL
Le job est une ligne de commandes shell.
Chaque job est numéroté de 1 à N par le shell.
Il est plus souple que le PID. Chaque job peut
être référencé en utilisant le préfix % suivi du
numéro de job. Un job peut se trouver dans
trois états :
avant-plan (“foreground”). Le job
s’exécute et vous n’avez pas la main en
shell.

30
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
arrière-plan (“background”). Le job s’exécute et vous avez la main en shell.
suspendu (“suspended”). Le job est en attente, il ne s’exécute pas.
Job en arrière-plan
Exemple :
sleep 60&
[1] 2736
sleep 50&
[2] 2957
sleep 40&
[3] 3100
jobs l
[1] 2736 Running sleep 60&
[2] 2957 Running sleep 50&
[3] + 3100 Running sleep 40&
Job suspendu
Une commande peut être suspendue lorsqu’elle est en avant-plan par la touche <ctrl Z>.
Lorsqu’elle est en arrière-plan la commande :
kill SIGSTOP %numero job ou kill STOP %numero job
permet de suspendre la commande associée au numéro de job numero job.
La commande bg %numero job permet de basculer un job suspendu en job en arrière-plan.
Exemple :
stty susp <ctrl Z>
sleep 100
...
<ctrl Z>
[1] 2655 Stopped
jobs l
[1] 2655 Stopped sleep 100
[2] 2957 Running beta&
kill STOP %2
[2] Stopped beta
bg %2
Job en avant-plan
Toute commande lancée interactivement en shell est en avant-plan. Un job en arrière-plan ou suspendu peut être
mis en avant-plan par la commande fg %numero job .
Exemple :
jobs l
[1] 2655 Stopped sleep 100
[2] 2957 Running beta&
fg %1
§ Attente de quelques secondes,
§ la commande sleep 100 est en avant plan

TP ( 18 ) : Gestion des paquetages


il existe plusieurs façons de récupérer une application fonctionnant sous Linux:
Sous forme de paquetage RPM. Il s'agit d'un fichier portant l'extension .rpm permettant une installation
automatique, pour les distributions Linux telles que RedHat ou Mandriva.
Sous forme de paquetage DEB. Il s'agit d'un fichier portant l'extension .deb permettant une installation
automatique, pour les distributions Linux Debian.
Sous forme d'archive. Il s'agit de fichiers compressés comportant l'extension .tar.gz, .gz ou .tar.bz2
Installation à partir d'un paquetage rpm (Red Hat Package Manager)
• Pour installer un nouveau paquetage appli.rpm :
rpm −ivh appli.rpm
• Pour mettre à jour (upgrader) un paquetage :
rpm −Uvh appli.rpm
• Pour supprimer un paquetage :
rpm −e appli
• Afficher la liste de tous les paquetages installés :
rpm −qa
• Vérifier à partir du nom si un paquetage est déjà installé :
rpm −qa | grep php
31
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA

Lister le contenu d'un paquetage :
rpm −ql appli
• Pour interroger les packages contenant un fichier particulier:
rpm -f NomDuFichier
Les packages DEB
• La distribution Debian propose un outil de gestion de package permettant d'automatiser l'installation, la
configuration et la mise à jour des logiciels installés par ce biais. Les packages Debian sont ainsi des
fichiers portant l'extension .deb et pouvant être installés manuellement grâce à la commande suivante :
dpkg -i nom_du_package.deb
• -r supprime un paquet installé (--remove)
• -l affiche la liste des paquets qui correspond au motif
• -s donne l’état du paquet indiqué
• -L affiche la liste des fichiers installés qui appartiennent
• -S recherche un fichier dans les paquets installés
• De plus un système complémentaire a été mis au point afin de gérer les dépendances entre les différents
packages et de permettre de les mettre à jour par simple téléchargement: il s'agit du système apt
(Advanced Packaging Tool). Ce système fonctionne à partir d'une liste de sources (emplacements auxquels
des paquetages sont disponibles) présente dans le fichier /etc/apt/sources.list.
Décompresser des archives
• Décompressez l'archive, compilez la puis installez la.
• [root@host] /# cd /usr/src
• [root@host] /# tar -xvzf samba-*.tar.gz
• [root@host] /# cd samba-*
• [root@host] /# ./configure
• [root@host] /# make
• [root@host] /# make install
Rq : Bien que la compilation se fasse pratiquement toujours de la même façon pour la majorité des applications, il
est vivement conseillé de lire le fichier INSTALL ou README pour connaître exactement les commandes
nécessaires à la compilation du programme.

TP ( 19 ) : Installation des pilotes d'imprimante


Vous pouvez effectuer l'installation à partir d'Internet ou d'un CD.
Installation à partir d'Internet
1. Avant de commencer, lisez la section Avant l'installation.
2. Téléchargez l'ensemble des pilotes d'imprimante Dell sur le site Web Dell à
l'adresse http://www.dell.com/printers : print-drivers-linux-glibc2-x86. rpm.gz
3. Enregistrez la solution téléchargée dans le répertoire /tmp.
4. Décompressez le fichier de solution suivant :
# gunzip /tmp/print-drivers-linux-glibc2-x86.rpm.gz
5. Installez le fichier de solution suivant :
# rpm -ivh /tmp/print-drivers-linux-glibc2-x86.rpm
6. Exécutez le script de configuration suivant pour terminer l'installation :
# /usr/local/dell/setup.dellprint
Installation à partir d'un CD
1. Avant de commencer, lisez la section Avant l'installation.
2. Installez le CD.
3. Changez de répertoire et accédez au répertoire du fichier de la solution. Si vous avez installé le CD-ROM
dans /mnt/cdrom :
# cd /mnt/cdrom/unix/packages
4. Installez le fichier de solution suivant :
# rpm -ivh print-drivers-linux-glibc2-x86.rpm
5. Exécutez le script de configuration suivant pour terminer l'installation :
# /usr/local/dell/setup.dellprint

TP ( 20 ) : Impression
Sous Linux, l’accès aux imprimantes ne se fait qu’au travers d’un spooler d’imprimante. Un spooler est un
gestionnaire de file d’attente, ou « queue », dans laquelle sont placés les travaux d’impression. A chaque
imprimante est associée une file d’attente. Linux envoie ces travaux à l’imprimante concernée dans l’ordre
d’arrivée. Cette façon de faire permet de résoudre les conflits d’accès au cas où plusieurs utilisateurs tentent
d’accéder à la même imprimante au même moment. Les commandes permettant à l’utilisateur de manipuler une

32
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
file d’attente d’impression : envoyer un ou plusieurs travaux (lpr), consulter l’état de la file d’attente (lpq),
supprimer un ou plusieurs travaux de la file d’attente (lprm). Un travail d’impression peut être un fichier ou la
sortie standard d’une commande.
IMPRESSION
Imprimante par défaut
La commande lpr permet d’envoyer un travail d’impression dans une file d’attente.
Utilisée sans aucune option, lpr utilise l’imprimante par défaut :
• lpr file1
• ls –l /etc | lpr
• lpr file1 file2 file3
Choix de l’imprimante
Il est possible que plusieurs imprimantes soient connectées au système. Dans ce cas, il est nécessaire de désigner
l’imprimante de destination par l’option PNom où Nom spécifie le nom de l’imprimante.
• lpr hp1102 file1 file2
Cette commande envoie file1 et file2 à l’imprimante nommée hp1102. Le nom des imprimantes est déterminé par
l’administrateur du système. La variable d’environnement PRINTER, si elle existe, est utilisée par lpr, lpq et lprm
pour désigner l’imprimante destination.
Options
La commande lpr accepte d’autres options dont les plus courantes sont :
#n imprimer en n exemplaires.
p Print : procède à une mise en forme identique à la commande pr.
r Remove : supprime le fichier après l’avoir imprimé (pratique si le fichier à imprimer est temporaire).
s Symbolique : plutôt que de copier le fichier à imprimer dans le répertoire du spooler, lpr crée dans ce
répertoire un lien symbolique sur le fichier à imprimer. Utile si le fichier à imprimer est très grand.
Attention : ne pas modifier ou supprimer le fichier avant la fin de l’impression
ÉTAT DU SPOOLER D’IMPRIMANTE
La commande lpq option [travaux] [utilisateur] indique l’état du spooler d’imprimante. Sans option ni
argument, indique l’état de tous les travaux soumis par l’utilisateur. Cette commande permet de retrouver
l’identification de chaque travail, identificateur utilisable dans lprm. Les options suivantes sont acceptées par lpq :
l Long : donne plus d’information sur chaque travail.
Pnom Printer : spécifie une imprimante particulière (nom). lpq utilise aussi la variable d’environnement
PRINTER.
a Liste l’ensemble des imprimantes disponibles et leur état.
Exemple : lpq –a | grep Printer
SUPPRESSION D’UN TRAVAIL
Il est parfois nécessaire de supprimer un travail déja placé dans une file d’attente. Cette fonction est réalisée à
l’aide de la commande lprm job où job est l’identification du travail d’impression dans le spooler fournie par lpq.
• lpr f*
• lpq
Rank Owner Job Files Total Size
1st omar 26 f1, f2, f3 5228 bytes
• lprm 26
Suppression de l’impression de f1, f2, f3
IMPRESSION POSTSCRIPT
Pour imprimer sur une imprimante PostScript récente, la commande lpr convient dans tous les cas : l’imprimante
détecte elle-même si le document est PostScript ou ASCII et l’imprime correctement. Si l’imprimante n’accepte que
le Postscript, la commande lpr ne peut être utilisée que si le document à imprimer est déja au format PostScript.
Pour imprimer de l’ASCII, la commande a2ps remplacera lpr.
Exemple : ls –l /etc | a2ps
Cette commande va servir de base aux autres:
• a2ps nom_fichier_ascii | lpr -Pprinter permet de traduire et d’imprimer un fichier ascii en
postscript (ascii2postscript),
• c2ps nom_fichier.c | lpr -Pprinter permet de traduire et d’imprimer un fichier .c en postscript
(c2postscript),
Et ainsi de suite, vous avez à votre disposition, sur les serveurs ou sur le net, un grand nombre de «traducteurs»
au format postscript (man2ps, gif2ps, ttf2ps...) qui fonctionneront sensiblement de la même manière. Ces
fichiers vous permettent de formater vos sorties.
33
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA

TP ( 21 ) : Fichiers spéciaux de périphériques


UNIX a été conçu de manière à permettre un accès transparent aux périphériques matériels sur diverses
architectures CPU. Sa philosophie consiste également à disposer d'accès aux périphériques grâce à un même
jeu d'utilitaires en ligne de commandes.
Les périphériques peuvent généralement être répartis en deux grandes catégories:
les périphériques à accès aléatoire (disques, lecteurs de bandes magnétiques),
les périphériques série (souris, cartes son, terminaux).
Fichiers blocs
• L'accès aux périphériques en mode aléatoire se fait parmi de grands blocs continus de données stockées
de manière persistante. La lecture y est réalisée par unités discrètes (pour la plupart des disques, cela se
fait par groupe de 1024 octets). Ces périphériques sont appelés périphériques bloc (block devices). La
commande ls −l /dev/hda affiche une ligne avec une lettre b à gauche indiquant ainsi que votre disque
dur est un périphérique bloc:
brw−r−−−−− 1 root disk 3, 64 Apr 27 1995 /dev/hdb
Fichiers caractères
• En revanche, l'accès aux périphériques série se fait un octet à la fois. Les données peuvent être lues ou
écrites une seule fois seulement. Par exemple, après qu'un octet ait été lu depuis votre souris, le même
octet ne peut plus être lu par un autre programme. Les périphériques série sont appelés périphériques
caractères (character devices) et sont caractérisés par un c sur la partie gauche de la ligne affichée via
ls. Votre périphérique /dev/dsp (Digital Signal Processor, c'est−à−dire votre carte son) se caractérise
ainsi:
crw−r−−r−− 1 root sys 14, 3 Jul 18 1994 /dev/dsp
Nombres mineurs et majeurs de fichiers
• Les périphériques sont caractérisés par des nombres majeurs (ou major device numbers). Par exemple,
tous les disques SCSI présentent un nombre majeur égal à 8. Par ailleurs, chaque périphérique
individuel possède un nombre mineur. Ainsi, /dev/sda est caractérisé par un nombre mineur égal à 0.
Les nombres majeur et mineur permettent au noyau d'identifier les périphériques. Le nom de fichier est
arbitraire mais il est choisi demanière à apporter de la cohérence. Vous pouvez déterminer les nombres
majeur et mineur (8, 0) grâce à ls, cette commande étant appliquée à /dev/sda:
brw−r−−−−− 1 root disk 8, 0 May 5 1998 /dev/sda
Noms usuels des périphériques
• /dev/hd??
• dev/sd??
• dev/ttyS? , il désigne sous Linux:
– tout type de terminal,
– tout port série, que le périphérique connecté ou non un terminal.
• /dev/psaux : C'est une souris PS/2.
• /dev/mouse : Il s'agit d'un lien symbolique vers /dev/ttyS0 ou /dev/psaux. D'autres périphériques
sont également supportés.
• /dev/modem : Il s'agit d'un lien symbolique vers /dev/ttyS1 ou tout port associé au modem.
• /dev/fd? : lecteurs de disquettes
• /dev/par? : désigne les ports en mode parallèle. (parallel port). /dev/par0 est votre port parallèle
(ou LPT1 sous DOS).
• /dev/lp? : Imprimante en ligne. Identique à /dev/par?.
• /dev/urandom : est un générateur de nombres aléatoires. La lecture à partir de ce périphériques
engendre des nombres pseudo−alé atoires.
• /dev/zero : est un périphérique qui, à la demande, produit des octets de valeur ``zéro''. Il est utile si
vous voulez produire un bloc de zéros.
• /dev/null : C'est le périphérique ``null'' (null device) qui ne lit rien. Cependant tout ce que vous y
écrivez est éliminé. Ceci est très utile pour éliminer l'affichage normalement produit par
un programme, par exemple.
• /dev/cdrom : est un lien symbolique vers /dev/hda, /dev/hdb ou /dev/hdc. Ce lien peut également
pointer vers un CD−ROM SCSI.
• /dev/tty?: console virtuelle. En fait, il s'agit du périphérique ``terminal'' pour les consoles virtuelles
elles−mêmes. La numérotation va de /dev/tty1 à /dev/tty63.

34
Réalisé par : M. OUHAMMOU ISTA-KHENIFRA
• /dev/mem : accès mémoire physique
• /dev/kmem : accès mémoire virtuelle
• /dev/ram? : disque virtuel
• /dev/initrd : disque virtuel d'initialisation
• /dev/md? Périphériques méta-disques RAID

TP ( 22 ) : Comparaison du contenu de deux fichiers avec diff et cmp


Comparaison de 2 fichiers
• cmp [-s] fichier1 fichier2
– affiche le premier octet différent dans deux fichiers. L’option -s permet d’avoir un code retour
– plutôt qu’un affichage. Le code est 0 si les deux fichiers sont identiques, 1 s’ils sont différents et
2 s’il y a eu une erreur.
Différence entre 2 fichiers
• diff [-e] fichier1 fichier2
– indique quelle ligne doivent être changées dans fichier1 pour qu’il soit identique à fichier2.
– L’option -e affiche les différences sous une forme semblable aux commandes de l’éditeur ed.
Conversion et suppression de caractères avec tr
Exemples :
• tr aeiou AEIOU
– bonjour
– (Ctrl D)
– bOnjOUr
• tr -d ac
– abcad
– (Ctrl D)
– bd

TP ( 23 ) : La commande sudo
Grâce à la commande sudo, des commandes nécessitant a priori les prérogatives de root, peuvent être exécutées
par un compte ordinaire.
La commande sudo permet à un utilisateur d’exécuter des commandes qui nécessitent une identité différente de
l’utilisateur, par exemple celle de root. Exemple : mounir@ista~$: sudo useradd saad
Le fichier /etc/sudoers
Ce fichier décrit qui peut activer une commande avec sudo et sous quelle identité.
Syntaxe d’une ligne d’endossement de privilèges
Qui hôte = (identité) commande [,…]
Exemple : mounir ALL = (root) /usr/bin/useradd, /usr/bin/usermod
L’utilisateur mounir peut activer les commandes useradd et usermod avec les droits de root.
Les alias
Pour simplifier l’écriture du fichier, on définit des alias (il faut spécifier la catégorie de l’alias en 1re colonne).
Exemple :
User_Alias ADM_USERS = pierre, paul
Runas_Alias OPERATOR = root
Cmd_Alias USER_CMDS = /usr/bin/useradd, /usr/bin/usermod
ADM_USERS ALL = (OPERATOR) USER_CMDS
Mot de passe
Par défaut, la commande sudo demande le mot de passe de l’utilisateur. Le mot-clé NOPASSWD peut précéder les
commandes. Dans ce cas, le mot de passe n’est pas demandé. Exemple :
%admins ALL = (root) NOPASSWD: USER_CMDS
Remarque
Un groupe est précédé du caractère %.

35

Vous aimerez peut-être aussi