Blog ENI : Toute la veille numérique !
💥 Un livre PAPIER acheté
= La version EN LIGNE offerte pendant 1 an !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
  1. Livres et vidéos
  2. Linux
  3. Les tâches administratives
Extrait - Linux Préparation à la certification LPIC-1 (examens LPI 101 et LPI 102) - [7e édition]
Extraits du livre
Linux Préparation à la certification LPIC-1 (examens LPI 101 et LPI 102) - [7e édition]
1 avis
Revenir à la page d'achat du livre

Les tâches administratives

Prérequis et objectifs

1. Prérequis

Disposer des droits root ou sudo root.

Savoir utiliser le shell et les commandes.

Savoir utiliser un éditeur.

2. Objectifs

À la fin de ce chapitre, vous serez en mesure :

De créer et modifier des utilisateurs et des groupes.

De mettre en place une politique de mot de passe.

De diffuser les notifications aux utilisateurs.

De connaître le rôle des modules PAM.

De gérer les impressions.

D’automatiser des tâches.

D’utiliser des outils de backup.

De mettre le système à l’heure.

Administration des utilisateurs

Linux est un système multi-utilisateurs. Il permet de partager des ressources entre utilisateurs, en définissant et en contrôlant qui a accès à quelles ressources. Le modèle de sécurité de gestion des contrôles d’accès s’appuie sur des comptes utilisateurs, protégés par des mots de passe. Pour accéder à une ressource, un utilisateur doit fournir, directement ou indirectement, un compte utilisateur (identification) et son mot de passe (authentification).

L’identification, c’est savoir qui est qui, afin de déterminer les droits de la personne qui se connecte. Un utilisateur est identifié par un login.

L’authentification, c’est apporter la preuve de qui on est, par exemple via un secret partagé entre l’utilisateur et le système, et connus d’eux seuls. L’utilisateur est généralement authentifié par un mot de passe, mais ça peut aussi être une clé.

1. Les utilisateurs

Un utilisateur est associé à un nom de connexion, un numéro d’identifiant utilisateur (UID) et au moins un numéro d’identifiant de groupe (GID).

  • UID : User ID.

  • GID : Group ID.

Les UID et les GID sont uniques. Le nom d’utilisateur est unique, mais il est possible d’associer plusieurs noms d’utilisateurs au même UID.

L’UID identifie l’utilisateur (ou le compte de service applicatif) tout au long de sa connexion. Il est utilisé pour le contrôle de ses droits et de ceux des processus qu’il a lancés. Ce sont les UID et GID qui sont stockés au sein de la table des inodes, dans la table des processus, etc., et non les noms d’utilisateurs ou de groupes.

L’utilisateur dispose des attributs de base suivants :

  • Un nom d’utilisateur.

  • Un mot de passe.

  • Un UID.

  • Un GID correspondant à son groupe principal.

  • Un descriptif.

  • Un répertoire de connexion.

  • Une commande de connexion (généralement un shell).

Les UID d’une valeur inférieure à 1 000 sont en principe associés à des comptes spéciaux réservés au système.

L’UID de root, l’administrateur, est toujours 0, ce qui lui donne tous les droits sur les ressources du système. ...

L’impression

Linux peut gérer trois systèmes d’impression : System V LP, BSD LPD et CUPS, tous issus d’Unix. CUPS est le plus récent, ses commandes sont compatibles avec celles de BSD LPD, il est devenu le standard de fait Linux.

La certification LPIC-1 demande la connaissance de CUPS et des commandes compatibles LPD.

1. Principe

Linux gère les imprimantes via un service serveur d’impression. À chaque imprimante correspond une file d’attente (queue). L’ensemble des files d’attente est géré par le serveur d’impression. L’impression fonctionne en mode multi-utilisateur et spoulé : les travaux d’impression soumis par les utilisateurs sont placés dans des files d’attente et traités au fur et à mesure. Le serveur d’impression peut fonctionner en réseau, acceptant des demandes d’impression issues d’autres systèmes, Linux ou non.

