Vous êtes sur la page 1sur 30

Atelier d’introduction et familiarisation avec l’environnement de bureau

Vérifier l’environnement bureau

echo $XDG_CURRENT_DESKTOP

Mise à jour de la distribution.

apt-get update
apt-get upgrade

Migration entre les environnements

Gnome.

apt-get install gnome


KDE.

apt-get install kde-standard


XFCE.

apt-get install xfce4


LXDE.

apt-get install lxde


MATE.

apt-get install mate-desktop-environment

1
Pr. L M D
Environnements de bureau sous Ubuntu

Installation minimale Installation complète


Gnome. Gnome.

sudo apt install gnome-core sudo apt install ubuntu-


desktop
KDE.
KDE.
sudo apt install kde-minimal
sudo apt install kubuntu-
XFCE.
desktop
sudo apt install xfce4 XFCE.
LXDE.
sudo apt install xubuntu-
desktop
sudo apt install lubuntu-core
LXDE.

sudo apt install lubuntu-


desktop

2
Pr. L M D
Atelier N°1 :

Prise en main
1. Quelle est la différence entre la
virtualisation, Dual boot et multi
boot?
2. Installer la distribution Ubuntu
Budgie (ou Desktop);
3. Personnaliser l’environnement de
travail (Raven, Plank, manipulation
des Docklets);
4. Changer le menu contextuel
(Nouveau fichier)

Infos système

1. Quel est le système installé?


2. Quelle est la distribution installée?
3. Quels sont les utilisateurs en cours
du système?
4. Ouvrir un nouveau terminal en
utilisant un autre compte.
5. Fermer ce terminal.

La commande man

1. Tester la commande man pour


obtenir de l'aide sur man.
2. Quelles sont les commandes
susceptibles d'être documentées
dans man?

Contenu de répertoires et de fichiers

1. Lister le contenu du répertoire /etc.


2. Lister de manière détaillée le
contenu du répertoire /etc.
3. Lister le contenu du répertoire /dev.
4. Lister le contenu du fichier
/etc/passwd.
5. Lister le contenu du fichier
/etc/shadow.

3
Pr. L M D
4
Pr. L M D
Atelier N°2

La commande man

Tester la commande
man pour obtenir de
l'aide sur man.
Quelles sont les
commandes
susceptibles d'être
documentées dans
man?

Contenu de répertoires et de fichiers ascii (texte)

Lister le contenu du
répertoire /etc.
Lister de manière
détaillée le contenu du
répertoire /etc.
Les fichiers nommés
"passwd", "shadow",
"group" et "gpasswd"
sont-ils présents
dans /etc?
Lister le contenu du
répertoire /dev.
Lister le contenu du
fichier /etc/passwd.
Lister le contenu du
fichier /etc/shadow.
Afficher par ordre
alphabétique les
utilisateurs définis
dans le fichier
/etc/passwd.
Rechercher tous les
fichiers du
répertoire /etc
contenant la chaine de
caractères "root".
Rechercher la

5
Pr. L M D
localisation du fichier
"stdio.h" dans le
système de fichier de
votre installation.

Commandes

Se localiser dans la
hiérarchie.
Détecter la présence de
fichiers/répertoires.
Entrer du texte dans
Mon_fichier.
Lister le contenu de
Mon_fichier.
Lister son propre
répertoire.
Lister les catalogues
/bin et /dev.
Créer sous votre
répertoire 2 sous-
répertoires:
"Source" et "Data".
Se positionner sous
"Source".
Lister le répertoire.
Revenir sous le
répertoire de départ et
détruire "Source".
Créer un deuxième
fichier Mon_fichier_2.
Copier chaque fichier
en fichier .old.
Créer l’arborescence
suivante :

Atelier N°3 :

6
Pr. L M D
Gestion des fichiers: A partir de l’arborescence suivante, répondre aux questions ci-dessous :

Question du cours : quel est la différence entre chemin relatif et chemin absolu ?

1. Placez-vous dans le dossier « Photos/ » puis créer trois répertoires en une seule ligne
de commande
2. Que se passe-t-il si vous tapez mkdir mkdir ?
3. Vous voulez détruire un répertoire, mais ça ne marche pas, pourquoi et comment
pouvoir le supprimer ?
4. Est-ce que mkdir peut prendre des options ?
5. Comment peut-on créer en une seule commande le répertoire parent et fils ?
6. Comment créer un répertoire en spécifiant des droits
7. Créer un fichier « fichierA » dans le sous dossier « Khadija/ »
8. Insérer « Bonjour » dans fichierA
9. Créer un fichier « fichierB » dans le sous dossier « Khadija/ »
10. Insérer « Hello » dans fichierB
11. Copier les deux fichiers « fichierA » et « fichierB » dans le répertoire « Aicha/ »
12. Quelle commande pouvons-nous utiliser pour relire le ficher « fichierA » par page ?
13. Exécuter les deux lignes suivantes et déduire l’effet de la commande

7
Pr. L M D
 rmdir –p Photos/Anniversaires/Ahmed/
 rmdir –p Photos/Anniversaires/Khadija/
14. Placer vous dans le sous répertoire « Photos/» et créer les deux hiérarchies suivantes :
 personnel/work/conf2022/
 personnel/work/workshop/
