Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
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) - [6e édition]
Extraits du livre
LINUX Préparation à la certification LPIC-1 (examens LPI 101 et LPI 102) - [6e édition]
5 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 :

D’obtenir des notions de gestion des utilisateurs.

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

De mettre en place une politique de mot de passe.

De connaître les commandes avancées.

De diffuser les notifications aux utilisateurs.

D’obtenir un aperçu des PAM.

De gérer les impressions.

D’automatiser des tâches.

D’utiliser quelques outils de backup.

De mettre le système à l’heure.

Administration des utilisateurs

1. Principe

a. Identification et 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é.

b. Les utilisateurs

Un utilisateur est l’association d’un nom de connexion, le login, à un UID et au moins un GID.

  • UID : User ID.

  • GID : Group ID.

Les UID et les GID sont en principe uniques. Le login (nom d’utilisateur) est unique. Il est cependant envisageable d’associer plusieurs logins au même UID, le système travaillant parfois avec le login.

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é. 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 logins.

L’utilisateur dispose des attributs de base suivants :

  • un nom de connexion appelé le login

  • un mot de passe

  • un UID

  • un GID correspondant à son groupe principal

  • un descriptif

  • un répertoire de connexion

  • une commande de connexion

D’autres attributs sont disponibles via l’utilisation de la sécurité des mots de passe via shadow (voir la section concernée).

Les UID d’une valeur inférieure à 100 sont en principe associés à des comptes spéciaux avec des droits étendus. Ainsi l’UID de root, l’administrateur, est 0. Selon les distributions, à partir de 100, 500 ou 1000, et ce jusqu’au maximum 65535 (216-1), ce sont les UID des utilisateurs sans pouvoirs particuliers. La plupart des Unix, dont Linux, peuvent utiliser des UID sur 32 bits signés, la limite étant donc supérieure à quatre milliards (les compagnies disposant de plus de 65535 employés ne rencontrent donc plus de problèmes). Ces paramètres peuvent être modifiés par le contenu du fichier...

L’impression

1. Principe

En cas de doute sur la compatibilité de Linux avec votre imprimante, consultez le site OpenPrinting : http://www.openprinting.org/printers

Il existe trois standards d’impression sous Unix, un sous System V, un autre sous BSD et un dernier fédérateur.

Quel que soit le standard, le principe est le même. À chaque imprimante déclarée (généralement dans /etc/printcap) correspond une file d’attente (queue). L’ensemble de ces files d’attente est géré par un service indépendant. Ces deux principes permettent une impression multi-utilisateur (les travaux d’impression sont en file d’attente, job queues), et en réseau (le service peut être utilisé depuis une autre machine distante).

En règle générale toutes les imprimantes savent directement imprimer du texte brut ASCII en 80 colonnes. Pour imprimer des documents formatés ou des images, vous devez utiliser un pilote. On parle en fait de filtre d’impression. Le filtre peut être un script ou un binaire qui récupère le flux entrant (texte, image, document, postscript...), l’identifie et à l’aide de traitements associés le transforme en langage compréhensible par l’imprimante (Postscript, PCL, Canon, Epson, WPS...).

Si vous avez le choix et les moyens n’hésitez pas à prendre une imprimante compatible Postscript qui est un gage de parfaite compatibilité. Le site openprinting.org dispose d’une base complète de compatibilité des imprimantes sous Linux.

Linux accepte les commandes issues des Unix de type System V et BSD. Pendant longtemps le sous-système d’impression était basé sur les services BSD et le démon lpd. Depuis le milieu des années 2000, toutes les distributions se basent sur CUPS, rétro-compatible (pour les commandes en tout cas) avec les anciens systèmes d’impression.

2. System V

Les commandes de gestion des files d’attente et des impressions sous System V sont les suivantes :

  • lp [-dImprimante] [-nChiffre] fic1 : imprime le contenu du fichier fic1. L’option -d permet de choisir l’imprimante, -n le nombre d’exemplaires.

  • lpstat [-d] [-s] [-t] [-p] : informations sur l’impression. L’option -d affiche le nom de l’imprimante par...