La plupart des imprimantes peuvent directement imprimer du texte brut ASCII en 80 colonnes. Pour imprimer des documents formatés ou des images, il faut disposer d’un pilote, associé au périphérique via la configuration d’un filtre d’impression. Ce filtre peut être un script ou un programme exécutable qui lit le flux à imprimer (texte, image, document, postscript...) et le transforme en instructions dans le langage adapté à l’imprimante (Postscript, PCL, Canon, Epson, WPS...)..

On peut s’assurer de la compatibilité de nombreuses imprimantes avec Linux, via le site OpenPrinting : http://www.openprinting.org/printers

Les imprimantes compatibles Postscript offrent généralement une très bonne compatibilité avec Linux. 

2. Le système d’impression LPD BSD

Le service serveur d’impression s’appelle généralement lpd.

Les principales commandes d’impression sont les suivantes :

lpr [-Pimprimante] [-#copies] fic 

Demande l’impression du fichier fic. L’option -P permet de spécifier la file d’attente d’impression, -# le nombre de copies à imprimer. Sans l’option -P, la commande utilise la file d’attente par défaut de l’utilisateur, définie par les variables LPDEST ou PRINTER.

lpq [-Pimprimante] 

Affiche l’état...

Automatisation des tâches

Différents services permettent de gérer des tâches, périodiques ou non, à exécuter en tâche de fond, suivant différents critères de date ou d’heure.

1. Le service cron

Le service cron permet aux utilisateurs habilités de soumettre l’exécution de tâches périodiques. Il fonctionne à l’aide d’une table, une par utilisateur, appelée une crontab, sous la forme d’un fichier texte.

Pour modifier sa crontab, l’utilisateur dispose de la commande crontab avec l’option -e (edit). La commande ouvre la crontab de l’utilisateur dans l’éditeur de texte par défaut. Si l’utilisateur quitte l’éditeur en enregistrant les modifications, la nouvelle crontab remplace l’ancienne et est prise en compte par le service cron.

Les fichiers crontabs sont stockés dans /var/spool/cron ou /var/spool/cron/crontabs.

L’option -l de la commande crontab affiche le contenu de la crontab de l’utilisateur courant.

L’option -u Nom de la commande crontab gère le contenu de la crontab de l’utilisateur spécifié, elle est réservée à l’administrateur root.

Le service cron doit être démarré pour que les crontabs soient actives.

Exemple

# ps -ef | grep cron 
root         520       1  0 13:20 ?         00:00:00 /usr/sbin/cron -f 
# systemctl status cron 
 cron.service - Regular background program processing daemon 
     Loaded: loaded (/lib/systemd/system/cron.service; enabled; preset: enabled) 
     Active: active (running) since Thu 2023-07-13 13:20:02 CEST; 2h 23min ago 
       Docs: man:cron(8) 
   Main PID: 520 (cron) 
      Tasks: 1 (limit: 4471) 
     Memory: 444.0K 
        CPU: 138ms 
     CGroup: /system.slice/cron.service 
             +-520 /usr/sbin/cron -f 

a. Format d’une ligne de tâche...

Les fichiers journaux du système

Lorsque le système démarre, fonctionne et effectue tout type d’opérations, ses actions et celles de la plupart de ses services sont enregistrées dans différents fichiers journaux. Deux types de services sont spécialisés dans la réception des messages puis l’inscription dans ces fichiers :

  • syslog (system log) est chargé de la gestion des messages d’information, d’avertissement ou d’erreur émis par les services et éventuellement le noyau. Ce service peut être géré par différents composants logiciels : rsyslog, syslog-ng ou le plus ancien, syslog.

  • journald : ce composant de systemd est chargé de collecter et d’indexer les informations provenant des services, via leurs fichiers ou une API, et peut s’interfacer aussi avec un service de type syslog.

Les messages importants émis par un composant du système devraient utiliser les services syslog ou journald. Ceci n’empêche pas une application de gérer ses propres fichiers journaux, un serveur HTTP par exemple.

La certification LPIC-1 nécessite de savoir gérer rsyslog et journald.

1. Les messages

Les messages des composants logiciels utilisant rsyslog ou journald ont des niveaux de priorité différents, de 0 (haute priorité) à 7 (message de débogage) :

Niveau

Alias système

Signification

0

EMERG

Le système est inutilisable.

1

ALERT

Une action doit être prise immédiatement.

2

CRIT

Problème critique.

3

ERR

Erreur.

4

WARNING

Avertissement.

5

NOTICE

Normal mais nécessite une attention particulière.

6

INFO

Information standard.

7

DEBUG

Trace de débogage du noyau.

Les services rsyslog ou journald reçoivent les messages, puis les traitent ensuite selon l’émetteur et leur niveau, en appliquant les actions associées, qui peuvent être en particulier :

  • Écriture dans un ou plusieurs fichiers journaux.

  • Affichage à l’écran des consoles.

  • Envoi d’e-mails aux utilisateurs du système (root par exemple).

  • Redirection vers un serveur de log distant.

  • Exécution d’une application.

Les actions les plus courantes sont l’écriture dans des fichiers journaux, l’affichage sur une console...

Sauvegarde et restauration

La sauvegarde du système et des données est une responsabilité importante de l’administrateur. Linux dispose de nombreuses commandes permettant de sauvegarder et restaurer les informations, arborescences de répertoires et/ou de fichiers, systèmes de fichiers complets, ainsi que tout ou partie des supports physiques.

Les trois commandes usuelles sont :

  • Pour la sauvegarde de fichiers et d’arborescences : tar ou cpio.

  • Pour la sauvegarde physique de disques et de systèmes de fichiers : dd.

Des commandes complémentaires sont :

  • mt : contrôle d’une bande magnétique.

  • compress et uncompress : compression et décompression des fichiers.

  • gzip, gunzip, zcat : compression et décompression au format GnuZip.

  • xz, unxz, xzcat : compression et décompression au format .xz.

  • bzip2, bunzip2, bzcat : compression et décompression au format .bz2, plus performant que gzip.

1. La commande tar

La commande tar crée des fichiers archives de répertoires et fichiers, sur tout type de support y compris dans un autre fichier. L’archive créée peut s’étendre sur plusieurs volumes physiques.

a. Archivage

La syntaxe courante est la suivante :

tar cvf nom_archive Fichier(s) 

Avec :

  • c : création d’archive.

  • v : affichage détaillé.

  • f : l’argument suivant est le nom de l’archive à utiliser (fichier spécial du périphérique ou fichier d’archive). 

La commande tar utilise des options sans les préfixer obligatoirement par le caractère -.

Exemple

Sauvegarde du répertoire de connexion :

$ cd 
$ tar cvf pba.tar .  
./ 
./.ssh/ 
./.ssh/known_hosts.old 
./.ssh/known_hosts 
./Documents/ 
./Modèles/ 
tar: ./pba.tar : le fichier est l'archive elle-même ; fichier non archivé 
./.local/ 
./.local/share/ 
[...] 
./.bash_logout 
./.bash_history 
./.face 
$ ls -l pba.tar 
-rw-r--r-- 1 pba pba 23132160 17 juil. 16:09 pba.tar 

b. Lister le contenu d’une archive

La syntaxe est :

tar tvf nom_archive 

L’option t (table) liste le contenu de l’archive.

Exemple

Lister le contenu du fichier archive de l’exemple précédent :

$ tar tvf pba.tar 
drwx------...

Gestion de la date et heure système

1. La commande date

La commande date permet d’afficher la date système, mais aussi de calculer d’autres dates en fonction de la date courante ou d’une date quelconque. Elle permet aussi à l’administrateur root de modifier la date et l’heure du système.

Exemple

$ date 
mar. 18 juil. 2023 08:31:31 CEST 

Par défaut, la date affichée est la date et heure courante, en fonction du fuseau horaire configuré sur le système. Pour afficher l’heure UTC :

$ date -u 
mar. 18 juil. 2023 06:32:35 UTC 

Le format d’affichage peut être spécifié par différentes séquences.

Syntaxe

date +"format" 

Principales séquences :

Format

Résultat

%H

L’heure au format 00..23.

%M

Minutes 00..59.

%S

Secondes 00..60.

%T

Heure courante sur 24 heures.

%r

Heure courante sur 12 heures.

%Z

Fuseau horaire.

%a

Jour abrégé (lun, mar, etc.).

%A

Jour complet.

%b

Mois abrégé.

%B

Mois complet.

%d

Jour du mois.

%j

Jour de l’année.

%m

Numéro du mois.

%U

Numéro de la semaine 00..53.

%y

Deux derniers chiffres de l’année.

%Y

Année complète.

Exemple

$ date +"Le %A %d %B %Y %H heures %M minutes %S secondes" 
Le mardi 18 juillet 2023 08 heures 36 minutes 31 secondes 

L’option --date suivie d’une date ou d’un calcul affiche la date résultante.

Les mots-clés today, yesterday, tomorrow, day(s), week(s), month(es), year(s), hour(s), minute(s), second(s) sont acceptés, avec +, - ou ago (retranche à la date précisée). Si la date n’est pas précisée, c’est la date en cours.

Exemple

Dans 10 jours :

$ date --date "10 days" 
ven. 28 juil. 2023 08:39:21 CEST 

Demain :

$ date --date "tomorrow" 
mer. 19 juil. 2023 08:39:43 CEST 

Hier :

$ date --date "yesterday" 
lun. 17 juil. 2023 08:40:14 CEST 

Une semaine après Noël 2023 :

$ date --date "12/25/2023 23:59:00 + 1 week" 
lun. 01 janv. 2024 23:59:00 CET 

La commande permet à l’administrateur root de modifier la date et heure système.

Syntaxe

date MMJJhhmm[[CC]AA][.ss]] 