15. Que représente « ~ » le symbole que vous aurez quand vous vous loguez (au niveau
du prompt)?
16. Accéder directement au dossier « conf2022/»
17. Accéder directement au dossier « workshop/»
18. Revenir directement au dossier « Photos/ »
19. Afficher les droits du dossier « personnel/ »
20. Créer un autre dossier « Sauvegardes/ » dans « Photos/»
21. Copier le dossier « personnel » dans « Sauvegardes/Fiches/ »
22. Revenir au dossier de l’utilisateur courant.
23. Couper/coller le fichier « fichierA » dans le dossier « Fiches/»
24. Renommer le dossier « Fiches/» (« Share /»)
25. Annuler l’effet des deux questions précédentes et refaire en une seule commande.
26. Quelle est la différence entre un lien physique et lien symbolique ?
27. Créer un lien symbolique pour le dossier « Share/» dans le bureau
28. Créer un lien physique du dossier « Share/ » dans le bureau
29. Quel est la différence entre les deux dans le cas de la suppression ?

8
Pr. L M D
Atelier N°4

Rappel :

1. Créer un répertoire « fiches » dans « anniversaires »


2. Copier le répertoire « logiciels/fiches » dans « anniversaires »
3. Vous avez un fichier « fichierA » dans « Khadija » et vous êtes dans le dossier
« Ahmed », comment faire pour ramener le fichier dans ce dernier dossier.

Les commandes pushd, popd et dirs


Résumé :
Les commandes pushd, popd et dirs sont des commandes intégrées au shell, et son
comportement peut légèrement différer d'un shell à l'autre. Nous couvrirons la version Bash
intégrée des commandes
Pushd dossier
dirs -l -v
Lors du comptage de haut en bas (ou de gauche à droite), l'index du répertoire est 2.
pushd +2
Lorsqu'il est utilisé sans aucun argument, pushd basculera les deux répertoires supérieurs et
fera du nouveau sommet le répertoire courant. C'est la même chose que lors de l'utilisation de
la commande cd -
La commande popd prend la forme:
popd
Lorsqu'il est utilisé sans argument, popd supprime le répertoire supérieur de la pile et accède
au nouveau répertoire supérieur.
L'option -n supprime la modification du répertoire par défaut et supprime le deuxième
élément de la pile.
Identique à pushd , popd accepte également les options +N et -N qui peuvent être utilisées
pour supprimer le Nth répertoire de la pile.
1. Empiler la liste suivante :

/home/Photos
/etc
/bin
~
~/Photos/anniversaires/Aicha
2. Afficher la liste entière
3. Afficher le deuxième élément de la liste
4. Faire une rotation de trois éléments de la liste.
5. Dépiler le premier élément
6. Afficher le dernier élément

9
Pr. L M D
Les droits d’accès :

1. Vous est-il possible de faire une copie du fichier /etc/passwd? Vous est-il possible de
supprimer ou de modifier le fichier /etc/passwd?
Répeter ces tentatives en tant qu'utilisateur root.
Expliquer la situation à l’aide de la commande ls -l.

2. A l’aide de la commande id, vérifier votre identité et le(s) groupe(s) au(x)quel(s) vous
appartenez.

3. Créer un petit fichier texte (de contenu quelconque), qui soit lisible par tout le monde,
mais non modifiable (même pas par vous).

4. Créer un répertoire nommé "Secret", dont le contenu est visible uniquement par vous-
même.
Les fichiers placés dans ce répertoire sont-ils lisibles par d’autres membres de votre
groupe?

5. Créer un répertoire nommé "Connaisseurs" tel que les autres utilisateurs ne puissent
pas lister son contenu mais puissent lire les fichiers qui y sont placés.
On obtiendra:
ls Connaisseurs
ls : Connaisseurs: Permission denied
cat Connaisseurs/toto
<...le contenu du fichier toto (s’il existe)...>

10
Pr. L M D
6. Changer les droits d’un fichier fichierA pour que tous ceux de votre groupe puissent
écrire dedans

7. Donner en une seule ligne le droit d’exécution à tous les utilisateurs d’un fichier
fichierD qui n’a jusqu’alors que les droits standards (-rw-r--r--)

8. Le fichier fichierR a les droits suivants (-rwxr--r--), modifiez-en les droits en une ligne
de commande de sorte que le propriétaire n’ait plus que le droit de lecture

9. Modifier les droits du fichier précèdent (-rwxr—r--) de sorte que le groupe et les
autres utilisateurs aient les mêmes droits que le propriétaire.

10. Quelle option permet de modifier récursivement les droits d’un répertoire et des
fichiers qu’il contient ?

11. Quelle option de mkdir permet de créer un répertoire en spécifiant les droits sur ce
répertoire ?

12. Vous avez chez vous un répertoire « directory/ » qui contient un fichier « file ». Créez
un lien physique sur « directory/file » appelé « filep », dans votre répertoire d'accueil
(HOME). Comparez les contenus de directory/file et de « filep ». Que contient «
filep » ?

13. Même question avec un lien symbolique « files ».

14. Quelles sont les différences entre les liens durs et les liens symboliques ?