Automatisation

1. Avec cron

a. Présentation

Le service cron permet la programmation d’événements à répétition. Il fonctionne à l’aide d’une table, appelée une crontab. C’est un fichier texte, éditable avec un simple éditeur, par exemple vi. Pour modifier votre crontab personnelle utilisez la commande crontab pour éditer la table, avec le paramètre -e.

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

Le service cron doit tourner pour que les crontabs soient actives.

$ ps -ef|grep cron 
root      3634     1   0 18:28 ?        00:00:00 /usr/sbin/cron -f 

b. Formalisme

Le format d’un enregistrement de crontab est le suivant :

Minutes

Heures

Jour du mois

Mois

Jour semaine

Commande

1

2

3

4

5

6

Utilisez le format suivant pour les valeurs périodiques :

  • Une valeur pour indiquer quand il faut exécuter la commande. Ex : la valeur 15 dans le champ minute signifie la quinzième minute.

  • Une liste de valeurs séparées par des virgules. Ex : 1,4,7,10 dans le champ mois pour janvier, avril, juillet, octobre.

  • Un intervalle de valeurs. Ex : 1-5 dans le champ jour de la semaine indique du lundi (1) au vendredi (5). Le 0 est le dimanche et le 6 le samedi.

  • Le caractère * pour toutes les valeurs possibles. Ex : * dans le champ jour du mois indique tous les jours du ou des mois.

  • Un / indique un intervalle. Ex : */5 dans le champ minutes indique toutes les 5 minutes.

c. Exemples

Exécution de df tous les jours, toute l’année, tous les quarts d’heure :

0,15,30,45 * * * * df > /tmp/libre 

ou

*/15 * * * * df > /tmp/libre 

Lancement d’une commande toutes les cinq minutes à partir de 2 (2, 7, 12, etc.) à 18 heures les 1er et 15 du mois :

2-57/5 18 1,15 * * commande 

Exécution d’une commande tous les jours ouvrables à 17 heures :

0 17 * * 1-5 fin_travail.sh 

Lister les crontabs actives :

$ crontab -l 

Supprimer la crontab active :

$ crontab -r 

Éditer la crontab d’un utilisateur particulier :

# crontab -u user 

d. crontab système

La configuration crontab générale pour le système est dans /etc/crontab. Sa syntaxe diffère légèrement. Un champ supplémentaire est présent....

Les traces (logs) du système

1. Principe

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 tracées dans divers fichiers. Trois services sont spécialisés dans la réception des messages à écrire dans ces fichiers :

  • syslogd : system log daemon, chargé de la gestion des informations émises par tout type de service et éventuellement le noyau. Il est souvent remplacé par syslog-ng ou rsyslog.

  • journald : composant de systemd, chargé de collecter et d’indexer les traces provenant de tout service, via leurs fichiers ou une API, notamment systemd, mais s’interfaçant aussi avec syslog ou kmsg.

  • klogd : kernel log daemon, chargé de la gestion des informations émises par le noyau. Il est moins présent depuis quelques années, car rsyslog ou journald peuvent également écouter les évènements du noyau.

Les messages importants émis par un composant du système devraient passer par les services syslogd ou journald. Ceci n’empêche pas, au contraire, qu’un service puisse gérer ses propres traces dans ses propres fichiers. Les traces applicatives ne devraient pas être placées dans les traces de système. Les traces d’accès aux pages Web d’un serveur Apache n’ont rien à y faire. Par contre les traces de connexion au système (via la console, ssh, telnet, etc.) ont un intérêt important et doivent être présentes dans les fichiers logs du système.

Dans la suite de l’ouvrage, les traces seront appelées par leur nom d’usage courant : les logs.

2. Les messages

Le service klogd gère les messages émis par le noyau. Il dispose de deux sources d’accès aux messages :

  • le système de fichiers virtuel /proc, utilisé par défaut s’il est présent, et notamment /proc/kmsg.

  • les appels système via l’API du noyau, notamment sys_syslog, si /proc est absent ou si le paramètre -s a été passé à klogd.