Exemple

Un utilisateur essaye de modifier l’heure du système :

$ date 08110801 
date: impossible de définir...

Les paramètres régionaux

Les distributions Linux gèrent de nombreuses langues et permettent de configurer les formats régionaux correspondants, par exemple le format d’affichage de la date, le symbole monétaire, etc.

1. L’internationalisation (i18n) et la régionalisation (l10n)

Il faut distinguer la régionalisation (localization) et l’internationalisation :

  • La régionalisation (l10n, localization, un mot de 12 lettres commençant par l et finissant par n) consiste à fournir une traduction d’un élément correspondant à la culture locale (langue principalement, mais aussi monnaie ou représentation des nombres). À titre d’exemple, si le français est utilisé en France, en Belgique, en Suisse, au Canada et dans de nombreux pays d’Afrique, chaque culture dispose d’éléments pouvant varier : monnaie, disposition de clavier...

  • L’internationalisation (i18n, internationalization, un mot de 20 lettres commençant par i et finissant par n) gère la régionalisation en amont, au niveau du développement du logiciel. Un logiciel commun fait appel aux fonctions d’une API d’internationalisation. Une fonction chargée de récupérer une chaîne de texte dans n’importe quelle langue au sein d’une base vérifie quel langage est utilisé et retourne la chaîne correspondante, par exemple, la bibliothèque de fonctions gettext.

