Travaux Dirigés (TD)
TD 1 : Introduction aux systèmes d’exploitation
1. Expliquez le rôle principal d’un système d’exploitation dans un ordinateur
multiprogrammé.
2. Décrivez comment un OS gère les ressources matérielles telles que le
processeur et la mémoire.
3. Quels sont les mécanismes utilisés par un OS pour protéger ses ressources
des utilisateurs non autorisés ?
4. Différenciez les systèmes multiprogrammés, interactifs et en temps réel.
Donnez un exemple pour chaque type.
5. En quoi l’utilisation d’un OS facilite-t-elle l’accès à la machine physique
pour les utilisateurs ?
TD 2 : Présentation de Linux
1. Quels sont les principaux composants d’une distribution Linux ?
2. Décrivez les principes de base du projet GNU et ses quatre libertés
fondamentales.
3. Expliquez la différence entre le noyau Linux et une distribution Linux.
4. Qu’est-ce qu’un runlevel, et comment est-il utilisé dans Linux ?
5. Comparez le rôle des chargeurs de démarrage GRUB et LILO.
TD 3 : Introduction au Shell
1. Qu’est-ce qu’un Shell et quels sont ses types les plus courants dans les
systèmes Linux ?
2. Expliquez les avantages de l’exécution en arrière-plan des programmes dans
le Shell.
3. Décrivez le concept de redirection des entrées/sorties et donnez un exemple
d’utilisation.
4. Pourquoi le Shell est-il souvent utilisé pour automatiser des tâches dans un
système Linux ?
5. Quelles sont les principales différences entre un terminal physique et un
terminal virtuel ?
Travaux Pratiques (TP)
TP 1 : Découverte de Linux
1. Utilisez la commande ls pour afficher tous les fichiers (y compris les
fichiers cachés) d’un répertoire. Quelle option avez-vous utilisée ?
2. Changez de répertoire en utilisant cd, puis affichez le chemin absolu du
répertoire courant avec pwd.
3. Créez un répertoire nommé exercice1 et un fichier nommé [Link] à
l’intérieur.
4. Ajoutez du texte dans [Link] à l’aide de la commande echo et affichez
son contenu avec cat.
5. Supprimez le fichier [Link] en confirmant sa suppression.
TP 2 : Gestion des processus et des fichiers
1. Listez tous les processus en cours d’exécution sur votre machine en utilisant
la commande ps. Quelle commande donne des informations détaillées ?
2. Identifiez le PID (Process ID) d’un processus spécifique et terminez-le avec
la commande kill.
3. Copiez un fichier nommé [Link] dans un nouveau fichier nommé
[Link] à l’aide de la commande cp.
4. Déplacez [Link] dans un répertoire différent à l’aide de la commande mv.
5. Supprimez un répertoire vide nommé ancien à l’aide de rmdir. Que se
passe-t-il si le répertoire contient des fichiers ?
TP 3 : Scripts Shell
1. Créez un script Shell qui demande le prénom de l’utilisateur et affiche
“Bonjour, [Prénom] !” dans le terminal.
2. Modifiez le script pour qu’il vérifie si un fichier nommé [Link] existe dans
le répertoire courant et affiche un message approprié.
3. Ajoutez une boucle for dans le script pour afficher les nombres de 1 à 5.
4. Utilisez une structure conditionnelle if pour vérifier si un nombre donné est
pair ou impair.
5. Implémentez une fonction dans le script qui prend un nom de fichier en
argument et retourne sa taille en octets.
TD 4 : Commandes de base du Shell
1. Expliquez la différence entre les commandes ls, pwd, et cd. Donnez des
exemples pratiques d’utilisation.
2. Quelle commande permet de créer un fichier vide ? Comment créer un
fichier nommé [Link] dans un répertoire spécifique ?
3. Décrivez les commandes rm, cp, et mv. Que se passe-t-il si vous utilisez rm
sur un répertoire ?
4. Utilisez les commandes echo et cat pour écrire dans un fichier et afficher
son contenu.
5. Que fait la commande man ? Donnez un exemple en l’utilisant pour obtenir
de l’aide sur la commande ls.
TP 4 : Commandes essentielles
1. Navigation dans le système de fichiers :
• Affichez la liste des fichiers d’un répertoire avec ls.
• Changez de répertoire en utilisant cd et revenez au répertoire précédent.
• Affichez le chemin absolu du répertoire courant avec pwd.
2. Gestion des fichiers :
• Créez un fichier vide nommé mon_fichier.txt avec touch.
• Copiez ce fichier dans un nouveau fichier nommé copie_fichier.txt avec cp.
• Déplacez le fichier copie_fichier.txt dans un répertoire nommé dossier_test.
3. Manipulation des fichiers :
• Écrivez la phrase “Bonjour, Linux !” dans mon_fichier.txt avec echo.
• Affichez le contenu de mon_fichier.txt dans le terminal avec cat.
• Supprimez le fichier mon_fichier.txt.
4. Gestion des répertoires :
• Créez un répertoire nommé exercice.
• Listez tous les fichiers, y compris les fichiers cachés, dans le répertoire
courant avec une option ls.
• Supprimez le répertoire exercice.
5. Obtenir de l’aide :
• Utilisez la commande man pour lire la documentation de cp.
• Affichez les options disponibles pour la commande ls sans utiliser man.
• Testez l’option -R de la commande ls et expliquez son rôle.
TP 5 : Commandes avancées
1. Recherche et filtrage :
• Recherchez tous les fichiers dans un répertoire contenant le mot “test” dans
leur nom avec find.
• Affichez uniquement les lignes contenant le mot “Linux” dans un fichier
texte avec grep.
• Affichez les 5 premières lignes d’un fichier avec head et les 5 dernières
avec tail.
2. Gestion des processus :
• Affichez les processus en cours d’exécution avec ps.
• Recherchez le processus bash et terminez-le avec kill.
• Obtenez une vue en temps réel des processus système avec top.
3. Redirection et pipelines :
• Redirigez la sortie de la commande ls vers un fichier nommé [Link].
• Utilisez un pipeline pour afficher les fichiers contenant le mot “test” dans
leur nom avec ls et grep.
• Comptez le nombre de fichiers dans un répertoire avec ls | wc -l.
4. Permissions :
• Affichez les permissions d’un fichier avec ls -l.
• Modifiez les permissions d’un fichier pour que seul le propriétaire ait des
droits de lecture et d’écriture avec chmod.
• Changez le propriétaire d’un fichier avec chown.
5. Archivage et compression :
• Créez une archive d’un répertoire avec tar.
• Compressez un fichier avec gzip et décompressez-le.
• Affichez le contenu d’une archive sans l’extraire avec tar -tf.
TP 6 : Scripts avancés en Shell
Objectifs : Maîtriser des scripts Shell complexes pour automatiser des tâches
d’administration.
1. Automatisation de sauvegardes :
• Écrire un script pour :
• Sauvegarder un répertoire donné dans une archive compressée ([Link]).
• Ajouter un horodatage au fichier de sauvegarde.
• Supprimer les sauvegardes plus anciennes qu’une semaine.
• Extension : Configurer le script pour envoyer un e-mail à l’administrateur en
cas d’échec.
2. Gestion des utilisateurs :
• Écrire un script pour :
• Ajouter un utilisateur.
• Générer un mot de passe aléatoire et le définir pour cet utilisateur.
• Créer un répertoire personnel avec des permissions adaptées.
• Extension : Ajouter une option pour désactiver un utilisateur.
3. Analyse des journaux système :
• Écrire un script qui analyse les logs système (/var/log/syslog ou /var/log/
messages) pour :
• Rechercher des erreurs spécifiques (mot clé "error").
• Générer un rapport contenant les erreurs classées par fréquence.
• Extension : Configurer une alerte par e-mail en cas d’erreurs critiques
détectées.
4. Surveillance des ressources :
• Écrire un script qui :
• Vérifie l’utilisation du disque (df -h) et alerte si une partition dépasse 80 %
de son utilisation.
• Vérifie les processus consommant le plus de mémoire et les enregistre dans
un fichier.
• Extension : Intégrer ce script dans le planificateur cron pour une exécution
automatique quotidienne.
TD : Administration Unix avancée
Objectifs : Comprendre et résoudre des problématiques complexes liées à
l’administration Unix.
1. Gestion des permissions :
• Données :
• Un répertoire partagé par plusieurs utilisateurs (exemple : /srv/shared).
• Exercice :
• Configurer les permissions pour que tous les membres d’un groupe puissent
écrire dans ce répertoire, mais pas les utilisateurs extérieurs.
• Créer un script pour automatiser cette configuration.
2. Planification des tâches :
• Étude des fichiers crontab :
• Ajouter une tâche planifiée pour exécuter un script à minuit tous les jours.
• Créer une règle pour envoyer un rapport hebdomadaire de l’utilisation des
ressources CPU et mémoire.
3. Sécurisation :
• Configurer un pare-feu avec iptables pour :
• Bloquer tout le trafic entrant sauf SSH (port 22).
• Limiter le nombre de connexions SSH par minute.
• Extension : Écrire un script pour appliquer ces règles automatiquement au
démarrage.
4. Diagnostic réseau :
• Écrire un script qui :
• Pinge une liste d’adresses IP ou d’hôtes depuis un fichier texte.
• Enregistre le résultat dans un fichier de log, avec les délais et les échecs.
• Extension : Ajouter une fonctionnalité pour alerter l’administrateur en cas
d’indisponibilité persistante.
5. Gestion des services :
• Écrire un script qui :
• Vérifie si un service critique (exemple : Apache ou MySQL) est en cours
d’exécution.
• Redémarre le service s’il est arrêté et envoie un e-mail en cas d’échec.
TP 7 : Projet d’administration Unix
Objectif : Synthèse des compétences.
1. Contexte :
• Vous êtes un administrateur système et devez mettre en place une solution
complète de gestion et de surveillance pour une machine Linux.
2. Tâches :
• Automatisation :
• Mettre en place un script de démarrage qui configure les permissions,
démarre les services essentiels et configure les règles de pare-feu.
• Surveillance :
• Installer et configurer un outil de monitoring comme htop ou glances.
• Écrire un script pour collecter et analyser les logs système.
• Sécurisation :
• Configurer une clé SSH pour se connecter de manière sécurisée.
• Restreindre les connexions à l’aide de fail2ban.
• Documentation :
• Rédiger un fichier README expliquant les scripts et leur usage.