Les daemons rsyslog ou journald sont capables de lire et d’interpréter directement le contenu de /proc/kmsg et donc de remplacer klogd. Si votre système...

Archivage et backup

1. Les outils de sauvegarde

La sauvegarde est un travail important de l’administrateur puisqu’en cas de gros problème, on passe généralement par une restauration du système depuis une sauvegarde, ou une image du système lorsque celui-ci était encore intègre (bon fonctionnement, pas de corruption). Chaque Unix est fourni avec des commandes et des procédures de sauvegarde qui lui sont propres. On distingue tout de même quelques outils communs.

a. Commandes, plans, scripts

  • Pour la sauvegarde de fichiers et d’arborescences, utilisez les commandes tar et cpio. Ces commandes sauvegardent une arborescence, et pas un système de fichiers. On peut faire coïncider les deux.

  • Pour la sauvegarde physique de disques et de systèmes de fichiers (des dumps), utilisez la commande dd.

Une sauvegarde incrémentale consiste à sauvegarder une première fois la totalité des données, puis ensuite uniquement les fichiers modifiés. On trouve aussi sous forme de logiciels libres ou dans le commerce des solutions plus pointues de sauvegarde (Clonezilla en libre, Networker en commercial, par exemple).

L’administrateur aura parfois à définir des scripts de sauvegarde et de restauration adaptés au cas par cas (partition système, données applicatives...) et à automatiser quand c’est possible l’exécution de ceux-ci en fonction de la date, l’heure ou la charge de la machine.

Il sera aussi très important de définir un plan de sauvegarde, en se posant les bonnes questions :

  • Que faut-il sauvegarder ?

  • Avec quelle fréquence ?

  • Combien de temps conservera-t-on les sauvegardes, à quel endroit, en combien d’exemplaires ?

  • À quel endroit sera stocké l’historique des sauvegardes ?

  • Quel est le support le plus approprié ?

  • Quels sont les besoins, en capacité, du support de sauvegarde ?

  • Combien de temps prévoit-on pour sauvegarder un fichier, un système de fichiers et est-ce raisonnable ?

  • La sauvegarde doit-elle être automatique ou manuelle ?

  • Quelle est la méthode de sauvegarde la plus appropriée ?