Exemple

Au lieu d’utiliser un modèle figé comme ceci :

printf("Hello"); 

Un programmeur peut utiliser comme cela :

printf(gettext("Hello")); 

La fonction gettext va rechercher la chaîne correspondant à "Hello" dans les fichiers de régionalisation du programme dans la langue courante et retournera une version traduite. En France la seconde ligne affichera donc :

Bonjour 

2. Réglages régionaux

Il y a plusieurs moyens de modifier la régionalisation du système, ou d’un programme donné. Chaque distribution fournit un module de configuration, de même chaque environnement de bureau (Gnome, Unity, KDE...).

La commande suivante permet de spécifier les jeux de paramètres régionaux à mettre en place sur une distribution de type Debian :

dpkg-reconfigure...

Validation des acquis : questions/réponses

1. Questions

Si l’état de vos connaissances sur ce chapitre vous semble suffisant, répondez aux questions ci-après.

Gestion des utilisateurs et groupes

1 Un UID permet-il d’authentifier un compte utilisateur ?

2 Un utilisateur peut-il faire partie de plusieurs groupes ?

3 Devez-vous donner l’UID 85 à un utilisateur simple du système ?

4 Par quelle méthode un utilisateur est-il authentifié sous Linux ?

  • A - Par son login.

  • B - Par son UID.

  • C - Par son mot de passe.

  • D - Par une clé secrète.