15. Dans quel cas ne peut-on pas faire de lien physique ? Que faut-il faire ?

16. Quel est l'effet de chmod sur un lien ?

11
Pr. L M D
Rappel : Rechercher des fichiers

find : Recherche la localisation d'un fichier dans l'arborescence d’un ou plusieurs


systèmes de fichiers.

Atelier N°5
Localisation du fichier fstab en cherchant à partir de la racine

Les options de find


1. Comment chercher tous les fichiers dont les noms commencent par un «a» majuscule ou
une minuscule, suivi d'éventuellement quelques lettres ou chiffres, et se terminent par un
chiffre entre 3 et 6 ?

2. Comment fait-on pour indiquer que le fichier recherché a été modifié il y a plus de 30
jours ? Il y a 30 jours ? Il y a moins de 30 jours?

3. Comment faire pour dire que le fichier a été modifié plus récemment qu'un autre fichier
donné ?

4. Comment fait-on pour spécifier que le fichier recherché est un répertoire ?

5. Comment indiquer que le fichier recherché à une taille supérieure à une taille donnée ?

12
Pr. L M D
Exécuter des commandes sur les fichiers trouvés
Utiliser find pour effacer tous vos fichiers de sauvegarde (terminés par un tilde) qui ont plus
d'un mois.
La ligne utilisée pour trouver ces fichiers et la suivante :
find . -mtime +30 -name '*~'
Il y a deux façons de faire exécuter des commandes sur les fichiers trouvés par find : utiliser
l'option «-exec commande», ou utiliser un pipe avec xargs.
1. –exec commande exécute la commande sur le fichier courant. La commande est
terminée par le marqueur ; qu'il faut protéger du shell avec un backslash. Le fichier
courant est désigné par la chaîne {}.
La solution avec -exec est en fait très lourde, car elle crée un nouveau processus pour
chaque fichier; il vaut mieux rediriger le résultat de find avec un pipe et xargs.

2. Quelle différence y a-t-il entre un simple pipe et «| xargs» ? Pour la comprendre, voici
un exercice : cherchez tous les fichiers contenus dans /usr/local/lib/texmf/tex et
cherchez dedans le mot «supertab».

Enchainement des commandes sous le terminal :


Le point-virgule
Il existe sous Linux trois caractères qui permettent l'enchainement des commandes, il s'agit de ";", "||"
et "&&". Chacun de ces trois caractères ont un type d’exécution différent au niveau de l'enchainement
des commandes.
mkdir /home/~/dossier1/; cd /home/~/dossier1/ ; touch file1

Le "&&"
Il est parfois utile d'exécuter une commande que si les commandes précédentes ont réussies. Par
exemple si l'on souhaite vérifier l'existence d'un dossier et, si il existe, y créer un fichier.
cd /home/~/dossier1 && touch file1

Le "||"
Dans d'autres cas, il peut être intéressant d'exécuter une commande uniquement si la
commande précédente ne se déroule pas correctement au lieu de mettre fin à toute la ligne de
commande. Cela est possible avec les caractères "||".

Par exemple si l'on souhaite, comme auparavant, voir si un dossier existe et si c'est le cas y
créer un fichier. On peut également vouloir créer le dossier s’il n'est pas encore présent :

cd /home/~/dossier1 || mkdir / /home/~/dossier1 && touch file1

C'est un exemple simple mais on peut imaginer des choses beaucoup plus complexes. Ici, si le
retour du paramètre de vérification de l'exécution de la commande n'est pas "0" (= la
commande "cd /home/~/dossier1" à échouée), on créera le fichier avec la commande
"mkdir". Dans un second temps suite à cela on créera le fichier "file1".
13
Pr. L M D
 du -h :Affiche la taille en Ko, Mo, Go.
 du –a : (du –ah) Affiche la taille des dossiers ET des fichiers.
 du - s : Affiche juste l’espace total occupé par le dossier, et donc n’affice pas l’espace des
sous-dossiers. ( pour plus de lisibilité du –sh, je le combine à –h)

14
Pr. L M D
Atelier N°6 :
Commande d’observation du système

Commande Fonctionnalité Exemple d’utilisation


hostname
uname
who
finger
du –h
du –a
du -s
Df
Tty
History
Htop
head
tail
wget
Le bouton
TAB

15
Pr. L M D
Atelier N°7
1. Créer à la volée 10 fichiers de « fichier1 » à « fichier10 » contenant « Bonjour »
…………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………
2. Compresser un fichier
…………………………………………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
3. Décompresser ce fichier puis vérifier la taille
…………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………
4. ou bien
…………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………
5. Compresser un fichier de façon optimisée :
…………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………
6. Compresser plusieurs fichiers en un
…………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………
7. bzip2 est une alternative à gzip, plus efficace mais moins rapide. (installer le package bzip2)
…………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………
8. Décompresser un fichier bzippé :
…………………………………………………………………………………………………………………………………………………
……………………………………………………………………………………………………………………
9. ou encore
…………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………
10. tar : archivage sans compression, pour archiver plusieurs fichiers ou un dossier, la commande
est la même :
…………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………
11. Pour extraire une archive tar, tapez :
…………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………
12. tar : archivage avec compression, Il suffit pour cela d’ajouter à la commande tar une option
de compression : z : compression Gunzip j : compression Bzip2
Pour archiver et compresser un dossier avec Gunzip, tapez :
…………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………
13. Pour extraire une archive tar.gz, tapez :
…………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………
14. De même pour Bzip2 :
…………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………