Chaque cas étant unique, cet ouvrage ne peut répondre à toutes ces questions. Les réponses dépendent de l’environnement cible (production...

L’horloge

1. Connaître l’heure

a. date

Pour connaître l’heure, utilisez la commande date. Elle permet de donner la date actuelle, mais aussi de calculer d’autres dates en fonction soit de la date actuelle, soit en fonction d’une date quelconque. Date permet aussi de modifier la date et l’heure du système.

$ date  
dimanche 9 février 2020, 09:48:03 (UTC+0100) 

Par défaut la date affichée est la date (et l’heure) locale, configurée en fonction du fuseau horaire. Pour afficher l’heure UTC :

$ date -u  
dimanche 9 février 2020, 08:48:15 (UTC+0000) 

Le format de la date peut être modifié à volonté à l’identique de ce qui peut se faire avec la fonction C strftime. Dans ce cas la syntaxe est :

date +"format". 

Voici quelques exemples de format possible :

Format

Résultat

%H

L’heure au format 00..23.

%M

Minutes 00..59.

%S

Secondes 00..60.

%T

Heure actuelle sur 24 heures.

%r

Heure actuelle 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.

Pour afficher une date complète :

$ date +"Nous sommes le %A %d %B %Y, il est %H heures, %M minutes et 
%S secondes"  
Nous sommes le dimanche 09 février 2020, il est 09 heures, 48 minutes et 
39 secondes 

Vous pouvez modifier la base de calcul en passant le paramètre --date suivi d’une date ou d’un calcul. 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 + (ajout à la date) ou - ou ago (retranche à la date précisée). Si la date n’est pas précisée, c’est la date en cours.

Dans 10 jours :

date --date "10 days"  
mercredi 19 février 2020, 09:49:05 (UTC+0100) 

Demain :

date --date "tomorrow" 

Hier :

date --date "yesterday" 

Une semaine après Noël 2016 :

$ date --date "12/25/2019 23:59:00 + 1 week" 
dimanche 1 janvier 2020, 23:59:00 (UTC+0100) 

b. hwclock

La commande hwclock permet d’interroger...

Les paramètres régionaux

1. i18n et l10n

Les distributions s’installent et fonctionnent dans de nombreuses langues. Vous aurez probablement remarqué que les pages des manuels s’affichent aussi dans votre langue, pour peu que ces pages aient été traduites. De même, un grand nombre de logiciels affichent leur menu dans la langue dans laquelle le système a été installé ou paramétré.

Contrairement à de nombreux éditeurs de logiciels qui fournissent des versions localisées différenciées de leurs logiciels (par exemple MS Office en français et MS Office en anglais sont deux versions distinctes), les éditeurs de logiciels libres intègrent généralement directement un support pour de nombreux langages, ou fournissent des packages additionnels.

Il faut faire une différence entre la régionalisation (en anglais localization) et l’internationalisation :

  • La régionalisation consiste à fournir une traduction d’un produit 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 ou dans de nombreux pays d’Afrique, chaque culture dispose de syntaxes pouvant varier (par exemple, le québecois : on entend bien que c’est du français, mais on ne comprend pas tout), des monnaies, des dispositions de claviers différentes.

  • L’internationalisation prépare la régionalisation en amont, au niveau du développement du logiciel. Un seul logiciel fera appel à des 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érifiera quel langage est utilisé et sortira la chaîne correspondante. La bibliothèque de fonctions gettext est un bon exemple.

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

printf("Hello"); 

Un programmeur pourra procéder comme cela :

printf(gettext("Hello")); 

La fonction gettext va rechercher la chaîne correspondant à "Hello" dans les fichiers de régionalisation du programme...

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 utilisateur ?

2 Une personne peut-elle 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 complet du fichier contenant les mots de passe crypté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 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 - Ne marche pas.

  • 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 Joe avait des documents importants dans son répertoire personnel. Comment supprimer son compte sans supprimer son dossier personnel ?

15 Quelle commande pouvez-vous utiliser pour vérifier l’état de vos fichiers d’utilisateurs et de mots de passe ?

16 Vous avez migré un serveur Unix qui ne gérait pas les shadows vers Linux. Pour migrer les mots de passe, vous devez :

  • A - Utiliser pwconv.

  • B - Utiliser grpconv.

  • C - Créer un script de création de /etc/shadow.

  • D - Ne rien faire : Linux n’est...

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 bien entendu 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. Voici une astuce : vous pouvez créer un mot de passe sans saisie par la commande passwd avec le paramètre --stdin (cette méthode ne fonctionne pas sous Debian ou Ubuntu) :

# echo tomcat | passwd --stdin tom 

3.

Ajoutez un groupe cat avec le GID 530 :

# groupadd -g 530 cat 

4.

Ajoutez tom dans le groupe cat en éditant le fichier /etc/group. Pour cela rajoutez le nom tom à la fin de la ligne correspondante.

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 
Changing agin information for tom 
    Minimum Password Age [7] : 10 
    Maximum Password Age [40] : 50 
... 

6.

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

# userdel tom 
# pwck 

La commande vous informe que le groupe cat contient un utilisateur tom qui n’existe plus. Vous devez donc retirer tom du groupe cat pour conserver la cohérence du système.

7.

Prévenez vos utilisateurs que le système sera arrêté le 12 décembre à 17h00 pour maintenance. Vous pouvez utiliser le fichier /etc/issue, le fichier /etc/motd et le fichier /etc/issue.net pour y écrire votre texte.

2. L’impression

But : configurer les imprimantes, et imprimer des fichiers.

1.

Vous avez le choix entre trois systèmes d’impression : BSD, System V et CUPS. Quel système devriez-vous utiliser ?

C’est CUPS...