Please note that this website is still in development phase and might change even in V1
All .pdf subjects available in this repository are the exclusive property of the University of Bourgogne Franche Comte. Any reproduction, use outside the academic framework of the university, or without permission, is prohibited and may be considered as an infringement.
Expliquer comment est créé un processus dans Linux
Un processus est créé avec un PID à partir d'un PPID. Il peut passer par différents états. On fait un fork pour créer un processus dans Linux.
Comment est-il possible de changer le shell de conenxion d'un utilisateur? L'utilisateur a-t-il accès à ce réglage ?
En éditant le fichier /etc/passwd mais il faut avoir les droits root. Pour changer le shell par défaut de son utilisateur linux on peut utiliser $chsh.
Voir iciQuel est le rôle du fichier /etc/profile ?
C'est un script qui se lance à chaque nouvelle connexion d'un utilisateur. Si je modifie le /etc/profile.d et que j'y rajoute un echo "Hello" si je fais un su - alice lors d ela conenxion d'alice on aura un Hello qui s'affichera à l'écran.
Donner une commande qui copie tous les fichiers du répertoire d'accueil de l'utilisateur Durand dont le nom commence par "facture" dans le sous répertoire Charge de cet utilisateur. On suppose que le sous-répertoire Charge existe.
Donner une commande qui attribue les droits d'exécution pour les autres à tous les fichiers de l'utilisateur Dupond qui ont pour groupe "master"
Donner une commande qui affiche les utilisateurs dont le groupe principal a pour gid : 1022.
Donner une commande qui compte le nombre d'utilisateurs dont le groupe principal a pour gid : 1022
Donner une commande qui trie les lignes d’un fichier de type carnet d’adresses (de nom carnet) sur le champs “”nom“ et affiche les 15 premières lignes triées. Nous supposons que les différents champs de chaque ligne du fichier carnet sont séparés par des espaces, que le premier champs de chaque ligne contient le nom et que le fichier carnet est stocké dans le répertoire courant.
Commenter ligne par ligne le script bash ci-dessous (en utilisant les numéros de lignes), puis résumer sa fonction en quelques lignes. Pour vous aider dans votre démarche, vous proposerez un nom parlant pour chacune des variables utilisées.
A la ligne 2 on teste si $1 est un répertoire.
$1 étant le premier paramètre passé par la fonction.
Ligne 3: On incrément la variable TD
Ligne 5: Pour chaque fichier dans le répertoire
Ligne 6 : Si le fichier existe
Ligne 7: On exécute la fonction func2 avec $f comme paramètre.
Ligne 10 si $1 n'était pas un répertoire alors on teste si le fichier existe et est exécutable.
Ligne 11: On incrémente la variable TE
Ligne 13: Sinon on incrémente la variable TF
Ligne 17: on déclare des variables dont D= $1
Ligne 19: On exécute la fonction func2 avec comme paramètre $D
Ligne 21: On affiche la valeur de TD
Ligne 22: On affiche la valeur de la variable TE
Ligne 23: On affiche la valur de la variable de TF.
Dans cet exercice, nous vous demandons d’écrire des scripts shell permettant de gérer une “cor-beille“ depuis un terminal.
Écrire le shell script ~/Corbeille/nettoyage.sh qui va effacer de la corbeille tous les fichiers qui ont plus de 30 jours.
Ce script doit :
1. créer le répertoire ~/Corbeille/fichiers/ si il n’existe pas encore,
2. effacer tout les fichiers du répertoire ~/Corbeille/fichiers/ qui ont plus de 30 jours.
if[ -d ~/Corbeille/fichiers] ; then
cd ~/Corbeille/fichiers/ ;
find -ctime 30 | rm
else
mkdir ~/Corbeille/fichiers/
fi
if[ $@ -ne 1 ]; then
echo "Une seul paramètre unique";
exit 1;
elif[ -d $1 ]
echo "Fichier uniquement";
exit(2);
else
if [! find ~/Corbeille/fichiers/ -name $1]; then
mv $1 ~/Corbeille/fichiers/
./~/Corbeille/nettoyage.sh
mv $1 $(date-$file $1--
else
echo "Ficheir déjà présent";
exit(3);
fi
fi
Comme base de découpage, on propose l’une des trois plages réseaux suivantes : 12.0.0.0, 164.20.0.0 et 194.42.10.0
1. Qu’est-ce que ces trois plages réseaux ont en commun ? Que cela implique-t-il en terme d’utilisation ? (0/0.5)
2. À quelle classe chacune de ces plages appartient-elle ? (0.5/0.5)
La plage réseau 12.0.0.0 est de classe A.
La plage réseau 164.20.0.0 est de classe B.
La plage réseau 190.42.10.0 est de classe C.
3. Quelle plage sera-t-il préférable de retenir pour notre solution ? Justifier. (0.5/0.5)
Il est préférable de retenir la classe B donc la plage réseau 164.20.0.0 car on aura besoin de plus de 254 adresses et de moins de 4500 adresses.
Pour SR1 on a besoin de 31+2+1=64 adresses.
Pour SR2 on a besoin de 240+2+1=243 adresses
Pour SR3 on a besoin de 63+2+1=66 adresses.
Soit 343 ce qui ets trop pour une plage réseau de classe C n epouvant contenir que 254 adresses. On retient donc la plage réseau de classe B qui peut stocker jusqu'à 45000 adresses. On aurait pu aussi retenir la plage réseau de classe A mais on ne veut pas stocker plus de 2 millions d'adresses et dans l'énoncé on souhaite un découpage au plus juste. On retient donc la plage d'adresse réseau de classe B (164.20.0.0).
4. Combien de sous-réseaux seront-ils nécessaires, en comptant les interconnexions entre bâti-ments ? Justifier. (0.75/1)
3 sous réseaux seront nécessaires.
En effet, il suffit juste de rajouter 2 adresses réseaux dans chaque batiment pour les routeurs de chaque batiment permettant ainsi l'interconnexion des batiments. On a donc:
SR1= 31+2+1+3=37 donc 1 sous réseau (- de 255)
SR2= 240+2+1+3=246 donc 1 sous réseau (- de 255)
SR3 = 63+2+1+3=69 donc 1 sous résau (- de 255).
IL MANQUE L'EQUIPEMENT COMMUN ET L'INTERCONNEXION
5. Quelle sera la taille de chaque sous-réseau ? Préciser votre méthode de calcul. (0.75/1)
SR1= 37 adresses. La puissance de 2 supérieur est 2 puissance 6. La taille du sous réseau SR1 est de 64 adresses.
SR2= 246 adresses. La puissance de 2 supérieur est 2 puissance 8 (256). La taille du sous réseau SR2 est de 256 adresses.
SR3= 66 adresses. La puissance de 2 supérieur est 2 puissance 7 (128). La taille du sous réseau SR3 est de 128 adresses.
6. Effectuer le découpage du réseau privé retenu à la troisième question de l’exercice :
— Détailler l’ensemble de la procédure utilisée.
— Donner la liste des sous-réseaux obtenus et leurs paramètres : adresse de réseau, masque
en décimal et en notation CIDR, nombre d’adresses, nombre total de machines, adresse
de la passerelle, adresse de broadcast, dernière adresse utilisée.
Rappel: SR1=34 adresses. SR2= 243 adresses. SR3= 66 adresses 164.20.0.0 Plages d'adresses réseaux obtenues. On commence par les sous réseaux ayant le plus de machines SR2
SR2
Adresse de réseau: 164.20.0.0
Masque (décimal): 255.255.0.0 (erreur c'est 255.255.255.0)
Masque CIDR : 23 car 11111111.11111111.11111101.00000000
Nombres adresse: 243 (240 machines + adresse réseau + 2 adresses réservées)
Nombre machines: 240
Adresse passerelle : 164.20.0.254
Adresse broadcast: 164.20.0.0.255
Dernière adresse utilisée: 164.20.0.253
SR3
Adresse de réseau: 164.20.1.0
Masque (décimal): 255.255.254.0 (erreur c'est 255.255.255.158)
Masque CIDR : 23 car 11111111.11111111.00100010.00000000
Nombres adresse: 66 (63 machines + adresse réseau + 2 adresses réservées)
Nombre machines: 63
Adresse passerelle : 164.20.0.254 (erreur c'est 164.20.1.126)
Adresse broadcast: 164.20.0.0.255 (erreur c'est 164.20.0.0.127)
Dernière adresse utilisée: 164.20.1.253
SR1
Adresse de réseau: 164.20.2.0 (erreur c'est 164.20.1.128)
Masque (décimal): 255.255.0.0 (erreur)
Masque CIDR : 23 car 11111111.11111111.11111101.00000000
Nombres adresse: 66 (63 machines + adresse réseau + 2 adresses réservées)
Nombre machines: 63
Adresse passerelle : 164.20.2.254 (erreur)
Adresse broadcast: 164.20.2.255 (erreur)
Dernière adresse utilisée: 164.20.2.253 (erreur)
Vu que chaque sous réseaucontient moins de 254 adresses, on incrément 164.20.0.0 de 1 pour chaque sous réseau.
Adresse passerelle est une adresse réservée à 164.20.0.254.
Adresse broadcast est une adresse réservée à 164.20.0.255.
La dernière adresse utilisée est donc avant ces deux dernières soit 164.20.0.253.
L'adresse réseau à l'emplacement 164.20.0.0.
On incrément de 1 pour chaque sous réseau.
Créer dans votre répertoire d'accueil (/homr/user) un répertoire repNom où Nom est remplacé par votre nom.
Utilisation de la commande mkdir pour la création du répertoire.
La commande pwd permet d'afficher le chemin d'accès vers le répertoire où se situe l'utilisateur qui a entré la commande. Si un utilisateur se trouve dans le répertoire "/home/utilisateur" la commande pwd lui retournera : "/home/utilisateur"
Utilisation de la commande mkdir pour la création de répertoire et de la commande cd pour se positionner dans le bon répertoire
Question 3 : Créer dans le répertoire Exercice1Nom deux fichiers vides infoNom et contenuRepNom où Nom est remplacé par votre nom.
On utilise la commande touch pour créer des fichiers vides
Question 4 : 1. Afficher le contenu détaillé du répertoire Exercice1Nom.
On utilise la commande ls -l pour afficher le contneu détaillé d'un répertoire
Question 4 : 2. Ecrire le contenu détaillé du répertoire Exercice1Nom dans le fichier contenuRepNom, la première ligne du fichier doit contenir le nombre total de block occupés par la liste de fichiers.
Utilisation de la commande > pour re-directionner la série standard d’une commande sur un fichier
Question 4 : 3. Afficher le contenu du fichier contenuRepNom sans la première ligne.
Utilisation de la commande tail -n +2 pour afficher un fichier à partir de sa deuxième ligne
Question 4 : 4. Ecrire le contenu du fichier contenuRepNom sans la première ligne dans un fichier temporaire tmpNom.
Utilisation de la commande tail -n +2 pour afficher un fichier à partir de sa deuxième ligne et de la commande > pour re-directionner la série standard d’une commande sur un fichier
Question 4 : 5. Remplacer le contenu du fichier contenuRepNom par le contenu du fichier temporaire tmpNom.
Utilisation de la commande cat pour afficher le contenu d’un fichier et de de la commande > pour re-directionner la série standard d’une commande sur un fichier
Question 4 : 6. Supprimer le fichier temporaire tmpNom.
Utilisation de la commande rm pour supprimer un fichier
Question 4 : 7. En utilisant le contenu du fichier contenuRepNom, afficher le nombre total de fichiers/répertoires du répertoire Exercice1Nom.
Utilisation de la commande wc -l qui compte le nombre de lignes d’un fichier, appliquée au fichier contenuRepNom qui contient le contenu du répertoire
Question 5:
Ecrire un shell script script1Nom qui recopie chaque ligne du fichier contenuRepNom dans le fichier infoNom en ajoutant à la suite de chaque ligne :
1. “”F“ s’il s’agit d’un fichier ou “”R“” s’il s’agit d’un répertoire.
2. la taille du fichier (répertoire).
Le script script1Nom est sauvegardé dans le répertoire Exercice1Nom.
Question 1 : Comment sont déterminés les droits d’exécution d’un processus ? Justifier votre réponse à l’aide d’un exemple.
Les droits du processus sont détemrinés par l'utilisateur qui a lancé le processus et son groupe.
Question 2 : Qu’est-ce qu’une variable d’environnement, donner sa principale particularité. Citez deux variables d’environnement.
Les variables d'environnement sont définies par le système. Toutes ces variables sont utilisables dans les fichiers de commandes et en ligne de commande.
Ces variables prédéfinies n’ont pas besoin d’être exportées, elles sont transmises automatiquent aux processus fils.
Les commandes env et printenv listent les variables d’environnement et celles exportées avec la commande export.
HOME et PWD sont deux exemplles de variables d'environnement.
Question 3 : A quoi sert le fichier /etc/passwd ? Donner des exemples d’informations contenues dans ce fichier.
Le fichier /etc/passwd est une base de données textuelle d'informations sur les utilisateurs qui peuvent se connecter au système.
Nom d'utilisateur,Mot de passe,Identifiant d'utilisateur (UID),identifiant de groupe (GID) sont des exemple d'info contenues dans ce fichier
Question 4 : Comment trouver l’adresse de sous-réseau lorsqu’on ne connait que l’adresse IP d’une machine et le masque de sous-réseau ?
Question 1 : Donner une commande qui ajoute le droit de lecture au groupe sur tous les fichiers ayant l’extension tex du répertoire Texte de l’utilisateur Durand.
find ~Durand.tex -exec chmod g+r {}\;
Question 2 : Donner une commande qui affiche les processus s’exécutant sur la machine courante dont le nom contient la chaîne de caractères bash.
grep ’’bash’’ | ps
Question 3 : Donner une commande qui déplace tous les fichiers dont le nom commence par VS du répertoire courant dans le répertoire d’accueil de l’utilisateur RENE.
mv VS* ~RENE
Question 4 : Donner une commande qui affiche les noms de login des utilisateurs connectés triés par ordre alphabétique.
who -login | sort