16
Pr. L M D
Atelier N° 8

1. Quelles sont les options de grep qui permettent d'obtenir des lignes de contexte (qui
précèdent et/ou suivent la ligne où figure le mot) ?
Il y en a plusieurs, qui se recoupent :
o -num : le numéro indique le nombre de lignes de contexte que l'on veut voir figurer avant et
après la ligne où figure le mot recherché. Par exemple, si on veut trois lignes de contexte, avant et
après la mot (soit sept lignes au total), on tape :
o grep -3 ...
o -A num (after) : le numéro indique le nombre de lignes qui doivent suivre la ligne où figure le
mot. Si on en veut quatre, on tapera :
o grep -A 4 ...
o -B num (before) : le numéro indique le nombre de lignes qui doivent précéder la ligne où figure
le mot. Si on en veut dix, on tape :
o grep -B 10 ...
o -C (context), qui donne deux lignes de contexte avant et après. En fait, les trois lignes suivantes
sont strictement équivalentes :
o grep -2 ...
o grep -C ...
o grep -A 2 -B 2 ...
2. Comment faire apparaître le numéro de la ligne où figure le mot recherché ?
C'est l'option -n (number) qui sert à cela; le numéro figure tout au début de la ligne, suivi d'un
deux-points (:) et du texte. Par exemple :
bireme ~ $ grep -n violon verlaine.tex
12:des violons de l'automne
Quand on fait une recherche dans plusieurs fichiers, le nom du fichier figure d'abord, puis le
numéro de la ligne, et enfin le texte, le tout séparé par des deux-points. Par exemple :
bireme ~ $ grep -n violon *
verlaine.tex:12:des violons de l'automne
orchestre:45:Cordes : contrebasse, violoncelle, alto, violons.
Que se passe-t-il quand on demande également des lignes de contexte ?
La disposition générale ne change pas, par contre, le signe utilisé pour séparer la ligne de son
numéro est un tiret (-) quand il s'agit des lignes de contexte, et un deux-points quand il s'agit de la
ligne voulue. Par exemple :
bireme ~ $" grep -nC violon verlaine.tex
10-
11-Les sanglots longs
12:des violons de l'automne
13-bercent mon coeur
14-d'une langueur monotone
3. Comment faire pour afficher le nombre d'occurrences du mot recherché ?
On utilise l'option -c (count) :
bireme ~ $ grep -c violon *
verlaine.tex:1
orchestre:1
4. Comment faire pour que grep ignore la casse des caractères (différence entre majuscules
et minuscules) dans sa recherche ?
Par défaut, grep fait la différence entre les majuscules et les minuscules; pour invalider ce
comportement, on utilise l'option -i (ignorecase).
5. Comment faire pour faire apparaître non pas les lignes où figurent le mot, mais les noms
des fichiers ?

17
Pr. L M D
C'est l'option -l qui permet de faire cela : afficher les noms des fichiers où figure au moins une
fois la chaîne de caractères recherchée.
6. Comment faire apparaître les lignes où ne figurent pas le mot recherché ?
On veut en fait inverser le sens de la recherche : c'est l'option -v qui fait cela.
7. Comment faire apparaître les noms des fichiers ne contenant pas le mot recherché ?
On utilise l'option -L, qui affiche les noms de fichiers où ne figurent pas la chaîne de caractères
recherchée. Il ne faut bien sûr pas confondre les options -l et -L...
8. Comment faire pour que grep ne recherche que les lignes où figure le mot tel quel, et
non pas ses variantes ?
C'est l'option -w (comme word) qui sert à cela : un mot complet est délimité comme suit :
o Début : la chaîne de caractères est placée au début d'une ligne, ou précédée d'un blanc, d'une
tabulation ou d'une ponctuation.
o Fin : la chaîne de caractère est placée en fin de ligne, ou suivie d'un blanc, d'une tabulation ou
d'une ponctuation.
Si donc on veut chercher «travail» et aucune forme dérivée de ce mot, on écrit :
grep -w travail mon-fichier
9. Comment faire pour chercher plusieurs mots à la fois en faisant apparaître les numéros
des lignes ?
On veut chercher toutes les occurences des mots «terre» et «ciel» dans les deux premiers chapitres
de la première partie de Germinal, avec les numéros des lignes. On propose deux solutions, la
première utilisant les ressources de la syntaxe de grep, la seconde utilisant l'option -f avec un
fichier.
1. Syntaxe de grep : La structure \(mot1\|mot2\) permet de chercher plusieurs mots. Ici, on
tape la ligne suivante :
2. grep '\(ciel\|terre\)' fichier
On met des apostrophes de part et d'autre de l'expression pour la protéger contre le shell, c'est-à-
dire pour que le shell ne cherche pas à interpréter l'expression.
3. Option «-f fichier» : dans un fichier quelconque, que nous appellerons liste, on indique les
mots que l'on recherche : «ciel» et «terre». Chaque ligne correspond à un mot recherché. Il ne faut
donc pas mettre de ligne comme
4. terre ciel car le programme chercherait la chaîne de caractères «terre ciel», qui est assez
improbable en français. Il ne faut pas non plus laisser de ligne blanche : le programme afficherait
l'ensemble du texte. Quelle que soit la solution retenue, on veut ensuite afficher le numéro des
lignes (option -n); d'autre part, pour que la recherche soit exhaustive, il vaut mieux que grep ne
fasse pas de différence entre les majuscules et les minuscules, avec l'option -i (ignore case,
ignorer la casse des caractères). Il faut aussi décider si on cherche les mots tels quels, sans leurs
variantes (comme «terre» au pluriel), ou si on accepte ces variantes. Si on ne veut que le mot sans
ses dérivés, on utilise l'option -w.
Pour désigner les deux fichiers où faire la recherche, on peut les écrire littéralement :
zola1.txt zola2.txt
ou, mieux, utiliser les joker du shell :
zola[12].txt
[12] signifie «le
caractère 1 ou le caractère 2».
Finalement, on peut taper, au choix :
grep -inw -f liste zola1.txt zola2.txt
grep -inw -f liste zola[12].txt
grep -inw '\(ciel\|terre\)' zola1.txt zola2.txt
grep -inw '\(ciel\|terre\)' zola[12].txt
Et on obtient :
zola1.txt:13:ciel, le pavé se déroulait avec la rectitude d'une jetée, au
milieu de