5 Quelle commande permet de connaître les UID et GID d’un utilisateur ?

6 Quel est le chemin d’accès du fichier contenant les mots de passe chiffrés ?

7 Quel est le quatrième champ d’une ligne du fichier /etc/passwd ?

  • A - L’UID.

  • B - Le GID.

  • C - Le commentaire.

  • D - Le répertoire de travail.

8 Quel est le quatrième champ du fichier /etc/group ?

  • A - Le GID.

  • B - Le mot de passe de groupe.

  • C - La liste des utilisateurs ayant ce groupe comme groupe principal.

  • D - La liste des utilisateurs ayant ce groupe comme groupe secondaire.

9 Est-ce que l’administrateur root peut connaître le mot de passe d’un utilisateur ?

10 La ligne useradd -m -u 100 -g users -G vidéo -c test -s /bin/false :

  • A - Est incorrecte.

  • B - Ajoute un utilisateur test d’UID 100.

  • C - Ajoute un utilisateur vidéo mais qui n’a pas le droit de se connecter.

  • D - Crée un utilisateur de groupe secondaire vidéo.

11 Pour ajouter un utilisateur dans un groupe vous pouvez :

  • A - Utiliser usermod -G.

  • B - Utiliser vigr.

  • C - Utiliser vi /etc/group.

12 Quelle commande saisir pour forcer l’utilisateur bob à changer son mot de passe tous les 30 jours ?

13 L’utilisateur joe a été licencié de l’entreprise. Comment verrouiller son compte ?

14 L’utilisateur joe avait des documents importants dans son répertoire personnel. Comment supprimer son compte sans supprimer son dossier personnel ?

15 Quelle commande utiliser pour vérifier l’état des fichiers de comptes utilisateurs et de mots de passe ?

16 Comment savoir quand s’est connecté l’utilisateur jack pour la dernière fois ?

17 Un utilisateur tente de changer son shell en /bin/zsh (qui existe) avec chsh mais n’y arrive pas....

Travaux pratiques

1. Gestion des utilisateurs

But : créer un utilisateur et appliquer une politique de sécurité.

1.

Créez un utilisateur tom ayant comme UID 1200, comme groupe users, comme commentaire « Chasseur de Jerry » et comme shell /bin/bash. Créez l’utilisateur avec son répertoire personnel.

2.

Donnez le mot de passe « tomcat » à tom.

3.

Créez un groupe cat avec le GID 530.

4.

Ajoutez tom dans le groupe cat.

5.

Modifiez les informations de changement de mot de passe de tom avec la commande chage. Le mot de passe ne peut pas être changé avant 10 jours et il est obligatoire de le changer tous les 50 jours.

6.

Supprimez l’utilisateur tom. Lancez ensuite la commande pwck. Rectifiez le problème.

Solutions possibles

But : créer un utilisateur et appliquer une politique de sécurité.

1.

Créez un utilisateur tom ayant comme UID 1200, comme groupe users, comme commentaire « Chasseur de Jerry » et comme shell /bin/bash. Créez l’utilisateur avec son répertoire personnel. 

# useradd -m -u 1200 -g users -c "Chasseur de Jerry" tom 

2.

Donnez le mot de passe « tomcat » à tom.

# passwd tom 
Changing password for user tom. 
New password: 
BAD PASSWORD: The password is shorter than 8 characters 
Retype new password: 
passwd: all authentication tokens updated successfully. 

3.

Créez un groupe cat avec le GID 530.

# groupadd -g 530 cat 

4.

Ajoutez tom dans le groupe cat.

# vi /etc/passwd 
cat:x:530:tom 

5.

Modifiez les informations de changement de mot de passe de tom avec la commande chage. Le mot de passe ne peut pas être changé avant 10 jours et il est obligatoire de le changer tous les 50 jours.

# chage tom 
# chage tom 
Changing the aging information for tom 
Enter the new value, or press ENTER for the default 
 
        Minimum Password Age [0]: 10 
        Maximum Password Age [99999]: 50 
        Last Password Change (YYYY-MM-DD) [2023-07-18]: 
        Password Expiration Warning [7]: 
        Password Inactive [-1]: 
        Account...