18
Pr. L M D
zola1.txt:36:brûlaient si haut dans le ciel mort, pareils à des lunes fumeuses.
Mais, au
zola1.txt:50:besogne. Les ouvriers de la coupe à terre avaient dû travailler
tar d, on
zola1.txt:124:terre, lorsqu'un accès de toux annonça le retour du charretier.
Le ntement,
zola1.txt:191:bleues en plein ciel, comme des torches géantes. C'était
d'une tristesse
zola1.txt:207: Le manoeuvre, après avoir vidé les berlines, s'était
assis à
terre,
zola1.txt:222:fois avec tout le poil roussi, une autre avec de la terre
jusque
dans le
(...)
Le résultat est un peu différent quand on n'utilise pas l'option -w.
Introduction aux expressions régulières
grep recherche des chaînes de caractères, qui peuvent être un mot complet («terre»), une suite de
lettres («tre»), ou une expression régulière. Les expressions régulières sont des formules qui
représentent des chaînes de caractères. On cherche alors non pas un mot précis, mais des suites de
caractères correspondant aux critères demandés. Elles sont d'un usage fréquent avec grep bien
sûr, mais aussi avec des commandes comme less, ou encore au sein d'un éditeur.
«Expressions régulières» (Regular expressions en anglais) se traduisent en bon français par
«expressions rationnelles», mais l'usage est de dire «régulières».
Ces exercices n'entendent pas remplacer un cours sur les expressions régulières, ni faire le tour de
leurs possibilités.
1. Chercher toutes les lignes commençant par «a» ou «A».
Il faut indiquer que l'on veut le début de la ligne, avec le chapeau (caret en anglais). Ensuite, on
veut préciser que la ligne commence par un «a» minuscule ou majuscule. Il y a deux façons de le
faire :
o Utiliser l'option -i qui fait ignorer la différence entre les majuscules et le
minuscules.
o Dire que l'on cherche un «a» ou un «A». C'est à cela que servent les crochets : [abc] signifie
«a ou b ou c». Ici, ce sera [aA].
Enfin, il faut protéger les signes contre le shell, pour qu'il ne les interprète pas; on met donc
l'expression entre apostrophes. Remarque : la protection des expressions régulières contre le shell
est une question complexe.... Il faut donc écrire :
grep -i '^a' fichier
ou
grep '^[aA]' fichier
2. Chercher toutes les lignes finissant par «rs»
C'est le dollar ($) qui représente la fin de la ligne. Il faut donc écrire :
grep 'rs$' fichier
3. Chercher toutes les lignes contenant au moins un chiffre
Pour désigner un chiffre, on peut en indiquer une liste entre crochets : [0123456789]. Il est plus
simple d'utiliser une classe de caractères : [0-9] qui désigne, comme la solution précédente,
n'importe quel chiffre de zéro à neuf.
Il faut donc taper :
grep '[0-9]' fichier
4. Chercher toutes les lignes commençant par une majuscule

19
Pr. L M D
Comme on l'a vu, c'est le chapeau qui indique le début de la ligne. Pour indiquer que l'on cherche
une majuscule, on peut soit en donner une liste ([ABCDEFGHIJKLMNOPQRSTUVWXYZ]), soit utiliser
une classe de caractères : [A-Z], la seconde solution étant, de loin, préférable...
Il faut donc taper :
grep '^[A-Z]' fichier
5. Chercher toutes les lignes commençant par «B», «E» ou «Q»
Il faut indiquer entre crochets les trois lettres recherchées :
grep '^[BEQ]' fichier
6. Chercher toutes les lignes finissant par un point d'exclamation
Le point d'exclamation n'a pas de signification particulière avec grep, on peut donc le mettre tel
quel :
grep '!$' fichier
7. Chercher toutes les lignes ne finissant pas par un signe de ponctuation (point, virgule,
point-virgule, deux-points, point d'interrogation, point d'exclamation)
Il faut donner une liste de caractères, que l'on ne veut pas voir figurer; la liste sera entre crochets,
comme on l'a déjà vu, et c'est le chapeau qui signifiera, dans ce contexte, «sauf».
Par exemple, si on cherche tous les «a», sauf ceux suivi de «b», «c» ou «t», on écrit :
grep 'a[^bct]'
Il y a une seconde difficulté, qui vient de ce que certains caractères sont spéciaux avec grep.
Vous vous doutez que le chapeau est spécial quand il est placé au début de l'expression, et que le
dollar l'est quand il est placé en fin d'expression. Dans notre cas :
o Le point désigne n'importe quel caractère.
o Le point d'interrogation signifie «le caractère qui précède apparaît 0 ou 1 fois». Avec egrep, il
fonctionne tout seul, avec grep, il faut le faire précéder d'un backslash pour qu'il fonctionne; par
exemple (avec grep), pour chercher «charbon» ou «vagabond», on écrit :
o grep 'ar?bo' fichier
(chercher la suite de lettre «abo» avec un «r» facultatif entre le «a» et le «b»).
Pour que grep interprète littéralement ces caractères, et ne les considère plus comme spéciaux, il
faut les faire précéder d'un backslash (\). Si par exemple vous cherchez toutes les lignes qui se
terminent par un point, il faut taper :
grep '\.$' fichier
Dans notre cas cependant, ces caractères sont protégés par les crochets. On peut donc écrire :
grep '[^.,;:?!]$' fichier
On peut aussi utiliser l'option -v,
qui prend toutes les lignes où ne figure pas une chaîne de
caractères donnée; dans ce cas, on tape :
grep -v '[.,;:?!]$' fichier
8. Comment chercher tous les mots contenant un «r» précédé de n'importe quelle lettre
majuscule ou minuscule ?
On cherche une chaîne de caractères qui soit indifféremment au début ou au milieu d'un mot.
N'importe quelle lettre, ce sont les classes de caractères [a-zA-Z] ou [:alpha:], qui sont
équivalentes.
Il y a une petite subtilité avec l'emploi de classes du second type; elles désignent un groupe de
caractères, et il faut mettre une seconde paire de crochets pour dire «n'importe quel caractère de
cette classe prédéfinie». On tape donc au choix :
grep '[a-zA-Z]r' fichier'
ou
grep '[[:alpha:]]r' fichier'
Attention, dans ces listes ne sont pas compris les caractères accentués...
9. Chercher tous les mots dont la seconde lettre est un «r».
C'est le symbole \< qui désigne un début de mot. La première lettre du mot est indifférente, la
seconde est un «r». On écrit donc :

20
Pr. L M D
grep '\<.r' fichier
Il y a cependant un problème avec les caractères accentués, que grep considère comme des
blancs. Dans ce cas, il vaut mieux procéder autrement : un mot est précédé d'un début de ligne, ou
d'un blanc ou d'une tabulation. Un début de ligne, c'est le chapeau, un blanc ou une tabulation,
c'est la classe de caractères [:space:].
On va se servir du pipe (|) qui signifie «ou». Avec grep, il faut backslasher le pipe, avec egrep
ce n'est pas nécessaire. On écrit donc (avec grep) :
grep '^.r|[[:space:]].r' fichier
Ce n'est quand même pas si simple; les mots peuvent être précédés d'un tiret (mots composés),
d'une apostrophe, de guillemets divers (``, ", «, <<), et, si l'auteur du texte n'est pas respectueux
des règles de typographie, d'une ponctuation. Il y a donc bien des cas à envisager...

21
Pr. L M D
Atelier N°9: Gestion des utilisateurs et des groupes

Qui est utilisateur ?


Le système, dès son installation, avant même la première connexion au système a créé des users
système.

Un utilisateur n'est donc pas uniquement une personne physique, le système a besoin d'utilisateurs
pour sa gestion interne, notamment comme propriétaire des divers processus.

La commande ps aux | less montre qu'avant toute connexion d'utilisateur humain (repérée
par les lignes login --user), root a lancé init, et la plupart des services, crond, inetd,
lpd, smbd, ... , avant de lancer les connexions utilisateurs dans les consoles, y compris
éventuellement la sienne !

Les principales commandes


useradd, usermod, userdel gestion des comptes utilisateur
groupadd, groupmod, gestion des groupes
groupdel
pwck, grpck vérification des fichiers
passwd changer le mot de passe d'un
utilisateur
chfn, id, groups, finger , utilitaires divers
getent
Gestion des comptes

• Créer un compte pour un nouvel utilisateur

Cela signifie lui permettre d'être connu du poste local, s'y loguer, avoir un accès complet sur
son rép. personnel.

Mais aussi dans une configuration réseau, de pouvoir se connecter à son compte par telnet
et ftp, et de pouvoir bénéficier de services réseau de partage distant (sous Linux par NFS et
sous Windows par SMB).

• Pour créer l'utilisateur stagex, root passe la commande :


useradd stagex Ceci
crée :

• le répertoire personnel /home/stagex, portant par défaut le nom du compte  une nouvelle
entrée dans les 2 fichiers fondamentaux /etc/passwd et /etc/group.
• Pour connaitre les options de useradd (indispensable pour gérer les comptes à l'aide de
scripts)

22
Pr. L M D
• Pour lui attribuer le mot de passe :
passwd stagex

saisir 2 fois stgx

• Supprimer le compte d'un utilisateur (non connecté), au hasard .. user11. userdel [-r] user11
L'option -r supprime aussi le rép. personnel et les fichiers de l'utilisateur

La commande supprime toute trace de l'utilisateur dans le fichier de configuration :


/etc/passwd y compris dans les groupes d'utiliseurs.

• Modifier le compte de l'utilisateur user1 usermod [options] user11


Les options sont les mêmes que useradd usermod -G stagiaire,prof stagex : stagex devient
membre des 2 groupes stagiaire et profs (à l'exclusion de tout autre groupe secondaire)

Manipulations

Sous l'identité de root

1. Créer quelques utilisateurs stagey et user11


2. Effectuer des vérifications : possibilité immédiate de se loguer sous ces comptes, création de
leur rép. personnel dans /home.
3. Essayer de créer un compte déjà existant.
4. Supprimer sans regret le compte de user11. Son rép. personnel a-t-il été supprimé ?

Remarques

• Attention : si root passe la commande passwd il s'apprête à redéfinir son propre mot de
passe !
• Un utilisateur quelconque ne peut pas créer de compte, même s'il a le privilège de faire
partie du groupe root. A tester !
• Par contre, il peut modifier lui-même son mot de passe.
• Voir les diverses options avec useradd -h

Les groupes

• Un groupe est, aussi pour Linux, un ensemble d'utilisateurs qui partagent les mêmes fichiers
et répertoires. Nous verrons que les fichiers accordent des droits d'accès réglables à ces
groupes.
• Chaque utilisateur doit faire partie au moins d'un groupe, son groupe primaire. Celui-ci est
défini au moment de la création du compte, et par défaut, l'utilisateur appartient à un
nouveau groupe créé, portant son nom.
• Ainsi, dans /etc/passwd chaque utilisateur possède un groupe par défaut, précisé par son
identifiant gid dans ce fichier.

23
Pr. L M D
• L'appartenance au groupe primaire n'étant pas exclusive, tout utilisateur peut faire partie de
plusieurs autres groupes, appelés ses groupes secondaires.
Mais le rôle joué par le groupe primaire demeure prépondérant, comme nous le verrons
dans le système des permissions des fichiers.

• Pour lister tous les groupes (primaires et secondaires) d'un utilisateur :


groups stagex

• Pour créer un nouveau groupe groupadd stagiaire


• Supprimer un groupe, au hasard. encore user11. groupdel user11
Le groupe est supprimé du fichier /etc/group.

• Pour ajouter un utilisateur à un groupe


Le plus simple est d'éditer le fichier /etc/group et d'ajouter une liste d'utilisateurs (séparés
par des virgules) sur la ligne du groupe.

Manipulations
Il s'agit de créer un groupe nommé stagiaire dont les membres sont les comptes
stagex. On donnera ensuite à ce groupe des droits complets sur un répertoire
partagé. Comme root :

1. créer le groupe stagiaire :


groupadd stagiaire

2. ajouter quelques comptes stagex dans ce groupe


3. vérifier le résultat avec la commande groups
Visite des coulisses
• Tout ce qui concerne la gestion et l'authentification des utilisateurs est inscrit dans un seul
fichier /etc/passwd
• La gestion des groupes est assurée par /etc/group
• Les mots de passe cryptés sont maintenant placés dans /etc/shadow, par sécurité lisible
seulement par root.
Structure de /etc/passwd

Ce fichier comprend 7 champs, séparés par le symbole :

1. nom de connexion
2. ancienne place du mot de passe crypté
3. numéro d'utilisateur uid, sa valeur est le véritable identifiant pour le système Linux; l'uid de
root est 0, le système attribut conventionnellement un uid à partir de 500 aux comptes créés.
4. numéro de groupe gid, dans lequel se touve l'utilisateur par défaut; le gid de root est 0, des
groupes d'utilisateurs au delà de 500
5. nom complet, il peut être suivi d'une liste de renseignements personnels (cf chfn)
6. rép. personnel (c'est également le rép. de connexion)
7. shell, interprétateur de commandes (par défaut /bin/bash)

Structure de /etc/group
24
Pr. L M D
Ce fichier comprend 4 champs, séparés par le symbole :

1. nom du groupe
2. x pour remplacer un mot de passe non attribué maintenant
3. numéro de groupe, c-à-d l'identifiant gid
4. la liste des membres du groupe

Manipulations
Editer ces fichiers (utiliser l'utilitaire mc, sélectionner et éditer avec F3)

Examiner les lignes correspondant aux comptes créés : où se trouvent les rép. personnels ? quel est
leur groupe par défaut ?

Compléments
• La structure d'une ligne de /etc/passwd et de /etc/group
• login:x:uid:gid:commentaires:home:shell
• groupe:x:gid:liste-groupes-secondaires
• Options de la commande useradd (pour détails cf man useradd)
Nous avons jusqu'ici utilisé cette commande avec ses options par défaut.

La maitrise de cette commande est indispensable pour écrire des scripts de génération
automatique de comptes.

Syntaxe : useradd [options] nom_login

Exemple : useradd user1 -u 1200 -g 520 -G groupes -s /bin/bash


Options :

-u uid pour fixer l'identifiant uid


-g groupe-primaire
fixe l'appartenance de l'utilisateur à
une liste
-G liste de groupes secondaires (séparateur ,
sans espace)
par défaut, attribution du shell par
-s shell
défaut bash
-c commentaire
-d rep. personnel par défaut dans le répertoire /home
-m pour créer le répertoire personnel

Pour décrire un utilisateur : chfn

25
Pr. L M D
Cette commande permet d'indiquer dans le champ numéro 5 du fichier /etc/passwd différentes
informations sur un utilisateur, son nom complet, son bureau, ses numeros de téléphone (séparées
par des virgules).

Manipulation
[user11@p01 /] chfn

Changing finger information for user11


Password : zig1

Name [user11] : Monsieur USER1

Office [] : professeur au lycee Papillon


Office Phone [] : 0199999999 Home
Phone [] :

Cryptage des mots de passe


Pour des questions de sécurité, les mots de passe cryptés ne sont stockés dans /etc/passwd qui doit
etre accessible en lecture par tous

La commande /usr/sbin/pwconv est chargée de transférer les mots de passes cryptés, dans
/etc/shadow.

Pour plus de détails, consulter man pwconv

26
Pr. L M D
Atelier 9 (suite) : Gestion des utilisateurs et des groupes
Les manipulations suivantes s'effectuent sous le compte root

• Création ligne de commande


Syntaxe complète : man adduser
useradd user1
Dans une autre console, pouvez-vous vous connecter comme
user1 ? passwd user1 donner le mot de passe
Connectez-vous alors comme user1, avez vous un rép. personnel ?

Passer dans la console root et tenter de supprimer le compte


user1 userdel user1 le pouvez-vous ? Faites en sorte d'effectuer
la suppression
......

#userdel user1

• Création interactive
# adduser

Enter a username to add: --> user1


Comprendre chaque ligne affichée Enter
new UNIX passwd :

...

Voir l'effet de cette création :

- dans /etc/passwd
- dans /etc/group
- dans /etc/shadow
- le répertoire personnel /home/user1
- comparer /home/user1 et /etc/skel
• Suspension d'un compte passwd
-l user1 essayer de connecter
user1 passwd -u user1
remet en service ce compte

• Suppression d'un compte userdel


-r user1
verifiez l'effet de l'option -r : suppression aussi du rép. Perso

• Forcer le changement d'un mot


de passepasswd -e user1 user1
se reconnecte ..
• Gestions des groupes groupadd
stagiaire vérifiez dans /etc/group
adduser stage stagiaire quel effet
dans /etc/group ?

27
Pr. L M D
deluser stage stagiaire groupdel
stagiaire

28
Pr. L M D
Atelier 10 : Mise en place d'un espace de travail pour 4 utilisateurs

Définir le lot de commandes à exécuter pour créer 4 utilisateurs en suivant les règles
suivantes:

 Création de 2 groupes.
 Les premier et deuxième utilisateurs sont membres du premier groupe.
 Les troisième et quatrième utilisateurs sont membres du second groupe.
 Le deuxième utilisateur est aussi membre du second groupe.
 Le quatrième utilisateur est aussi membre du premier groupe.
 Outre leur répertoire de travail, les utilisateurs ont accès à un répertoire commun
/home/groupe1 et/ou /home/groupe2 suivant leur groupe. Dans ce répertoire, ils
peuvent écrire, créer des fichiers mais ne peuvent pas effacer les fichiers.

1. Détaillez les étapes de création des groupes, des utilisateurs et des répertoires en
indiquant quels fichiers vous utilisez et quelles commandes vous utilisez sur ces
fichiers.
2. Modifiez les profils des utilisateurs pour qu'au login, le répertoire d'accueil sur lequel
il souhaite travailler lui soit demandé (s'il entre U, il sera sous son répertoire, s'il entre
G, il sera sous le répertoire de son groupe).
3. Parmi ces 3 valeurs: 066, 067, 077, quel umask positionneriez-vous? Expliquez pour
chaque valeur quelles sont les conséquences de ce choix.

29
Pr. L M D
Atelier N°11 : Gestion des processus

1. Affichez la liste des processus associés à votre terminal.

2. Affichez la liste des processus dont vous êtes propriétaire. Recommencez en utilisant
l'option -l.

3. À quoi correspondent les colonnes PID et PPID ?

4. Lancez une commande longue en arrière-plan.

5. Quel est le comportement du processus associé lorsqu'il reçoit des signaux

6. Utilisez la commande nice pour lancer des commandes ayant une faible priorité.

7. Interprétez la hiérarchie des processus qui vous appartiennent.

8. La commande ps | wc compte deux processus en plus de ceux qui existent réellement


lorsqu'on lance la commande. Pourquoi ?

9. Donner deux commandes pour reprendre l'exécution d'une instruction interrompue par un
^Z.

30
Pr. L M D

Vous aimerez peut-être aussi