78
Formation Linux Découverte des systèmes GNU/Linux Frédéric DAVAL 2016 V0.2.0

Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

Formation Linux

Découverte des systèmes GNU/Linux

Frédéric DAVAL

2016 V0.2.0

Page 2: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

Page laissée intentionnellement en blanc

Administration d'un serveur sous linux CentOS : les bases 2/78

Page 3: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

Révisions du document

État Acteur/Structure Version Révision Date d’état

Rédaction Frédéric DAVAL V0.1 20 30/03/2014

Correction Frédéric DAVAL V0.2 0 08/09/2016

Administration d'un serveur sous linux CentOS : les bases 3/78

Page 4: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

Page laissée intentionnellement en blanc

Administration d'un serveur sous linux CentOS : les bases 4/78

Page 5: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

Table des matières1Licence de ce document...................................................................................................................102Convention du document..................................................................................................................113Introduction......................................................................................................................................12

3.1Ce qu’est cette formation..........................................................................................................123.2Ce que n’est pas cette formation...............................................................................................12

4Historique.........................................................................................................................................134.1Le système GNU.......................................................................................................................134.2Le noyau Linux.........................................................................................................................134.3GNU/Linux...............................................................................................................................13

5Les différences entre GNU/Linux et Windows................................................................................146Caractéristique d’un système GNU/Linux.......................................................................................15

6.1Architecture du noyau linux.....................................................................................................156.2Gestion de la mémoire..............................................................................................................156.3Gestion des processus...............................................................................................................166.4Virtual File System...................................................................................................................176.5Architecture d’un système GNU/Linux....................................................................................186.6Arborescence d’un système GNU/Linux..................................................................................18

7Périphériques de stockage de masse.................................................................................................217.1Nommage des périphériques.....................................................................................................217.2Logical Volume Manager..........................................................................................................217.3Partitions...................................................................................................................................227.4Les systèmes de fichiers...........................................................................................................227.5Points de montage.....................................................................................................................227.6Le schéma de partionnement....................................................................................................23

8Installation d'une distribution...........................................................................................................248.1Choix de la distribution.............................................................................................................248.2Choix du type d’installation......................................................................................................248.3Méthode d’installation..............................................................................................................248.4Méthode de mise à jour.............................................................................................................248.5Installation d'une CentOS 6......................................................................................................26

8.5.1Démarrage sur une image de netinstall.............................................................................268.5.2Choix de la langue.............................................................................................................268.5.3Choix du clavier................................................................................................................268.5.4choix du type d'installation (URL)....................................................................................278.5.5configuration du réseau.....................................................................................................278.5.6choix de l'URL source.......................................................................................................288.5.7Téléchargement de l'image d'installation..........................................................................288.5.8Validation des disques.......................................................................................................288.5.9Choix du fuseau horaire....................................................................................................298.5.10Saisie du mot de passe root.............................................................................................298.5.11Confirmation du type de partionnement..........................................................................308.5.12Rédémarrage...................................................................................................................308.5.13Système opérationnel......................................................................................................31

8.6Le gestionnaire de paquet yum.................................................................................................328.6.1Les syntaxes de base de yum............................................................................................328.6.2Configuration des dépôts de yum......................................................................................338.6.3Mise à jour de la distribution............................................................................................34

Administration d'un serveur sous linux CentOS : les bases 5/78

Page 6: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

8.7Configuration de la distribution................................................................................................358.7.1Installation de l'aide..........................................................................................................358.7.2Création d'un utilisateur d'administration.........................................................................35

9La ligne de commande......................................................................................................................379.1Accès aux terminaux.................................................................................................................379.2Les commandes de base............................................................................................................379.3L’interprétation des commandes...............................................................................................379.4Les redirections.........................................................................................................................38

9.4.1Redirection vers un fichiers..............................................................................................389.4.2Redirection vers un processus...........................................................................................38

9.5Commandes de base..................................................................................................................399.5.1man....................................................................................................................................399.5.2ls [options ] [fichiers]........................................................................................................399.5.3cd [options][répertoire].....................................................................................................399.5.4cp [options] source destination.........................................................................................399.5.5rm [options] fichier...........................................................................................................399.5.6mv [options] source destination........................................................................................409.5.7touch [options] fichier.......................................................................................................409.5.8mkdir [options] répertoire.................................................................................................409.5.9cat [options] fichiers..........................................................................................................409.5.10More et less.....................................................................................................................409.5.11Echo.................................................................................................................................40

10L’éditeur de texte vim.....................................................................................................................4111Manipulation des disques...............................................................................................................43

11.1Obtention de la liste de partitions connues du système..........................................................4311.2Interroger LVM.......................................................................................................................44

11.2.1Récupération des attributs d'un Volume Group...............................................................4411.2.2Récupération des attributs des Physical Volumes...........................................................4411.2.3Récupération des attributs des Logical Volumes.............................................................44

11.3Ajout d'un disque physique à un LVM existant......................................................................4512Gestion des utilisateurs et des groupes...........................................................................................48

12.1La mécanique sous-jacente.....................................................................................................4812.1.1Le fichier /etc/passwd.....................................................................................................4812.1.2Le fichier /etc/group........................................................................................................4812.1.3Le fichier /etc/shadow.....................................................................................................48

12.2Les commandes de gestion des utilisateurs et des groupes....................................................4912.2.1Lister les utilisateurs.......................................................................................................4912.2.2Lister les groupes............................................................................................................4912.2.3Création d'utilisateurs......................................................................................................4912.2.4Changement du mot de passe d'un utilisateur.................................................................4912.2.5Création de groupes d'utilisateurs...................................................................................4912.2.6Modification des groupes d'un utilisateur.......................................................................50

12.3L'emprunt d'identité................................................................................................................5012.3.1La commande su.............................................................................................................5012.3.2La commande sudo.........................................................................................................50

13Gestion du système de fichiers.......................................................................................................5113.1les droits du système de fichiers.............................................................................................5113.2les liens...................................................................................................................................52

13.2.1Types de liens..................................................................................................................52

Administration d'un serveur sous linux CentOS : les bases 6/78

Page 7: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

13.2.2Utilité des liens................................................................................................................5213.2.3Création des liens............................................................................................................5313.2.4Suppression de lien.........................................................................................................53

13.3recherche de fichiers...............................................................................................................5313.3.1locate...............................................................................................................................5313.3.2find..................................................................................................................................53

14Commandes avancées.....................................................................................................................5514.1Grep........................................................................................................................................5514.2Xargs.......................................................................................................................................5514.3Ps.............................................................................................................................................5614.4Kill..........................................................................................................................................5614.5Who.........................................................................................................................................5714.6whoami....................................................................................................................................57

15Introduction au traitement par lot...................................................................................................5815.1Le shell....................................................................................................................................5815.2les variables.............................................................................................................................58

15.2.1Variables d'environnement..............................................................................................5815.2.2Variables définies dans un script.....................................................................................5815.2.3Variables automatiques....................................................................................................5915.2.4Syntaxes particulières liées aux variables.......................................................................59

15.3Les boucles.............................................................................................................................6015.3.1La boucle for...................................................................................................................6015.3.2L'instruction while...........................................................................................................6015.3.3L'instruction until............................................................................................................6015.3.4La commande break........................................................................................................60

15.4L'instruction if.........................................................................................................................6115.5Expressions pour tester des fichiers........................................................................................6215.6Expressions pour tester des variables.....................................................................................62

15.6.1Chaînes de caractères......................................................................................................6215.6.2Entiers.............................................................................................................................63

15.7L'instruction case....................................................................................................................6315.8 Entrées/sorties........................................................................................................................63

15.8.1Accès aux fichiers...........................................................................................................6315.8.2Accès à la aux entrées/sortie standards...........................................................................64

15.9Effectuer des calculs...............................................................................................................6416OpenSSH........................................................................................................................................66

16.1Présentation.............................................................................................................................6616.2Le serveur sshd.......................................................................................................................6616.3Création d'une paire de clé......................................................................................................6716.4Installation du client OpenSSH...............................................................................................6716.5Se connecter avec une clé par ssh...........................................................................................67

17Applications au démarrage.............................................................................................................6917.1Niveaux d'exécution................................................................................................................6917.2Applications et niveau d’exécution.........................................................................................69

18Les logs...........................................................................................................................................7219Tâches programmées......................................................................................................................73

19.1Principe de cron......................................................................................................................7319.2Format de fichiers cron...........................................................................................................73

20Présentation de quelques applications courantes............................................................................75

Administration d'un serveur sous linux CentOS : les bases 7/78

Page 8: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

20.1Openldap.................................................................................................................................7520.2Samba......................................................................................................................................7520.3Apache....................................................................................................................................75

21Conclusion......................................................................................................................................77

Administration d'un serveur sous linux CentOS : les bases 8/78

Page 9: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

Page intentionnellement laissée en blanc

Administration d'un serveur sous linux CentOS : les bases 9/78

Page 10: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

1 Licence de ce document

Ce document a été spécifiquement rédigé pour la formation d’initiation à linux dispensée à l’INFOMA de Nancy. Il est placé sous licence libre GNU FDL, ce qui signifie que tout lecteur peut le copier, le modifier et le redistribuer.

Cette licence est consultable à cette adresse : GNU Free Documentation Licence

Administration d'un serveur sous linux CentOS : les bases 10/78

Page 11: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

2 Convention du documentLes message présentés par le système sur la console sont représentés en fonte Mono L taille 10 bleu. Exemple :

[root@srv_test ~]#

Les commandes saisies par l'utilisateur sont représentés en fonte Mono L taille 10 bleu gras.

Exemple :

[root@srv_test ~]# free -mt

Une touche est définie entre les symboles < et >, en gras

Exemple :

<ALT+F1> appui simultané sur les touches ALT et F1

Averti d'un point méritant une attention particulière

Administration d'un serveur sous linux CentOS : les bases 11/78

Page 12: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

3 IntroductionLe but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un système GNU/Linux. La plus grande partie de ce qui est présent dans cette formation est tiré de mon expérience personnelle, tant en tant que formateur qu’en tant d'administrateur système.

Je me suis bien sûr aussi appuyer sur quelques lectures.

3.1 Ce qu’est cette formation

Elle a pour but de vous faire découvrir les arcanes des systèmes GNU/Linux et de vous faciliter une prise de contact qui peut sembler ardue au premier abord. Le maître mot sera donc “démystification”.

3.2 Ce que n’est pas cette formation

Comme nous le verrons, une distribution GNU/Linux est un ensemble complet et cohérent. Il n’est pas possible dans le temps imparti d’aborder la configuration de l’ensemble des applications livrées. Plus précisément, cette formation n’abordera que superficiellement des serveurs pourtant courants, à savoir:

• samba

• openldap

• apache

Il est temps d’entrer dans le vif du sujet en abordant la grande histoire de GNU/Linux.

Administration d'un serveur sous linux CentOS : les bases 12/78

Page 13: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

4 Historique

4.1 Le système GNU

Le système UNIX a été inventé en 1969 par AT&T. Il a été distribué avec ses sources à partir de 1975 dans les universités à des fins pédagogiques, moyennant l’acquisition d'une licence d’un montant très faible.

Les universités disposaient librement d’UNIX et de ses sources, mais elles n’avaient aucun droit de redistribution et le système restait propriétaire.

C’est cet état de fait qui poussa Richard Matthew Stallman (RMS) à créer sont propre système d’exploitation en 1984. Le projet GNU (Gnu is Not Unix) était né. Afin de permettre la diffusion de ce nouveau système libre et gratuit, il inventa par la même occasion la licence GPL (General Public Licence)

Les débuts du projet visaient à implémenter les commandes de base d’un système sans reprendre une ligne de code d’UNIX. Très vite, le besoin d’un compilateur C se fit sentir, et RMS se lança dans l’écriture de GCC (GNU C Compiler)

Il manquait tout de même à GNU le socle de tout système: le noyau. Cette pièce maîtresse est la plus complexe à concevoir et le noyau (hurd) prit beaucoup de retard dans son développement.

4.2 Le noyau Linux

En 1991, Linus Thorvald était étudiant à l’université d’Helsinki. Il utilisait le système Minix, non libre et reposant sur le modèle d’UNIX. Il manquait dans ce système un émulateur de terminal permettant de se connecter à distance. Linus Thorvald entreprit de le coder, indépendamment de Minix. Il continua ensuite de faire évoluer ce terminal en lui ajoutant des fonctionnalités. Il porta dessus l'interpréteur BASH et le compilateur GCC, issus du projet GNU. Il fut rapidement rejoint dans son travail par une communauté active.

Dès 1994, la version 1.0 de linux vit le jour. Elle permettait de faire fonctionner la majeure partie des programme issus du projet GNU.

4.3 GNU/Linux

A l’origine, l’installation un système comprenant un noyau Linux et des applications GNU était une tâche compliquée, réservées à quelques initiés.

Quelques uns eurent l’idée de faire ce travail et de distribuer le résultat sous forme de distribution GNU/Linux. En 1994 apparaissent les distributions Slackware Linux et Debian GNU/Linux.

Depuis, d’autres distributions sont apparues: Redhat, Suse, Mandrake devenue Mandriva, Ubuntu. Certaines, pour un motif ou un autre, on aussi donné lieu à des distribution dérivées: CentOs, Mint…

On retrouve aussi GNU/Linux dans les système embarqués: du téléphone portable à la télévision, en passant par les matériels actifs réseau.

Administration d'un serveur sous linux CentOS : les bases 13/78

Page 14: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

5 Les différences entre GNU/Linux et WindowsLe système Windows de Microsoft, quelle que soit sa version est assez monolithique. La frontière entre noyau et applications est assez floue.

Au contraire, GNU/linux est un ensemble de petits blocs ouverts que l’on peut combiner à loisir. L’exemple le plus visible est l’environnement de bureau. Windows n’en offre qu’un là où GNU/Linux en offre une multitude. Il en existe pour tous les goûts, du plus rudimentaire (openbox ou blackbox), au plus évolué (Gnome ou KDE). Cette variété d’environnement tire son origine de la présence d’un serveur graphique présentant des API (Application Programming Interfaces) sur lesquelles peuvent venir se connecter facilement des programmes responsables de la présentation graphique.

Mais la vraie différence vient de la séparation en couches des systèmes GNU/Linux. Sous Windows, la majorité des rouages internes est masquée par l’interface graphique (A partir de 2003 server, un serveur MS Windows peut enfin tourner sans interface graphique).

Les système GNU/Linux sont avant tout basés sur des outils non graphiques, en ligne de commande. Lorsqu’un environnement graphique est utilisé, les interfaces utilisées ne font qu’appeler ces mêmes outils non graphiques. C'est cette flexibilité qui permet la robustesse et l’optimisation de l’utilisation des ressources.

Une autre grande force de GNU/Linux est la disponibilité de ses sources alliée à la grande communauté travaillant sur les différents projets. Le nombre des développeurs impliqués permet une surveillance permanente de la qualité du code, des corrections et des publications de patchs rapides.

Administration d'un serveur sous linux CentOS : les bases 14/78

Page 15: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

6 Caractéristique d’un système GNU/Linux

6.1 Architecture du noyau linux

Ecrit en C (attention, pas en C++) le noyau linux est multi-tâches, multi-utilisateurs. Il respecte la norme POSIX comme un digne héritier d’UNIX.

Bien que conçu comme un noyau monolithique à l’origine, la possibilité de l’étendre par des modules est apparue depuis la version 2.0. C’est donc un noyau modulaire.

Linus Thorvald est toujours le mainteneur officiel et se dit lui-même “dictateur bienveillant”. Il a le dernier mot en matière organisationnelle aussi bien qu’en matière de choix techniques.

Le mode multi-tâche implémenté est le mode préemptif.

La mémoire est séparée en deux espaces: l’espace noyau et l’espace utilisateur. Cette séparation permet la mise en place de mécanisme de sécurités fiables. Un processus n'a en effet accès qu'aux ressources de son propre contexte. Chaque application travaille donc avec des droits particuliers, dans un espace particulier, comme dans une sorte de cage.Seul le noyau a accès au matériel, au moyen de modules (pilotes).Par l’intermédiaire des appels systèmes, il présente à l’espace utilisateur un accès rendu dans la mesure du possible abstrait aux différents éléments matériels. Des librairies en espace utilisateur sont ensuite responsable de l’unification des accès demandés par les applications.

6.2 Gestion de la mémoire

La mémoire est gérée par la MMU (Memory Managment Unit). Cette unité est intégrée au processeurs modernes. Si cette fonctionnalité est disponible matériellement, le noyau sait en tirer parti. Les conversions entre adresses logiques et adresse physiques sont alors très rapides.La mémoire est gérée de façon virtuelle. Chaque processus se voit présenter un espace d'adressage qui est le maximum de l'architecture (4go pour de l'i386). La MMU et le noyau se partage la tâche de gérer la fragmentation, la commutation et les droits d'accès à la mémoire réelle.Le noyau gère deux types de mémoire (RAM et disque) suivant 4 modes :

• la mémoire physique (Physical, les barrettes montées dans le serveur)

• la mémoire swap (partition d'un format particulier sur disque)

• la mémoire tampon (Buffers)

• la mémoire cache (Cached)

Les tampons sont de petites zones mémoire qui permettent d’accéder de façon asynchrone à un périphérique ou à un fichier par exemple. La mémoire cache est utilisée pour stocker des données afin de parer à la lenteur de l'accès aux disques.Pour le noyau, l'espace libre en RAM est de l'espace perdu. Il a donc tendance à stocker le maximum de données en cache en prévision d'un accès ultérieur, plutôt que d'utiliser le swap qui est beaucoup plus lent. Lorsqu'il n'y a plus de RAM disponible, alors une partie du cache est libérée pour satisfaire les demandes d'allocation. Il n'est donc absolument pas inquiétant, lorsqu'on interroge l'état de la mémoire, de trouver un cache avec une valeur importante.La mémoire cache, typiquement, peut contenir :

Administration d'un serveur sous linux CentOS : les bases 15/78

Page 16: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

• les partitions montées en mémoire RAM (tmpfs, ramfs...)

• les données d'applications terminées (le résultat d'une commande ls -l par exemple)

• les données d'applications non critiques (flux vidéos)

• pour certain outils de virtualisation (sans hyperviseur), la mémoire vive de machines

virtuellesExemple d'état de la mémoire :

Le paramètre -m affiche le résultat en Mo, le paramètre -t affiche une ligne de total.• La première ligne (Mem:) nous fournit les renseignement concernants la mémoire vive

RAM (1010Mo total, 982 utilisés, 27 libres)• la ligne +/- buffers/cache nous donne des indications sur l'utilisation de buffer et de cache.

Dans notre cas, 205Mo sont utilisés pour les buffers et le cache. On peut donc considérer que cette quantité de mémoire peut être libérée.

• La ligne Swap nous montre qu'il n'y pas pas de page dans la partition d'échange

• La ligne Total : nous donne le total de mémoire (RAM+SWAP)

On peut déduire de ce résultat que la configuration matériel de ce serveur est adaptée à sa fonction.

6.3 Gestion des processus

Un processus est l'instance d'exécution d'un programme, dans un certain contexte et pour un ensemble de données.Sous Linux, plusieurs processus peuvent exécuter parallèlement (apparemment) le même programme. Chacun des utilisateurs simultanés de ces instances de programme travaille dans sont propre contexte, avec ses données propres.Chaque fois que le noyau sélectionne l'exécution d'un processus, il y a commutation de contexte, à savoir que les nouvelles valeur des registres du processeur sont chargées. Ces valeur seront sauvegardées lors du passage au processus suivant.Les processus doivent se partager les ressources, et notamment le processeur. Si l'on prend le cas simple d'un système avec un processeur mono-coeur, un seul processus est exécuté à un instant t.Pour simplifier, un processus peut prendre 3 états :

• actif : il est en cours d'exécution et utilise le processeur,

• prêt : il est prêt à être exécuté dès que ce sera son tour et que le processeur sera libre,

• bloqué : il est en attente d'une ressource (fin d'une entrée/sortie par exemple)

Le changement d'état d'un processus peut être provoqué par:• une interruption (fin du temps alloué, terminaison d'une entrée sortie)

• le processus lui-même (appel à une fonction d'entrée/sortie bloquante par exemple)

• un autre processus (qui lui a envoyé un signal)

Administration d'un serveur sous linux CentOS : les bases 16/78

[root@srv_test ~]# free -mt total used free shared buffers cached Mem: 1010 982 27 0 162 613

-/+ buffers/cache: 205 804 Swap: 1023 0 1023

Total: 2034 982 1051 [root@srv_test ~]#

Page 17: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

Le multi-tâches préemptif implique la mise en place d'un mécanisme de priorité affectée aux processus. Un processus de priorité faible peut donc être interrompu par un autre de priorité plus élevée.D'une manière générale,

• le passage de l'état actif à l'état prêt est provoqué par le système (l'ordonnanceur)

• le passage de l'état actif à l'état bloqué est provoqué par le processus lui-même (Appel

bloquant)Les distributions GNU/Linux fournissent un ensemble d'outils permettant d'interagir avec les processus :

• pour la création (fork, task)

• pour l’envoi de signaux (kill)

• pour l'activation, la désactivation ou le blocage (wait)

Chaque processus a un père. Par exemple, le lancement d'une commande dans une console implique que la commande a comme père le shell lié à la console. La fermeture de la console entraine l'envoi du signal 15 (TERM) à l'ensemble des processus fils, ce qui provoque leur arrêt.Exemple :On peut déduire de cette commande l'arborescence des processus :

le serveur sshd (root)

-> la connexion ssh de l'utilisateur systeme sur pts/0

-> l'interpréteur de commande bash de l'utilisateur systeme

-> la commande ps -ef

-> la commande grep systeme

Si l'on arrête le serveur sshd, ou que l'on tue (par kill -9 20233) la connexion ssh, alors les processus enfants seront tués (bash, ps -ef et grep systeme)

L'ordonnanceur du noyau est aussi responsable de la synchronisation de l'accès aux ressources.

6.4 Virtual File System

Le VFS (Virtual File System) est une couche d’abstraction d’accès aux périphériques de stockage, mais aussi à certains éléments du matériel. Pour résumer, on réduit les fonctions à la lecture ou l’écriture de caractères ou de block, le noyau et les modules adéquats se chargeant de réaliser le travail en fonction des capacités du périphérique adressé.

Administration d'un serveur sous linux CentOS : les bases 17/78

[systeme@srv_test ~]$ ps -ef|grep systeme root 20231 4626 0 14:50 ? 00:00:00 sshd: systeme [priv]

systeme 20233 20231 0 14:50 ? 00:00:00 sshd: systeme@pts/0 systeme 20234 20233 0 14:50 pts/0 00:00:00 -bash

systeme 27521 20234 0 16:05 pts/0 00:00:00 ps -ef systeme 27522 20234 0 16:05 pts/0 00:00:00 grep systeme

[systeme@srv_test ~]$

Page 18: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

6.5 Architecture d’un système GNU/Linux

Le noyau, les utilitaires et les applications sont organisés en couches. La frontière principale se situe entre le noyau (espace mémoire noyau) et l'espace utilisateur. Le dialogue entre ces deux espace est réalisé à l'aide d'appels systèmes.

6.6 Arborescence d’un système GNU/Linux

L’arborescence est définie par la norme FHS (Filesystem Hierarcy Standard)

Administration d'un serveur sous linux CentOS : les bases 18/78

Illustration 1: Architecture simplifiée d'un système GNU/Linux

Page 19: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

/ Racine de l’arborescence système (souvent appelée root dans la littérature)

/bin contenant les exécutables nécessaires au fonctionnement du système

/dev contient les fichiers spéciaux de pilotes de périphériques

/proc fichier virtuel d’accès au noyau (configuration, état)

/usr/bin contient les exécutables des programmes installés

/usr/sbin contient les commandes uniquement disponibles pour le super utilisateur (root)

/sbincommandes indispensables au fonctionnement du système uniquement disponible pour le super utilisateur root

/boot contient l’image du noyau et les fichier nécessaires à l’amorçage du système

/etccontient les fichiers de configuration de la plupart des programmes systèmes, serveurs et souvent des programmes utilisateurs

/var contient des fichier variables utilisés par différents programmes (log, sockets)

/var/lockfichiers de verrouillage permettant de savoir l’état de certains processus (voir aussi /run/lock)

/var/run fichiers temporaires des logiciels en cours d’exécution

/usr/libcontient les bibliothèques dynamiques ou statiques. C’est le répertoir de recherche par défaut de l’éditeur de liens

/usr/lib/x11 librairies du serveur graphique (Xorg)

/usr/includecontient les fichiers d’entête (.h) pour la programmation en c (bibliothèque standards C, API

/usr/local peut contenir une nouvelle arborescence avec un /bin, un /etc. Historique

/usr/share fichier indépendants de l’architecture matérielle

/usr/src fichier sources c du noyau

/mntcontient les point de montage d’autres périphériques. La tendance aujourd’hui est d’utiliser /media

/home contient un répertoire par utilisateur

Administration d'un serveur sous linux CentOS : les bases 19/78

Page 20: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

/root Répertoire du super utilisateur root

/opt Contient des programmes supplémentaires

/tmp fichiers temporaires

/lib librairies nécessaire au fonctionnement de /bin et /sbin

/srv données pour les services (contenu http/ftp, samba)

Tableau 1: Arborescence du système de fichiers

Administration d'un serveur sous linux CentOS : les bases 20/78

Page 21: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

7 Périphériques de stockage de masseA la différence de ce qui se voit sous MS Windows, les périphériques de stockage de masse n’apparaissent pas directement avec une lettre de lecteur.

• Chaque disque physique comporte une ou plusieurs partitions

• chaque partition est affectée à un point de montage

• un point de montage est un répertoire de l’arborescence du système

7.1 Nommage des périphériques

Chaque disque physique a une existence dans le répertoire /dev.Jusqu’à récemment, les disque IDE étaient hd. Dans le cas de 2 disques, on aurait eu par exemple /dev/hda et /dev/sdb.Dans les version récente de noyau, les noms ont été unifiés à la mode sata. Toujours dans le cas de 2 disques, on a donc à présent /dev/sda et /dev/sdb.Les disque USB respectent la même règle. Dans le cas de deux disques physiques internes, la connection d’une clé USB provoquera la création d’un disque /dev/sdc.

7.2 Logical Volume Manager

LVM permet d’agréger plusieurs volumes physiques (PV) en un groupe de volumes (VG). Ce VG pourra ensuite être découpé en volumes logiques (LV). Ces LV sont l'équivalent de partitions qui pourront donc accueillir des systèmes de fichiers.

Le gros avantage de LVM est qu'il permet de s'affranchir de la limite imposée par la taille des disques. On peut ajouter un disque physique à un VG, étendre le LV suivant les besoins, puis redimensionner les systèmes de fichiers.

Administration d'un serveur sous linux CentOS : les bases 21/78

Illustration 2: Exemple de LVM

Page 22: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

7.3 Partitions

Un disque physique peut contenir une ou plusieurs partitions. Comme les disques, elles ont une existence dans le répertoire /dev et elles sont numérotées séquentiellement.Par exemple, dans le cas de la connexion d’une clé USB comportant une seule partition, le périphérique sera nommé /dev/sdb1.L'outil de base pour gérer les partitions est fdisk et il est appelé avec un paramètre pointant sur un disque physique. Exemple, pour créer la partition sda1 sur /dev/sda :

fdisk /dev/sdaL'ordre de création des partitions est important. Certaines n'auront jamais besoin d'être étendues alors que d'autre peuvent un jour être saturées et nécessiter un redimensionnement.L'ordre préconisé est le plus logique :

• /boot

• swap

• /

• le reste si il existe

7.4 Les systèmes de fichiers

Avant d’être exploitable, une partition doit être formatée. Cette opération permet de définir de quelle manière les données seront écrites sur la partition.Il existe plusieurs formats de système de fichiers. Les plus courant sur les système GNU/Linux sont:

• ext2 : obsolète mais encore récemment utilisé pour /boot. Lui préférer ext3.

• ext3 : identique à ext2 mais journalisé donc plus robuste

• ext4: le plus récent (kernel>2.6.28)

• swap : format spécifique des partitions d’échange

• fat32 : souvent trouvé sur les clés/disques USB

D’autres systèmes de fichiers sont reconnus:• reiserfs

• jfs

• xfs

• NTFS

Il y a plusieurs outils destiné à gérer les systèmes de fichiers, mais ils travaillent tous sur une partition. Par exemple, pour formater la partition /dev/sda1 en ext3 journalisé, labellisée « donnees » :

mke2fs -t ext3 -j -L donnees /dev/sda1

Le formatage d'une partition de swap est réalisé par la commade mkswap. Exemple :mkswap /dev/sda1

7.5 Points de montage

Le chemin de périphérique sous /dev ne permet pas d’accéder directement au système de fichiers du disque. Pour ce faire, il est nécessaire de mettre en place un point de montage.Un point de montage est un répertoire que l’on va lier à la partition par l’instruction mount. Cette opération s’appelle le montage.

Administration d'un serveur sous linux CentOS : les bases 22/78

Page 23: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

Pour réaliser le montage, le répertoire destination doit exister.

Si le montage échoue pour une raison ou pour une autre, les données éventuellement écrites vont se placer dans la partition de niveau supérieur. Exemple

Soit l’organisation de partition suivante:/ -> sda1 (10go)/var -> sda2 (20go)/var/log -> sda3 (20go)

Si pour une raison ou une pour une autre la partition sda3 n’est pas montée, parce qu’elle est en défaut après un redémarrage du système par exemple, les logs seront bien écrits dans le répertoire /var/log, mais dans la partition sda2.Poussons le raisonnement plus loin. Expert des incidents disques en tous genres, vous avez réparé votre partition sda3 et l’avez remontée. Sans précaution, les données qui ont été écrites alors que sda3 n’était pas montée existent toujours et, bien qu'inaccessibles, prennent de l’espace sur sda2.

7.6 Le schéma de partionnement.

Il y a encore quelques années, au vu de la faible capacité des disques, le partitionnement était primordial et les schémas préconisés étaient complexes.De nos jours, les capacités disque ayant atteint des valeur astronomiques, les schéma de partitionnement en sont grandement simplifiés.Ce qui doit toujours exister:

• Une partition / permettant d’héberger le système et les applications

• Une partition /boot pour héberger le kernel

• Une partition swap

De plus, suivant la destination du serveur, d’autres partitions peuvent être les bienvenues:• /var/log pour éviter de saturer / en cas de problème générant beaucoup de logs

• /var/data ou /srv pour un serveur de fichier par exemple

Il existe encore d’autre cas de partitionnement spécifiques pour, par exemple, sauvegarder à chaud des bases de données (snapshot), ou disposer d’une partition en mémoire (tmpfs).

Administration d'un serveur sous linux CentOS : les bases 23/78

Page 24: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

8 Installation d'une distribution

8.1 Choix de la distribution

Dans le cas qui nous intéresse, il ne peut s’agir que d’une distribution serveur.Il faut garder à l’esprit que nous travaillons dans un contexte, et qu’un serveur n’est jamais seul au monde. Plus les distributions d’un parc sont homogènes, plus le parc sera robuste.

8.2 Choix du type d’installation

Comme nous l’avons vu dans le chapitre traitant de l’architecture d’un système GNU/Linux, l’organisation d’un tel système est en couche, du noyau jusqu’aux applications graphiques.Par ailleurs, nous cherchons à obtenir un système robuste et la robustesse est toujours dépendante de la complexité.La mode est au tout graphique. Cette mode a deux inconvénients majeurs:

• elle apporte une complexité importante

• elle masque le fonctionnement du système à l’administrateur

Ma philosophie est donc d’en installer le moins possible, quitte à ajouter des applications par la suite.

8.3 Méthode d’installation

Il existe 3 méthodes principales d’installation:• à partir des CD/DVD de la distribution (En LiveOS la plupart du temps)

• à partir d’un CD de boot standard en installation réseau

• à partir d’un CD de boot standard, d’un fichier kickstart personnalisé, en installation réseau

La dernière méthode, bien que plus complexe à mettre au point, permet ensuite une installation minimale et rapide.

8.4 Méthode de mise à jour

Un serveur n’est pas un poste de travail. L’administrateur doit garder une vision précise sur les mises à jour des éléments du système.Les mises à jour sont de 3 types:

• critiques, corrigeant des failles de sécurité

• correctives, corrigeant des bugs

• évolutives, apportant de nouvelles fonctionnalités

Si l’application des correctifs de sécurité est indispensable, les correctifs de bugs et les évolutions sont à examiner au cas par cas. Il n’est pas indispensable de casser un système qui fonctionne en production.

Administration d'un serveur sous linux CentOS : les bases 24/78

Page 25: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

La bonne méthode est de disposer d’un deuxième environnement, identique à celui de production, destiné à la recette des mise à jour. Cet environnement peut être connecté aux dépôts de la distribution sur internet, pas l’environnement de production. Une fois les mises à jour testées, elle sont dupliquées dans un dépôt local accessible par l’environnement de production.

Cette méthode demande bien sûr de la rigueur, mais surtout des ressources. La charge de travail peut-être adapter en définissant une période de recette des mises à jour.

Administration d'un serveur sous linux CentOS : les bases 25/78

Illustration 3: Architecture de recette des mises à jour

Page 26: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

8.5 Installation d'une CentOS 6

8.5.1 Démarrage sur une image de netinstall

8.5.2 Choix de la langue

8.5.3 Choix du clavier

Administration d'un serveur sous linux CentOS : les bases 26/78

Illustration 4: Installation - démarrage

Illustration 5: Installation - choix de la langue

Illustration 6: Installation - choix du clavier

Page 27: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

8.5.4 choix du type d'installation (URL)

8.5.5 configuration du réseau

Administration d'un serveur sous linux CentOS : les bases 27/78

Illustration 7: Installation - choix du type d'installation

Illustration 8: Installation - choix de la configuration réseau

Illustration 9: Installation - configuration statique du réseau

Page 28: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

8.5.6 choix de l'URL source

8.5.7 Téléchargement de l'image d'installation

8.5.8 Validation des disques

Lorsqu'un disque est vierge, cas particulier des VM, cet écran peut apparaitre :

Administration d'un serveur sous linux CentOS : les bases 28/78

Illustration 10: Installation - saisie de l'URL source

Illustration 11: Installation - chargement de l'image

Illustration 12: Installation - écran de bienvenue

Page 29: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

8.5.9 Choix du fuseau horaire

Bien vérifier que la case "l'Horloge système utilise UTC" soit cochée.

8.5.10 Saisie du mot de passe root

Administration d'un serveur sous linux CentOS : les bases 29/78

Illustration 13: Installation - Système de fichier non reconnu

Illustration 14: Installation - choix du fuseau horaire

Illustration 15: Installation - saisie du mot de passe root

Page 30: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

8.5.11 Confirmation du type de partionnement

8.5.12 Rédémarrage

Lors du démarrage, les opération réalisées sont masquées par une barre de défilement.

Administration d'un serveur sous linux CentOS : les bases 30/78

Illustration 16: Installation - confirmation du type de partitionnement

Illustration 17: Installation - confirmation de la configuration disque

Illustration 18: Installation - fin

Page 31: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

Il est possible de voir le détail de la séquence de démarrage en appuyant sur <ESC>

8.5.13 Système opérationnel

Administration d'un serveur sous linux CentOS : les bases 31/78

Illustration 19: Démarrage en mode masqué

Illustration 20: Démarrage en mode détaillé

Illustration 21: Système opérationnel

Page 32: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

8.6 Le gestionnaire de paquet yum

Sur les distribution de la famille RedHat, les applications sont livrées sous forme de paquets rpm (RedHat Package Manager). Ces paquets permettent de gérer :

• l'installation de l'application (binaires ou scripts)

• sa configuration par défaut (niveau d'exécution, fichiers de configuration)

• les dépendances (librairies, autres produits)

• les mises à jour

• la désinstallation propre

L'outil de gestion des applications est Yum qui est lui-même une surcouche à rpm.

Yum repose sur un système de dépôts (repositories) indexés qui permettent de centraliser les rpm et de faire des recherches rapides. Les indexes sont stockés dans un cache localement.

8.6.1 Les syntaxes de base de yum

La syntaxe de base de yum est assez simple, même si les possibilités sont étendues.

Recherche d'un paquet

Installation d'un paquet

Désinstallation d'un paquet

Mise à jour de tous les paquet (mais on peut préciser un paquet en particulier) :

Administration d'un serveur sous linux CentOS : les bases 32/78

[root@srv_test ~]# yum search nom-du-paquet

[root@srv_test ~]# yum install nom-du-paquet

[root@srv_test ~]# yum remove nom-du-paquet

[root@srv_test yum.repos.d]# yum update

Page 33: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

8.6.2 Configuration des dépôts de yum

L'installation par défaut a configuré le gestionnaire de paquet pour aller chercher ses sources sur les miroirs internet.

Nous allons modifier cette configuration de façon à n'utiliser que notre dépôt local. Pour cela, il faut supprimer les fichiers présents dans /etc/yum.repos.d en ne gardant que CentOS-Base.repo :

Il faut ensuite éditer le fichier restant pour lui donner les bonnes adresses de repos

L'éditeur vi ouvre le fichier en question . Les lignes à modifier sont en gras :

Administration d'un serveur sous linux CentOS : les bases 33/78

[root@srv_test ~]# cd /etc/yum.repos.d[root@srv_test yum.repos.d]# lltotal 20 -rw-r--r--. 1 root root 1616 3 avril 12:57 CentOS-Base.repo -rw-r--r--. 1 root root 638 1 déc. 01:06 CentOS-Debuginfo.repo -rw-r--r--. 1 root root 630 1 déc. 01:06 CentOS-Media.repo -rw-r--r--. 1 root root 4528 1 déc. 01:06 CentOS-Vault.repo

[root@srv_test yum.repos.d]# ls CentOS-*|grep -v Base|xargs rm -f[root@srv_test yum.repos.d]# lltotal 4 -rw-r--r--. 1 root root 1616 3 avril 12:57 CentOS-Base.repo

[root@srv_test yum.repos.d]#

[root@srv_test yum.repos.d]# vi CentOS-Base.repo

Page 34: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

8.6.3 Mise à jour de la distribution

Il ne reste plus qu'à mettre à jour le cache des rpms, puis la distribution elle-même. Tout peut être fait en une seule ligne :

La première commande vide le cache de yum, et si elle réussit, la deuxième commande met à jour le

Administration d'un serveur sous linux CentOS : les bases 34/78

# CentOS-Base.repo # # The mirror system uses the connecting IP address of the client and the # update status of each mirror to pick mirrors that are updated to and # geographically close to the client. You should use this for CentOS updates # unless you are manually picking other mirrors. # # If the mirrorlist= does not work for you, as a fall back you can try the # remarked out baseurl= line instead. # #

[base] name=CentOS-$releasever - Base #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os baseurl=http://10.203.18.34/repos/centos/$releasever/os/$basearch/ gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#released updates [updates] name=CentOS-$releasever - Updates #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates baseurl=http://10.203.18.34/repos/centos/$releasever/updates/$basearch/ gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#additional packages that may be useful [extras] name=CentOS-$releasever - Extras #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras baseurl=http://10.203.18.34/repos/centos/$releasever/extras/$basearch/ gpgcheck=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

#additional packages that extend functionality of existing packages [centosplus] name=CentOS-$releasever - Plus #mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus baseurl=http://10.203.18.34/repos/centos/$releasever/centosplus/$basearch/ gpgcheck=0 enabled=0 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

[root@srv_test yum.repos.d]# yum clean all && yum update -y

Page 35: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

cache, puis l'ensemble des rpms dont une mise à jour existe dans le dépôt update. Le paramètre -y permet de répondre automatique lors de la demande de confirmation.

8.7 Configuration de la distribution

8.7.1 Installation de l'aide

Il nous manque la bible :

8.7.2 Création d'un utilisateur d'administration

Il est totalement déconseillé d'utiliser couramment le super utilisateur root. Afin d'éviter cela, il suffit de créer un utilisateur destiné à l'administration, et de lui donner les droits d'emprunter l'identité de root par la commande sudo.

On créé d'abord un nouvel utilisateur :

Il faut ensuite lui donner le droit d'exécuter des commandes en tant que root. Le fichier /etc/sudoers ne doit pas être édité directement. Pour cela, le système nous offre une commande adaptée : visudo.

Le fichier /etc/sudoers est ouvert dans l'éditeur vi :

Administration d'un serveur sous linux CentOS : les bases 35/78

[root@srv_test ~]# useradd systeme[root@srv_test ~]# passwd systemeChangement de mot de passe pour l'utilisateur systeme. Nouveau mot de passe : Retapez le nouveau mot de passe : passwd : mise à jour réussie de tous les jetons d'authentification.

[root@srv_test ~]#

[root@srv_test ~]# visudo

[root@srv_test yum.repos.d]# yum install -y man

Page 36: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

Recherchons la ligne qui commence par root en tapant :

<ESC> puis /^root

Cette commande de vi (recherche de la première ligne qui commence par root) positionne le curseur sur la ligne :

On se place ensuite sur la ligne juste en dessous qui est vide, on passe en mode insertion par appui sur la touche <i> et on saisi la ligne suivante :

Puis <ESC> et <w><q>

Avec cette configuration, l'utilisateur pourra passer root par la commande :

sudo su -

Le mot de passe qui lui sera demandé sera le sien, pas celui de root.

On peut aussi éviter la saisie du mot de passe en remplaçant la ligne par :

Administration d'un serveur sous linux CentOS : les bases 36/78

## Sudoers allows particular users to run various commands as ## the root user, without needing the root password. ## ## Examples are provided at the bottom of the file for collections ## of related commands, which can then be delegated out to particular ## users or groups. ## ## This file must be edited with the 'visudo' command.

## Host Aliases ## Groups of machines. You may prefer to use hostnames (perhaps using ## wildcards for entire domains) or IP addresses instead. # Host_Alias FILESERVERS = fs1, fs2 # Host_Alias MAILSERVERS = smtp, smtp2

## User Aliases ## These aren't often necessary, as you can use regular groups ## (ie, from files, LDAP, NIS, etc) in this file - just use %groupname ## rather than USERALIAS # User_Alias ADMINS = jsmith, mikem

## Command Aliases ## These are groups of related commands...

root ALL=(ALL) ALL

systeme ALL=(ALL) ALL

systeme ALL=(ALL) NOPASSWD : ALL

Page 37: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

9 La ligne de commande

9.1 Accès aux terminaux

Le système GNU/Linux offre 6 terminaux virtuels de base. Il sont accessible par la combinaison de touche <CTRL>+<ALT>+<Fx> avec 1<x<6.Dans le cas d’une installation avec un serveur graphique, <CTRL>+<ALT>+<F7> donne accès à l’environnement graphique.Une fois le terminal sélectionné, il faut s’identifier en saisissant un nom d’utilisateur et le mot de passe correspondant.Lors d’une installation minimale, seul l’utilisateur root est utilisable. La première chose à faire sera de créer un autre compte.Lorsqu'un utilisateur est identifié, il y a affichage de ce que l'on appelle le prompt :

[u

ou dans le cas de root :

9.2 Les commandes de base

Une commande est soit intégrée au shell, soit un programme à part entière.Les commande utilisent presque toujours le même format: commande [options1..optionN] [paramètre1 … paramètreN]Ce qui est entre crochet est facultatif.Les options définissent le comportement de la commande, son format de sortie par exemple. Elles peuvent être regroupées. Par exemple:

ls -a -l -hest l’équivalent de:

ls -alh

Les paramètres peuvent être la source et la cible du traitement, par exemple.cp /etc/samba/smb.conf /etc/samba/smb.conf.orig

9.3 L’interprétation des commandes

L'interpréteur de commande utilise le caractère espace comme séparateur. Il y a donc des cas où il peut être trompé, par exemple quand un nom de fichier contient des espaces. Il existe plusieurs méthode pour parer à ce type de situation:

• échapper les caractères spéciaux en les précédent du caractère \

• en englobant la chaîne de caractère par des ‘ (pas d’interprétation des expressions à

l’intérieur de la chaîne)• en englobant la chaîne par des " (les expressions à l'intérieur de la chaîne sont interprétées)

Administration d'un serveur sous linux CentOS : les bases 37/78

[systeme@srv_test ~]$

[root@srv_test ~]#

Page 38: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

9.4 Les redirections

Les entrées sorties présentent 3 périphériques virtuels standards :

• stdin : entrée standard qui est le clavier de la console

• stdout : sortie standard qui est l'écran de la console, numérotée 1

• stderr : sortie standard des erreur qui est l'écran de la console numéroté 2

Les système de la famille UNIX permettent de rediriger ces périphériques standards vers des fichiers ou des processus.

9.4.1 Redirection vers un fichiers

La redirection vers un fichier est réalisée par le signe

• > pour une sortie avec création/écrasement de la destination

• >> pour une sortie avec ajout en fin de la destination

• < pour une entrée (lecture)

Exemples :

Dépose le résultat de la commande ls -l dans fichier.txt

Ajoute le résultat de la commande ls -l à la fin de fichier.txt

Dépose le résultat de la commande ls -l dans fichier.txt, sans les erreurs éventuelles

Dépose le résultat de la commande ls -l dans fichier.txt, erreurs comprises

Affiche le contenu de fichier.txt :

9.4.2 Redirection vers un processus

La redirection vers un processus (pipe) est réalisée par le caractère |.

Exemple :

Affiche le résultat de la commande ls -l, uniquement pour les fichiers dont les droits sont totalement ouverts (777)

Administration d'un serveur sous linux CentOS : les bases 38/78

[systeme@srv_test ~]$ ls -l|grep 'rwxrwxrwx'

[systeme@srv_test ~]$ cat < fichier.txt

[systeme@srv_test ~]$ ls -l 2>&1>fichier.txt

[systeme@srv_test ~]$ ls -l 2>/dev/null 1>fichier.txt

[systeme@srv_test ~]$ ls -l>>fichier.txt

[systeme@srv_test ~]$ ls -l>fichier.txt

Page 39: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

Pour éviter les erreurs parasites si l'utilisateur courant n'a pas les droits sur certains fichiers, on peut rediriger uniquement la sortie standard sans les erreurs :

9.5 Commandes de base

9.5.1 man

C’est la première commande à connaître. Elle permet d’afficher la page de manuel d’une commande. Les pages sont regroupées en sections. Sans précision de la section, la section est prise par défaut, ce qui correspond aux commandes exécutables ou aux commandes du shell.Exemple: man passwd -> donne le manuel de la commande passwd man 5 passwd -> donne le manuel du format du fichier /etc/passwdPour en savoir plus, voir man man ;-)

9.5.2 ls [options ] [fichiers]

Permet de lister les fichiers d’un répertoire. Si <fichiers> n’est pas spécifier, c’est le répertoire courant qui est listé. Fichier peut contenir des caractères « joker » :

• ? : remplace un seul caractères

• * : remplace un nombre quelconque de caractères (0 compris)

Quelques options courantes:• -a affiche tous les fichiers, même les fichiers cachés

• -l affiche une liste détaillée, avec propriétaire, heure de création, droits, taille…

• -h humainement compréhensible, par conversion en ko, mo, go…

Pour en savoir plus, voir man ls ;-)

9.5.3 cd [options][répertoire]

Permet de changer le répertoire courant. Il existe quelques racourcis:• cd ~ -> va dans le répertoire home de l’utilisateur courant

• cd -> même effet

Pour en savoir plus, cd --help, il n’y a pas de page man :-(

9.5.4 cp [options] source destination

Permet de copier le fichier (ou répertoire) source vers destinationPar exemple pour copier un répertoire complet, on utilise l’option r (pour recurcive):

cp -r /home/utilisateur1/log /tmp/Pour en savoir plus… bon j’arrête là, vous avez compris, ou alors…

9.5.5 rm [options] fichier

Cette commande permet de supprimer un fichier. Dans le cas d’un répertoire, l’option -r est obligatoire.

Administration d'un serveur sous linux CentOS : les bases 39/78

[systeme@srv_test ~]$ grep 'toto' * 2>/dev/null|cut -f1

Page 40: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

9.5.6 mv [options] source destination

Permet de déplacer un fichier(répertoire), sachant qu’un renommage est considéré comme un déplacement.

9.5.7 touch [options] fichier

Cette commande a deux usages:• créer un fichier vide

• modifier les attribut de date d’un fichier existant

9.5.8 mkdir [options] répertoire

Permet la création d’un répertoire.L'option -p permet de créer l'arborescence intermédiaire si besoin.

9.5.9 cat [options] fichiers

Affiche le contenu concaténé dans la sortie standard.

9.5.10 More et less

Affiche le contenu d'un fichier imprimable. More ne peut défiler que vers le bas alors que less est beaucoup plus évolué. Il permet de naviguer dans le fichier et de faire des recherches, avec la même syntaxe que vi en mode commande.

9.5.11 Echo

La commande echo affiche ce qu'on lui passe en paramètre : chaîne littérale, expression, variable ou mélange des trois.

Une option intéressante est -n qui supprime le retour à la ligne.

Exemple :

qui affichera :

le début de la phrase et la suite

Administration d'un serveur sous linux CentOS : les bases 40/78

var1="la suite"echo le début de la phase et $var1

Page 41: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

10 L’éditeur de texte vimvim n’est pas installé par défaut. Il est une évolution de vi dont il améliore certains aspects. Par exemple, les touches backspace et suppr ne sont pas utilisable sous vi.On lance l’édition d’un fichier par la commande vim fichierDans vim, il existe deux modes: le mode commande et le mode édition. Le passage en mode commande se fait par un appui sur la touche <ESC>Bien que rustique, vim est un outil très puissant et a l’avantage (ou son grand-père vi) d’être disponible sur toutes les distributions.

Quelques commandes de vim:

Administration d'un serveur sous linux CentOS : les bases 41/78

Page 42: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

dd coupe la ligne courante

P colle au début de la ligne

x supprime le caractère sous le curseur

D Supprime la fin de la ligne

R remplace caractère par caractère

u annuler les modifications

ZZ sauvegarde les modifications et quitte

:w Sauvegarde les modifications

:q Quitte

! Force la commande

/<s> Recherche vers le bas la chaîne <s> (supporte les regexpr)

?<s> Recherche vers le haut la chaîne <s> (supporte les regexpr)

yy copie la ligne courante

yw copie un mot

p colle

$ aller à la fin de la ligne

0 aller en début de ligne

gg Aller en début de document

G aller en fin de document

:<n> aller à la ligne <n>

== réindente la ligne courante

gg=G réindente tout le document

=i{ réindente tout le bloc accolades exlues

=a{ réindente tout le bloc accolades comprises

Tableau 2: Principales commandes de vi

Administration d'un serveur sous linux CentOS : les bases 42/78

Page 43: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

11 Manipulation des disques

11.1 Obtention de la liste de partitions connues du système

La commande blkid retourne la liste des périphériques de type block connus par le système. Cette liste inclut la liste des LV d'un éventuel LVM. Exemple :

Sur la même configuration système, la commande fdisk -l liste l'ensemble des partitions de tous les disques connus, LV compris. Exemple :

Administration d'un serveur sous linux CentOS : les bases 43/78

[root@srv_test ~]# blkid /dev/sda1: PARTUUID="3a05da0e-ee54-4688-95ec-9e97c202536e" /dev/sda3: UUID="Ap0b61-Bf7U-y6HS-vbfo-u6R5-qau7-XwKesq" TYPE="LVM2_member" PARTUUID="152156a9-f347-4f3c-aa66-6666af0576e6" /dev/mapper/vg_srv_test-lv_swap: UUID="aa470cd5-d6b7-4df2-8108-2f9809a15c57" TYPE="swap" /dev/mapper/vg_srv_test-lv_root: LABEL="_srv_test_root" UUID="3ff01c04-58da-4140-8246-6d42579c3fe3" TYPE="ext4" /dev/mapper/vg_srv_test-lv_home: UUID="569e9ea2-d0fd-44fc-bddd-8fed0b5541ae" TYPE="ext4" [root@srv_test ~]#

[root@srv_test ~]# fdisk -l Disque /dev/sda : 250.1 Go, 250059350016 octets, 488397168 secteurs Unités = secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets Type d'étiquette de disque : gpt # Start End Size Type Name 1 2048 4095 1M BIOS boot parti 2 1028096 488396799 232,4G Linux LVM

Disque /dev/mapper/vg_srv_test-lv_swap : 2080 Mo, 2080374784 octets, 4063232 secteurs Unités = secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets

Disque /dev/mapper/vg_srv_test-lv_root : 53.7 Go, 53687091200 octets, 104857600 secteurs Unités = secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets

Disque /dev/mapper/vg_srv_test-lv_home : 166.4 Go, 166429982720 octets, 325058560 secteurs Unités = secteur de 1 × 512 = 512 octets Taille de secteur (logique / physique) : 512 octets / 512 octets taille d'E/S (minimale / optimale) : 512 octets / 512 octets [root@srv_test ~]#

Page 44: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

11.2 Interroger LVM

11.2.1 Récupération des attributs d'un Volume Group

La récupération des caractéristiques d'un Volume Group se fait par la commande vgdisplay. Sans argument, elle retourne les caractéristiques de tous les VG. Si le nom d'un VG est passé en paramètre, elle ne retourne que les caractéristiques du VG en question. Exemple :

11.2.2 Récupération des attributs des Physical Volumes

La commande pvdisplay sans argument retourne les caractéristiques de l'ensemble des volumes physiques connus. Exemple :

11.2.3 Récupération des attributs des Logical Volumes

La commande lvdisplay, sans paramètre, retourne les caractéristiques de l'ensemble des volumes logiques connus.

Exemple :

Administration d'un serveur sous linux CentOS : les bases 44/78

[root@srv-test ~]# pvdisplay --- Physical volume --- PV Name /dev/sda3 VG Name vg_srv_test PV Size 232,40 GiB / not usable 21,00 MiB Allocatable yes PE Size 32,00 MiB Total PE 7436 Free PE 814 Allocated PE 6622 PV UUID Ap0b61-Bf7U-y6HS-vbfo-u6R5-qau7-XwKesq [root@srv_test ~]#

[root@wli-fred ~]# vgdisplay --- Volume group --- VG Name vg_srv_test System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 7 VG Access read/write VG Status resizable MAX LV 0 Cur LV 3 Open LV 3 Max PV 0 Cur PV 1 Act PV 1 VG Size 232,38 GiB PE Size 32,00 MiB Total PE 7436 Alloc PE / Size 6622 / 206,94 GiB Free PE / Size 814 / 25,44 GiB VG UUID upmWk0-FsJ5-S0n5-raHQ-4ikw-Nvfo-dVXa9d [root@wli-fred ~]#

Page 45: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

11.3 Ajout d'un disque physique à un LVM existant

La plus part des distributions récentes installent le système sur un LVM. Comme dit plus haut, cela

Administration d'un serveur sous linux CentOS : les bases 45/78

[root@srv_test ~]# lvdisplay --- Logical volume --- LV Path /dev/vg_srv_test/lv_swap LV Name lv_swap VG Name vg_srv_test LV UUID 92W0sO-i603-cTes-JvBM-mOen-a0xb-O3uc2R LV Write Access read/write LV Creation host, time , LV Status available # open 2 LV Size 1,94 GiB Current LE 62 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 --- Logical volume --- LV Path /dev/vg_srv_test/lv_home LV Name lv_home VG Name vg_srv_test LV UUID cfO7yL-cOKf-a6ao-He1s-jGaj-1Gug-ZVdNbt LV Write Access read/write LV Creation host, time , LV Status available # open 1 LV Size 155,00 GiB Current LE 4960 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:2 --- Logical volume --- LV Path /dev/vg_srv_test/lv_root LV Name lv_root VG Name vg_srv_test LV UUID UWE9qH-roZf-gOCl-BJ0b-AOr5-1n1H-LoR9Qw LV Write Access read/write LV Creation host, time , LV Status available # open 1 LV Size 50,00 GiB Current LE 1600 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 [root@srv_test ~]#

Page 46: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

a l'avantage de permettre d'augmenter la capacité disque relativement facilement.

La première chose à faire, est de monter le disque physique. Deux cas se présente :

• le serveur dispose d'une baie de disque hotplug et il n'y aura pas besoin de redémarrer

• le serveur ne dispose pas de baie hotplug, et il est alors nécessaire d'arrêter le serveur, de monter le disque, puis de redémarrer le serveur.

Une fois le disque reconnu par le système, il est nécessaire de créer une partition de type LVM sur ce disque. Cette opération est réalisée par l'outil fdisk. En admettant que le nouveau disque s'appelle sdb, on lance la commande

Le message d'erreur est normal. Il précise juste que le disque ne comporte pas de partition valide.

On créé une nouvelle partition par la commande N :

On choisit une partition de type primaire ;

On lui affecte le numéro 1, puis deux fois <ENTER> pour valider les secteurs de début et de fin par défaut (totalité de l'espace) :

Il reste à fixer le type LVM à la partition :

On peut contrôler la bonne création de la partition par la commande p, qui liste les partitions.

La dernière opération à réaliser est d'écrire la nouvelle table de partitions sur le disque par la

Administration d'un serveur sous linux CentOS : les bases 46/78

[root@srv_test ~]# fdisk /dev/sdbDevice contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabelBuilding a new DOS disklabel with disk identifier 0x3657f1c2.Changes will remain in memory only, until you decide to write them.After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)Command (m for help) :

Command (m for help) :n

Partition type: p primary (0 primary, 0 extended, 4 free) e extendedSelect (default p): p

Partition number (1-4, default 1): 1First sector (2048-41943039, default 2048): Using default value 2048Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): Using default value 41943039

Command (m for help) :tSelected partition : 1Hex code (type L to list codes) : 8eChanged system type of partition 1 to 8e (Linux LVM)

Page 47: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

commande w :

La partie bas niveau est terminée. Nous pouvons passer à l'ajout du nouveau disque au groupe de volume existant.

La commande vgdisplay, comme vu plus haut, nous permet d'obtenir le nom du VG. Prenons par exemple vg_srv_test.

Commençons par étendre le VG pour lui ajouter le nouveau disque :

L'espace a été ajouté au volume groupe, ce qu'on peut vérifier par la commande vgdisplay vg_srv_test, mais il n'est pour l'instant affecté à aucun volume logique.

Si par exemple, on veut affecter le nouvel espace disponible à la racine / du système, il est nécessaire d'étendre le LV lv_root (On trouve le nom de ce LV par la commande lvdisplay)

Quelques explication sur cette ligne :

• le paramètre -l spécifie que l'on travaille en extends (unité d'allocation logique)

• le paramètre +100%FREE précise que l'on ajoute la totalité de l'espace disponible sur le Volum Group

• /dev/vg_srv_test/lv_root est la cible (on aurait pu passer par /dev/mapper/)

Nous avons donc à présent une « partition » /dev/vg_srv_test/lv_root avec de l'espace disponible. Il ne reste donc qu'à étendre le système de fichiers. Cette opération peut être réalisée à chaud :

Sans paramètre, la commande resize2fs redimensionne de façon à utiliser la totalité l'espace disponible.

Administration d'un serveur sous linux CentOS : les bases 47/78

Command (m for help) :wThe partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: If you have created or modified any DOS 6.xpartitions, please see the fdisk manual page for additionalinformation.Syncing disks.

[root@srv_test ~]#vgextend vg_srv_test /dev/sdb1No physical volume label read from /dev/vdb1 Physical volume "/dev/vdb1" successfully created Volume group "vg00" successfully extended

[root@srv_test ~]#lvextend -l +100%FREE /dev/vg_srv_test/lv_root

[root@srv_test ~]#resize2fs /dev/vg_srv_test/lv_root

Page 48: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

12 Gestion des utilisateurs et des groupes

12.1 La mécanique sous-jacente

12.1.1Le fichier /etc/passwd

Chaque utilisateur dispose d'une entrée dans le fichier /etc/passwd. Ce fichier a un format spécial. Chaque ligne contient sept champs, délimités par le caractère ':'

• le nom de l'utilisateur

• son mot de passe chiffré

• son identifiant unique UID

• l'identifiant GID de son groupe principal

• un commentaire pouvant par exemple décrire l'utilisateur

• le répertoire personnel de l'utilisateur

• la commande exécutée immédiatement à la connexion de l'utilisateur (le plus fréquemment, c'est le shell)

Pour interdire la connexion d'un utilisateur, on peut remplacer le mot de passe par une '*'.

12.1.2Le fichier /etc/group

Chaque groupe dispose d'une entrée dans le fichier /etc/group. Il contient 4 champs séparés par le caractère ':'

• le nom

• le mot de passe du groupe, fixé à 'X' lors de l'utilisation de shadow

• le GID unique du groupe

• la liste des membres du groupe, séparés par le caractère ','

12.1.3Le fichier /etc/shadow

Le fichier /etc/passwd contient les mots de passe chiffrés et quelques autres informations. Il y a 9 champs séparés par le caractère ' :'

• le nom de l'utilisateur

• le mot de passe chiffré

• le nombre de jours entre le 01/01/1970 et le dernier changement du mot de passe

• le nombre de jours avant que le mot de passe ne puisse être changé (normalement 0)

• le nombre de jours après quoi le mot de passe doit être changé (normalement 99999)

• le nombre de jours pendants lesquels l'utilisateur sera averti de la nécessité de changer son mot de passe

• le nombres de jours après quoi le mot de passe expire

• le nombre de jours entre le 01/01/1970 et la désactivation du compte

Administration d'un serveur sous linux CentOS : les bases 48/78

Page 49: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

• Inutilisé

12.2 Les commandes de gestion des utilisateurs et des groupes

12.2.1Lister les utilisateurs

La commande getent passwd permet d'afficher la liste des utilisateurs.

12.2.2Lister les groupes

La commande getent group permet d'afficher la liste des groupes.

12.2.3 Création d'utilisateurs

La commande useradd permet de créer ou de modifier un utilisateur. Quelques paramètres utilises :

• -c commentaire lié à l'utilisateur

• -g groupe principale

• -G liste des groupes secondaires séparés par le caractères ','

• -s shell

• -u uid

• -d répertoire utilisateur (home)

• -m création du répertoire utilisateur et recopie du contenu de /etc/skel

• -n création d'un groupe de même nom que l'utilisateur

Exemple :

12.2.4 Changement du mot de passe d'un utilisateur

La commande passwd permet de fixer ou de changer le mot de passe d'un utilisateur. Deux cas sont à considérer :

• un utilisateur veut changer son mot de passe : il lance la commande passwd et saisit son mot de passe actuel, puis deux fois le nouveau mot de passe

• le super utilisateur veut changer le mot de passe d'un utilisateur : il lance la commande passwd en lui passant le nom de l'utilisateur en paramètre, puis saisit deux fois le nouveau mot de passe.

12.2.5 Création de groupes d'utilisateurs

La commande groupadd permet de créer un nouveau groupe d'utilisateurs. On peut forcer le gid par le paramètre -g

Exemple :

Administration d'un serveur sous linux CentOS : les bases 49/78

[root@srv_test ~]#useradd -d /home/test -s /bin/bash -m -n test

Page 50: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

12.2.6 Modification des groupes d'un utilisateur

La modification du groupe principal d'un utilisateur est réalisée par la commande :

usermod -g nouveau_groupe utilisateur

L'ajout d'un utilisateur à un groupe secondaire est réalisé par la commande :

usermod -a -G nouveau_groupe utilisateur

12.3L'emprunt d'identité

12.3.1 La commande su

La commande su permet d'ouvrir une session avec un autre utilisateur que l'actuel. Elle est de la forme :

su [-] login

Si le – est passé en paramètre, un environnement est chargé comme si l'utilisateur login s'était connecté directement.

Si login n'est pas spécifié, le super utilisateur root est sélectionné.

12.3.2 La commande sudo

La commande sudo permet d'exécuter une commande en empruntant l'identité d'un autre utilisateur. Des droits d'exécution très fins, en fonction de l'utilisateur et de la commande peuvent être définis dans le fichier /etc/sudoers. Ce fichier ne doit pas être édité directement. Il faut utiliser la commande visudo.

Le cas le plus courant d'utilisation de sudo est de combiner cette commande avec su pour s'identifier root :

sudo su - → exécute su – si l'utilisateur courant en a le droit.

Administration d'un serveur sous linux CentOS : les bases 50/78

[root@srv_test ~]#groupadd -g 510 test

Page 51: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

13 Gestion du système de fichiers

13.1 les droits du système de fichiers

Dans un système GNU/Linux, les droits reposent sur deux notions :

• la notions de propriétaire (UGO=User, Group, Other)

• la notions d'accès (RWX=Read, Write, eXec)

Exemple :

La première colonne nous précise le type d'objet : • - pour un fichier, • d pour un répertoire.

Nous avons ensuite 3 groupes de 3 caractères. Ces trois groupes correspondent respectivement au droits de l'utilisateur propriétaire, à ceux du groupe propriétaire, et enfin à ceux des autres utilisateurs, n'étant ni propriétaire, ni membres du groupe propriétaire de l'objet.Trois type de droits existent :

• r pour l'autorisation de lecture, • w pour l'autorisation d'écriture,• x pour l'autorisation d'exécution.

On peut noter qu'un utilisateur (ou un groupe) peut avoir le droits d'écrire dans un fichier sans avoir le droit de le lire.Pour avoir le droit de parcourir un dossier, l'utilisateur (le groupe) doit avoir le droit d'exécution x sur le répertoire en question.Analysons la première ligne de l'exemple plus haut :

• - indique nous avons à faire à un fichiers• rw- indique que l'utilisateur propriétaire a les droit de lecture et d'écriture• r-- indique que le groupe propriétaire a les droits de lecture uniquement• r-- indique que les autres utilisateurs ont les droits de lecture uniquement• root est le nom de l'utilisateur propriétaire• root est le nom du groupe propriétaire• 0 est la taille du fichiers• 30 mars 18h51 est l'heure de dernière modification du fichiers• fichier-test.txt est le nom du fichier

La deuxième ligne de l'exemple peut être interprétée de la même façon :• d indique nous avons à faire à un répertoire• rwx indique que l'utilisateur propriétaire a les droit de lecture et d'écriture et de parcours• r-x indique que le groupe propriétaire a les droits de lecture et de parcours• r-x indique que les autres utilisateurs ont les droits de lecture et de parcours• root est le nom de l'utilisateur propriétaire

Administration d'un serveur sous linux CentOS : les bases 51/78

[root@srv_test test]# ls -l total 4 -rw-r--r--. 1 root root 0 30 mars 18:51 fichier-test.txt drwxr-xr-x. 2 root root 4096 30 mars 18:51 rep-test.txt [root@srv_test test]#

Page 52: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

• root est le nom du groupe propriétaire• 4096 est la taille de la table de répertoire• 30 mars 18h51 est l'heure de dernière modification du répertoire• repertoire-test est le nom du répertoire

Les droits d'un objet peuvent être exprimés sous forme binaire. Il suffit de remplacer par un 1 le caractère que l'on veut fixer. Exemple

• rwx = 111 = 7• r-x = 101 = 5

Les droits complets (UGO) de l'objet s'expriment donc par une valeur octale sur 3 rangs. Exemple :• rwxr-xr-x = 111101101 = 755• rw-r—r-- = 110100100 = 644

Trois commandes sont nécessaire pour gérer les droits standards du système de fichier.• chown [-R] utilisateur[:groupe] objet : pour fixer le propriétaire [:groupe propriétaire] de

l'objet• chgroup [-R] groupe objet : pour fixer le groupe propriétaire de l'objet• chmod [-R] <droits> objet : pour fixer les droits de l'objet

Dans le cas de chmod, <droits> peut être exprimé de plusieurs façons :• en mode octal : chmod 644 fichier, par exemple (RW-R—R--)• en mode humain : chmod g+x fichier pour donner les droit d'exécution au groupe

propriétaire, chmod u-x fichier pour les retirer à l'utilisateur propriétaire

13.2 les liens

13.2.1 Types de liens

Le système de fichiers connait deux types de lien :

• les liens symboliques

• les liens physiques

Un lien symbolique est une sorte de raccourci vers un autre objet. Il pointe vers le chemin complet de l'objet. La suppression d'un lien symbolique n’entraîne pas la suppression de l'objet destination. Si la destination est supprimée, le lien est mort, mais existe toujours.

Un lien physique pointe sur l'inode de la destination. A la différence du lien symbolique, on ne peut pas créer de lien physique vers un répertoire. La suppression d'un des deux fichier n'entraine pas la suppression de l'autre. La suppression ne sera effective que lorsque tous les lien physiques pointant sur le même inode seront supprimés.

Le type de lien le plus utilisé est le lien symbolique.

13.2.2 Utilité des liens

A quoi servent les liens symboliques ? Et bien, la plus part du temps, à tromper le système !

En effet, lors du chargement d'une application, le système à besoin de connaitre les noms des fichiers de librairies dynamique. Chaque version d'une librairie ayant un nom de fichier différent, on créé un lien symbolique avec le nom standard recherché qui pointe sur le fichier librairie portant le nom réel.

Administration d'un serveur sous linux CentOS : les bases 52/78

Page 53: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

Exemple :

Le premier caractère (l) des 3 premières lignes montrent que nous avons à faire à des liens symboliques. Les 3 liens pointent sur le même fichier de librairie. La dernière ligne est le véritable fichier contenant la librairie libcrypto.

Nous avons donc 4 moyens d’accéder à la même librairie, le plus usité étant le nom sans version (libcrypto.so)

13.2.3 Création des liens

La syntaxe la plus courante est :

ln -s destination nom_du_lien

Pour reprendre l'exemple précédant, la création du premier lien se ferait par la commande :

13.2.4 Suppression de lien

La suppression d'un lien est réalisée de la même façon que pour un fichier ou un répertoire, par la commande rm.

13.3recherche de fichiers

Il existe deux méthodes pour rechercher des fichier dans l'arborescence :

13.3.1 locate

La commande locate repose sur une base de données mise à jour quotidiennement. On peut forcer la mise à jour de cette base de données par la commande updatedb (root). Locate ne réalise des recherche que sur le nom (chemin complet)

Exemple :

13.3.2 find

La commande find est plus puissante que locate et permet de faire des recherches reposant sur tous les attributs des objets du vfs (date, type, nom...)

Exemple :

Administration d'un serveur sous linux CentOS : les bases 53/78

[systeme@srv_test ~]$ ln -s /usr/lib/libcrypto.so /usr/lib/libcrypto.so.1.0.1e

[systeme@srv_test ~]$ ls /usr/lib/libcrypto*

lrwxrwxrwx 1 root root 19 27 janv. 11:59 /usr/lib/libcrypto.so -> libcrypto.so.1.0.1e

lrwxrwxrwx 1 root root 19 27 janv. 11:59 /usr/lib/libcrypto.so.10 -> libcrypto.so.1.0.1e

lrwxrwxrwx 1 root root 24 22 oct. 12:54 /usr/lib/libcrypto.so.1.0.0 -> /lib/libcrypto.so.1.0.1e

-rwxr-xr-x 1 root root 1862988 8 janv. 08:25 /usr/lib/libcrypto.so.1.0.1e

[systeme@srv_test ~]$ ls /usr/lib/libcrypto*

[systeme@srv_test ~]$ locate libc.so

Page 54: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

Aura pour effet d'afficher la liste des librairies disponibles dans /usr/share.

Aura pour effet d'afficher tous les fichiers du répertoire courant ayant été modifiés dans les 3 derniers jours.

Une option intéressante est -exec. Elle permet, pour chaque résultat trouvé, d'exécuter une commande.

Comme pour toute les commandes, la sortie standard (1) et la sortie des erreurs (2) peuvent être redirigées.

Exemple

permet de rechercher les fichiers modifiés dans les 3 derniers jours, mais en s'affranchissant d'éventuelles erreurs liées aux droits.

Administration d'un serveur sous linux CentOS : les bases 54/78

[systeme@srv_test ~]$ find /usr/share -type f -name '*.so'

[systeme@srv_test ~]$ find . -mtime -3

[systeme@srv_test ~]$ find . -mtime -3 2>/dev/null

Page 55: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

14 Commandes avancées

14.1Grep

La commande grep permet de filtrer une entrée suivant un motif.

Syntaxe :

grep [options]motif source

Une option intéressante est -v qui inverse la sélection.

Exemple :

Exemple avec inversion (Lignes contenant 'Permit' mais pas de #):

Le motif peut être une expression régulière (ligne ne commençant pas par # et contenant 'Permit')

14.2Xargs

La commande xargs permet de construire et d'exécuter une ligne de commande depuis l'entrée standard. Elle permet de contourner le problème posé par certaines commandes devant traiter un grand nombre de lignes.

Exemple :

aura pour effet de supprimer tous les fichiers finissant par .tmp du répertoire courant, même si le nombre de ces fichiers est très important.

Administration d'un serveur sous linux CentOS : les bases 55/78

[systeme@srv_test ~]$ find . -type f -name '*.tmp'|xargs rm -f

[systeme@srv_test ~]$ grep Permit /etc/ssh/sshd_config

#PermitRootLogin yes

PermitRootLogin no

#PermitEmptyPasswords no

# the setting of "PermitRootLogin without-password".

#PermitUserEnvironment no

#PermitTunnel no

[systeme@srv_test ~]$

[systeme@srv_test ~]$ grep Permit /etc/ssh/sshd_config|grep -v '#'

PermitRootLogin no

[systeme@srv_test ~]$

[systeme@srv_test ~]$ grep -v "^#" /etc/ssh/sshd_config|grep Permit

PermitRootLogin no

[systeme@srv_test ~]$

Page 56: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

14.3Ps

La commande ps permet de récupérer la liste des processus en cours d'exécution.

Exemple :

Une version plus parlante est pstree :

14.4Kill

Il est possible d'envoyer un signal (une interruption logicielle) à un processus à l'aide de la commande kill. Il y a de nombreux signaux normalisés par la norme posix. Ceux que l'on utilise couramment sont :

• SIGKILL (9) qui ordonne l'arrêt immédiat du processus

• SIGTERM (15) qui ordonne au processus de s'arrêter

• SIGSTOP (17,19,23), équivalent au <CTRL+C> de la console

Pour arrêter un processus :

Si il renâcle :

Administration d'un serveur sous linux CentOS : les bases 56/78

[systeme@srv_test ~]$ ps -ef

UID PID PPID C STIME TTY TIME CMD

root 1 0 0 Apr03 ? 00:00:03 /sbin/init

root 2 0 0 Apr03 ? 00:00:00 [kthreadd]

root 3 2 0 Apr03 ? 00:00:00 [migration/0]

root 4 2 0 Apr03 ? 00:00:00 [ksoftirqd/0]

root 5 2 0 Apr03 ? 00:00:00 [migration/0]

...

[systeme@srv_test ~]$ pstree

init auditd {auditd} ─┬─ ───

crond ├─

login bash ├─ ───

master pickup ├─ ─┬─

qmgr │ └─

5*[mingetty] ├─

rsyslogd 3*[{rsyslogd}] ├─ ───

sshd sshd bash less ├─ ─┬─ ─── ───

sshd sshd bash sudo su bash pstree │ └─ ─── ─── ─── ─── ─── ───

udevd 2*[udevd] └─ ───

[root@pc16 ~]#

[systeme@srv_test ~]$ kill -15 pid-du-processus

Page 57: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

La deuxième version fait preuve de moins de courtoisie...

14.5Who

La commande who liste les utilisateurs connectés sur le système.

14.6whoami

La commande whoami retourne le nom de l'utilisateur courant.

Administration d'un serveur sous linux CentOS : les bases 57/78

[systeme@srv_test ~]$ kill -9 pid-du-processus

Page 58: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

15 Introduction au traitement par lot

15.1Le shell

Toute commande renvoie un code retour. La valeur 0 est réservée à une exécution sans erreur. Les autres valeurs dépendent de la commande.

On peut enchaîner des commandes sur une même ligne en mode interactif :

• commande1 ; commande2 : les commandes sont exécutées sans condition

• commande1 && commande2 : commande2 est exécutée uniquement si commande1 ne retourne pas d'erreur

• echo `date` : substitution

Cette façon de faire génère vite des lignes complexes, qui ont de plus l’inconvénient de ne pas être réutilisables.

Le shell permet d'exécuter des lots d'instructions rassemblées dans un fichier texte appelé script.

Dans le cas d'un script, le shell utilisé (sh,ksh,csh, perl, python...) est indépendant du shell courant et l'exécution d'un script provoque la création d'un nouveau processus, fils du shell courant.

Pour être exécuté, un script doit être dans le chemin de recherche (PATH) ou sont chemin complet doit être précisé (Absolu ou relatif).

Toute commande pouvant être exécutée en interactif peut être appelée dans un script.

La première ligne d'un script doit toujours définir l’interpréteur utilisé :

#!/bin/sh

15.2 les variables

Sauf preuve du contraire, et le shell est têtu, toutes les variables sont des chaînes de caractères.

15.2.1 Variables d'environnement

Un script a accès à l'environnement de l'utilisateur courant (ou de l'utilisateur spécifié par la commande sudo) et aux variables qui y sont définies, comme $HOME, $PATH, $PWD...

Si les variables d'environnement sont modifiées par le script, elles le restent à la fin de l'exécution uniquement si elles sont exportées.

15.2.2 Variables définies dans un script

Le nom d'une variable est :

• une suite de lettres, de chiffres ou du signe '_'

• commence par '_' ou par une lettre

• sensible à la casse

• sans limitation pratique de longueur

La création d'une variable se fait lors de sa première affectation (sh n'est pas déclaratif)

Administration d'un serveur sous linux CentOS : les bases 58/78

Page 59: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

exemple :

Il ne doit pas y avoir d'espace avant et après le signe '='.

La suppression d'une variable est réalisée par la commande unset.

Exemple :

L'utilisation de la variable se fait ensuite en la faisant précéder d'un signe '$', de façon à la différencier d'une chaîne de caractère.

Exemple :

Une variable définie dans un script n'est visible que par le script, sauf si elle est rendue globale par la commande export. Elle est alors transmise aux processus fils.

Exemple :

15.2.3 Variables automatiques

Certaines variables sont définies automatiquement lors de l'exécution d'un script :

1..9 paramètres passés lors de l'appel du script. La commande shift permet de les décaler d'un rang vers la gauche. La commande set n permet de leur affecter une valeur dans le script.

0 Le nom de la commande (du script) elle-même.

* Tous les paramètres, comme sur la ligne de commande

# Le nombre de paramètres passé à la commande

? Le code retour de la dernière commande exécutée

! Numéro du dernier processus lancé en background

Tableau 3: Variables automatiques

15.2.4 Syntaxes particulières liées aux variables

Le shell reconnait quelques syntaxes qui peuvent simplifier les choses :

Administration d'un serveur sous linux CentOS : les bases 59/78

var1="chaine de caracteres"

unset var1

echo $var1

var1="variable1"var2="variable2"export var2 # pas de signe $ puisqu'on ne peut pas

# exporter une valeur littéralecommande.sh # le script commande.sh « voit » var2 mais

# pas var1

Page 60: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

${nom} utilisé pour la concaténation de chaine

${nom:-chaine} substitue par chaine si nom n'est pas définie ou est nulle

${nom:=chaine} affecte et substitue par chaine si nom n'est pas définie ou est nulle

${nom:?mot} si nom n'est pas définie ou est nulle, affiche le message mot et quitte le script

${nom+=chaine} substitue par chaine si nom est définie et est non nulle

Tableau 4: Syntaxes particulières liées aux variables

15.3Les boucles

15.3.1 La boucle for

Syntaxe :

for variable in liste ; do commandes ; done

Exécute autant de fois ‘commandes’ qu'il y a de mots dans ‘liste’.

Liste peut être :

• des arguments passés à l'appel du script

• des fichiers : (for f in ./*.txt)

• des variables : $v1, $v2

• le résultat d'une commande who

• des chaînes de caractères littérales

• …

15.3.2 L'instruction while

Syntaxe :

while commande1 ; do commande2 ; done

Exécute ‘commande2’ tant que ‘commande1’ retourne 0 (vrai)

15.3.3 L'instruction until

Syntaxes

until commande1 ; do commande2 ; done

Exécute ‘commande2’ jusqu'à ce que ‘commande1’ retourne 0 (vrai)

15.3.4 La commande break

La commande break permet de forcer la sortie d'un niveau de boucle for ou while.

Lorsqu'elle est suivie d'un entier, elle sort du nombres de niveaux imbriqués spécifiés.

Administration d'un serveur sous linux CentOS : les bases 60/78

Page 61: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

15.4L'instruction if

Syntaxe :

if commande1 ; then commande2 [; else commande3 ]; fi

‘Commande2’ est exécutée si ‘commande1’ renvoie 0 (vrai) sinon ‘commande3’ est exécutée.

Les imbrications sont possibles :

La condition suivant le if peut prendre plusieurs formes :

• if commande1 ; commande2 ; then … : le code retour pris en compte est celui de la dernière commande1

• if commande1 | commande2 ; then …

• if commande1 && commande2 then … : opération booléenne AND ( la deuxième commande n'est exécutée que si le code retour de la première est à 0 et le test sera réalisé sur le résultat de la deuxième commande)

• if commande1 || commande2 then … : opération booléenne OR (la deuxième commande ne s'exécute que si le code de retour de la première <>0 et le test sera réalisé sur le retour de la deuxième commande)

On peut tester une variable ou un fichier avec [ expression ] (les espaces sont obligatoires)

Exemples :

Quand on écrit :

if [ $v = OK ] then …

et que $v est vide, on obtient à l'interprétation la ligne :

if [ = OK ] then …

D'où une erreur de syntaxe.

Administration d'un serveur sous linux CentOS : les bases 61/78

if commande1then

if commande2then commande3else commande4fi

elsecommande5

fi

if [ -f fichier ] ; then …if [ $1 -gt 32 ] ; then …

Page 62: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

Il faut toujours écrire :

if [ "$v" = "OK" ] then ...

15.5Expressions pour tester des fichiers

-d fichier vrai si fichier existe et est un répertoire

-f fichier vrai si fichier existe et est un fichiers

-s fichier vrai si fichier existe et a une taille >0

-r fichier vrai si fichier existe en lecture

-w fichier vrai si fichier existe en écriture

-x fichier vrai si fichier existe en exécution

-f fichier vrai si fichier existe et est un lien symboliques

-c fichier vrai si fichier existe et est un fichier spécial caractères

-b fichier vrai si fichier existe et est un fichier spécial block

-p fichier vrai si fichier existe et est un tube nommé

-u fichier vrai si fichier existe avec le bit SUID positionné

-g fichier vrai si fichier existe avec le bit SGID positionné

-k fichier vrai si fichier existe avec le sticky bit positionné

Tableau 5: Tests sur les fichiers

15.6Expressions pour tester des variables

15.6.1 Chaînes de caractères

c1 = c2 vrai si les chaînes c1 et c2 sont identiques

c1 != c2 vrai si les chaînes c1 et c2 sont différentes

-z c1 vrai si la longueur de la chaîne c1 est nulle

-n c1 vrai si la longueur de la chaîne c1 est non nulle

c1 vrai si la chaîne c1 n'est pas la chaîne nulle

Tableau 6: Tests sur les variables chaines de caractères

Administration d'un serveur sous linux CentOS : les bases 62/78

Page 63: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

15.6.2 Entiers

e1 -eq e2 == vrai si e1=e2

e1 -ne e2 != vrai si e1<>e2

e1 -lt e2 < vrai si e1<e2

e1 -le e2 <= vrai si e1<=e2

e1 -ge e2 >= vrai si e1>=e2

e1 -gt e2 > vrai si e1>e2

Tableau 7: Test sur les variables entières

15.7L'instruction case

Syntaxe :

case variable in

expression1 ) commande1 ;;

expression2 ) commande2 ;;

* ) commande-par-défaut

esac

Expression peut prendre la forme d'une suite de caractères génériques identiques à ceux utiliser pour les noms de fichiers (* ? […]), de plus séparés par | pour indiquer plusieurs possibilités.

Commande peut être une suite de commandes.

Exemple :

15.8 Entrées/sorties

15.8.1 Accès aux fichiers

L'accès au contenu d'un fichier est réalisé de 2 manières :

Administration d'un serveur sous linux CentOS : les bases 63/78

read repcase $rep in

oui ) echo OK ;;non | NON ) echo PASOK ;;?? | [A-Z][A-Z][A-Z] )

echo 2 caractères quelconques ou 3 lettres majuscules ;;

* ) echo tout le reste. ;;esac

Page 64: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

• par une commande de lecture ou d'écriture (cat ou echo)

• par une redirection (< ou >)

Exemple :

15.8.2 Accès à la aux entrées/sortie standards

L'accès à la console standard est réalisée :

• par read en lectures

• par echo en écriture

Exemple :

15.9Effectuer des calculs

Les variables étant résolument des chaînes de caractères (sh n'est pas typé, ou plus exactement, il est mono-typé), les calculs ne peuvent pas être directement réalisés.

Pour réaliser des calculs, il faut utiliser par exemple la commande expr.

Exemple :

Tous les éléments de l'expression à calculer doivent être séparés par des espaces.

Les opérandes autorisés sont :

• + : addition

• - : soustraction

• * : multiplication

• / : division

Administration d'un serveur sous linux CentOS : les bases 64/78

for ligne in `cat fichier1.txt`do

echo $ligne>>fichieré.txtdonewho| while read nom dummydo

echo $nom>>fichier3.txtdone

echo "Test de saisie : "reponse= "ok "while [ "$reponse" = "ok" ]do

read reponse ?"Pour continuer, entrer OK"done

a=1a=`expr $a + 1`

Page 65: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

• % : modulo

• ^ : puissance

Administration d'un serveur sous linux CentOS : les bases 65/78

Page 66: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

16 OpenSSH

16.1Présentation

OpenSSH est la version OpenSource de ssh.

Il est destiné à remplacer les protocol telnel, rlogin, rsh trop peu sécurisés.

Openssh repose sur un protocole sécurisé par l'utilisation de paires de clé asymétriques : une clé publique et une clé privée.

Un message chiffré avec la clé privée ne peut être déchiffré qu'avec la clé publique correspondante.

Il y a deux modes d'utilisation :

• par l'utilisation d'une IGC

• par la méthode du Trust On First Use

Dans le premier cas, le serveur qui reçoit une demande de connexion vérifie la validité de la clé auprès de l'IGC.

Dans le deuxième cas, il doit y avoir intervention de l'utilisateur pour accepter la clé. Elle est alors stockée dans un fichier known_hosts.

L'empreinte de la clé privée pouvant être vérifiée à l'aide de la clé publique, les échanges sont authentifiés.

OpenSSH connait les clés RSA, DSA, les certificats X509 et PKCS#12.

16.2Le serveur sshd

La configuration du serveur ssh est réalisée par le fichier /etc/ssh/sshd_config.

On peut mettre en place le mode strict qui interdit les connexions aux clients présentant des clés inconnues. On place alors les clés publiques autorisées dans le fichier /etc/ssh/ssh_known_hosts.

Lors du premier démarrage de sshd, il y a génération de 2 couples de clés pour le serveur, un en RSA, l'autre en DSA. Les fichiers de clé, privé et public, sont placé dans le répertoire /etc/ssh.

Clés RSA :

• /etc/ssh/id_rsa = clé privée

• /etc/ssh/id_rsa.pub = clé privée

Clés DSA :

• /etc/ssh/id_dsa = clé privée

• /etc/ssh/id_dsa.pub = clé publiques

Afin de sécuriser un peu les accès, il faut modifier une valeur du fichier de configuration afin d'interdire les connexions avec le compte root :

Administration d'un serveur sous linux CentOS : les bases 66/78

#LoginGraceTime 2m PermitRootLogin no#StrictModes yes #MaxAuthTries 6

Page 67: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

Il faut ensuite recharger la configuration de sshd :

16.3Création d'une paire de clé

OpenSSH fournit les outils nécessaire à la création de paires de clés, mais aussi à la récupération de la clé publique d'un serveur distant.

Exemple de création de 2 paires de clés (RSA et DSA) :

Il peut être utile de récupérer la clé publique d'un serveur distant, de façon à autoriser les connexion de sa part.

Exemple :

Comme on peut récupérer la clé d'un serveur distant, on peut aussi y déposer la clé du serveur local. Il faut bien entendu avoir un accès à la machine distante :

16.4 Installation du client OpenSSH

Par défaut, le client ssh peut ne pas être installé. La suite de commande si-dessous permet d'y remédier :

Le fichier /etc/ssh/ssh_known_hosts est un fichier global pour le système. Les clés publiques des serveurs qui y sont stockées sont connues de tout le système.

Chaque utilisateur a sont propre fichier de clés connues : ~/.ssh/known_hosts.

Lorsqu'une connexion est établie avec un serveur dont la clé est inconnue (ni dans /etc/ssh/ssh_known_hosts, ni dans ~/.ssh/known_host), et que cette connexion est acceptée, la clé publique sera ajoutée dans le known_host de l'utilisateur.

16.5Se connecter avec une clé par ssh

Pour se connecter en tant que « utilisateur » sans mot de passe, l'utilisateur doit disposer d'une paire de clés, et déposer la partie publique dans le fichier /home/utilisateur/.ssh/authorized_keys du serveur distant.

Le fichier ~/authorized_keys d'un utilisateur regroupe l'ensemble des clés publiques des utilisateurs ayant l'autorisation de se connecter avec ce compte à distance. Le nom de l'utilisateur distant n'a pas d'importance, seul la clé présentée ouvre la porte.

Pour notre utilisateur d'administration, nommé système, la procédure à suivre est la suivante :

Administration d'un serveur sous linux CentOS : les bases 67/78

[root@srv_test ~]# ssh-keygen -q -t rsa -f ~/.ssh/id_rsa -C '[email protected]' -N '' -b 1024[root@srv_test ~]# ssh-keygen -q -t dsa -f ./.ssh/id_dsa -C '[email protected]' -N '' -b 1024

[root@srv_test ~]# ssh-keyscan -t rsa srv_distant >>/etc/ssh/ssh_known_hosts[root@srv_test ~]# ssh-keyscan -t dsa srv_distant >>/etc/ssh/ssh_knownhosts

[root@srv_test ~]# rpm -qa|grep openssh-client

[root@srv_test ~]# yum search openssh-clients

[root@srv_test ~]# yum install openssh-clients

[root@srv_test ~]# service sshd reload

Page 68: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

• créer un répertoire /home/systeme/.ssh

• créer un couple de clés dsa dans ce répertoire

• récupérer la clé publique de l'utilisateur distant

• la placer dans le fichier /home/systeme/.ssh/authorized_keys

Pour chaque utilisateur que l'ont voudra autoriser à se connecter au compte système, il suffira d'ajouter sa clé publique au fichier authorized_keys.

A présent, les choses sont plus propre. Pour administrer le serveur, l'utilisateur georges.delajungle pourra se connecter au serveur par la ligne :

Une fois connecté système, il pourra réaliser ses tâches d'administration, en utilisant la commande sudo si besoin (nous avons autorisé systeme à exécuter toutes les commandes)

Toutes les connexions (IP+utilisateur local) sont tracées dans /var/log/secure, de même que les emprunts d'identité par sudo.

Administration d'un serveur sous linux CentOS : les bases 68/78

[georges.delajungle@pc01 ~]# ssh systeme@srv_test

Page 69: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

17 Applications au démarrage

17.1Niveaux d'exécution

Le système s'exécute suivant plusieurs niveaux (Run Levels), que l'on peut sélectionner par la commande init.

Sur CentOS, ces niveaux sont :

0 HALT : le serveur est arrêté. Init 0 à pour effet d'arrêter le serveur

1 Single User Mode : mono utilisateur, utile en cas de panne matérielle (disque)

2 Full Multi User Mode sans NFS

3 Full Multi User Mode : Mode normal d'exécution d'un serveur

4 Inutilisé

5 Full Multi User Mode (With X) : Mode graphique

6 Reboot : Init 6 lance le redémarrage du serveur

Le niveau d'exécution 1 est utilisé le plus souvent pour 2 raisons :

• un disque nécessite une maintenance par fsck

• le mot de passe root a été égaré...

Pour fixé le niveau d'exécution 0, il y a deux moyens :

• init 0

• poweroff

Pour redémarrer le serveur, il y a aussi deux méthodes :

• init 6

• reboot

17.2Applications et niveau d’exécution

A chaque niveau d'exécution correspond un certain nombres d'applications à lancer.

Par exemple, la majeure partie des serveurs sont exécuté à partir du niveau 2 du fait que c'est à ce niveau que le réseau est démarré.

On peut obtenir la liste de qui démarre à quel niveau :

Administration d'un serveur sous linux CentOS : les bases 69/78

Page 70: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

Pour savoir à quel niveau il doit démarrer, le système examine le fichier /etc/inittab :

Le id:3 signifie que le serveur démarre par défaut au niveau 3.

La gestion des applications au démarrage est réalisée par l'outil chkconfig.

Syntaxe :

chkconfig [--list] [--type type][name]

Administration d'un serveur sous linux CentOS : les bases 70/78

[root@srv_test ~]# chkconfig --list auditd 0:arrêt 1:arrêt 2:marche 3:marche 4:marche

5:marche 6:arrêt blk-availability 0:arrêt 1:marche 2:marche 3:marche 4:marche

5:marche 6:arrêt crond 0:arrêt 1:arrêt 2:marche 3:marche 4:marche

5:marche 6:arrêt ip6tables 0:arrêt 1:arrêt 2:marche 3:marche 4:marche

5:marche 6:arrêt iptables 0:arrêt 1:arrêt 2:marche 3:marche 4:marche

5:marche 6:arrêt lvm2-monitor 0:arrêt 1:marche 2:marche 3:marche 4:marche

5:marche 6:arrêt netconsole 0:arrêt 1:arrêt 2:arrêt 3:arrêt 4:arrêt

5:arrêt 6:arrêt netfs 0:arrêt 1:arrêt 2:arrêt 3:marche 4:marche

5:marche 6:arrêt network 0:arrêt 1:arrêt 2:marche 3:marche 4:marche

5:marche 6:arrêt postfix 0:arrêt 1:arrêt 2:marche 3:marche 4:marche

5:marche 6:arrêt rdisc 0:arrêt 1:arrêt 2:arrêt 3:arrêt 4:arrêt

5:arrêt 6:arrêt restorecond 0:arrêt 1:arrêt 2:arrêt 3:arrêt 4:arrêt

5:arrêt 6:arrêt rsyslog 0:arrêt 1:arrêt 2:marche 3:marche 4:marche

5:marche 6:arrêt saslauthd 0:arrêt 1:arrêt 2:arrêt 3:arrêt 4:arrêt

5:arrêt 6:arrêt sshd 0:arrêt 1:arrêt 2:marche 3:marche 4:marche

5:marche 6:arrêt udev-post 0:arrêt 1:marche 2:marche 3:marche 4:marche

5:marche 6:arrêt [root@srv_test ~]#

# Default runlevel. The runlevels used are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id:3:initdefault:

Page 71: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

chkconfig --add name

chkconfig --del name

chkconfig [--level levels] [--type type] name <on|off|reset>

Exemple, pour ajouter sshd au démarrage (ce qui est déjà fait)

Pour que sshd ne démarre plus avec le système :

Pour qu'il ne démarre qu'à partir du niveau 3 :

En général, pour modifier le niveau d'exécution d'un service, on commence par l'arrêter à tous les niveaux, puis on fixe ceux que l'on désire.

Administration d'un serveur sous linux CentOS : les bases 71/78

[root@srv_test ~]# chkconfig –-add sshd[root@srv_test ~]# chkconfig –-level 2345 sshd on

[root@srv_test ~]# chkconfig --del sshd

[root@srv_test ~]# chkconfig –add sshd[root@srv_test ~]# chkconfig –level 345 sshd on

Page 72: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

18 Les logsLe système est les applications génèrent des fichiers journaux, souvent configurable. La norme veut que ces journaux soient stockés dans le répertoire /var/log, avec éventuellement un sous-répertoire propre à l'application, par exemple /var/log/samba.

Il y a, hélas, quelques exceptions : arkeia, nuxeo et en principe tout ce qui repose sur java. On retrouve alors souvent les logs dans le répertoire même de l'application, dans /opt.

Le système (plus exactement syslog ou rsyslog) place ses journaux dans /var/log/messages. Ce fichier est une mine d'or en cas de problème. On peut le consulter par

Un autre journal qui peut apporter des renseignement utiles lors d'un problème matériel est la trace de démarrage. On y accède par la commande dmesg. Au vu de la taille du résultat, il sera indispensable de rediriger la sortie vers le pager less, ce qui permet de faire facilement une recherche :

Administration d'un serveur sous linux CentOS : les bases 72/78

[root@srv_test ~]# dmesg|less

[root@srv_test ~]# less /var/log/messages

Page 73: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

19 Tâches programmées

19.1Principe de cron

Le planificateur cron repose sur un daemon crond qui examine périodiquement plusieurs répertoires afin d’exécuter des commandes à des heures précises :

• /etc/cron.d

• /etc/cron.daily

• /etc/cron.hourly

• /etc/cron.monthly

En général, sur un serveur, on utilise uniquement /etc/cron.d afin de centraliser l’ensemble de ce qui est exécuté périodiquement.

La période minimum d’exécution est d’une minute.

19.2Format de fichiers cron

Les 5 étoiles représentent dans l’ordre :

• les minutes (0-59)

• les heures (0-23)

• le jour du mois (1-31)

• le mois (1-12)

• le jour de la semaine (0-6)

Chacune de ces valeurs peut être représentée par une liste, un intervalle, une période ou une étoile qui signifie « toutes les valeurs »

Exemple :

• 30 08 10 06 * root /home/systeme/bin/backup.sh 2>&1>/var/log/backup.log: backup.sh sera exécuté en tant que root le 10 juin à 08H30 quelque soit le jour de la semaine.

• 00 12,20 * * * root /home/systeme/bin/rsynfam.sh 2>&1>/var/log/rsyncfam.sh : rsyncfam.sh sera exécuté en tant que root à 12H00 et à 20H00 chaque jour

• 00 07-19 * * 1-5 root /home/systeme/bin/bureau.sh 2>&1>/dev/null : bureau.sh sera exécuté chaque heure de 07H00 à 19H00, du lundi au vendredi

• */10 * * * * root /home/systeme/bin/menage.sh 2>&1>/dev/null : menage.sh sera exécuté toutes les 10 minutes

Il existe des macros qui peuvent être substituées aux 5 étoiles :

• @yearly : 0 0 1 1 * soit le premier janvier à 00h00

• @daily : 0 0 * * * soit chaque jour à 00h00

Administration d'un serveur sous linux CentOS : les bases 73/78

* * * * * utilisateur commande

Page 74: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

• @hourly : 0 * * * * soit chaque début d’heure

• @reboot : exécuté au redémarrage du système

Administration d'un serveur sous linux CentOS : les bases 74/78

Page 75: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

20 Présentation de quelques applications courantes

20.1Openldap

Openldap offre un client et un serveur d’annuaire.

Les possibilités d’openldap sont très étendues, du simple annuaire à des architectures très complexes reposant sur plusieurs maîtres et plusieurs esclaves.

Sous CentOS, trois rpm sont à installer :

• openldap : la partie commune

• openldap-clients : le client permettant d’interroger un serveur ldap

• openldap-servers : le serveur OpenLdap

20.2Samba

Samba3x implémente un serveur Microsoft NT4 et a presque les même fonctions :

• serveur d'authentification principal/secondaire

• serveur de fichiers

• serveurs d'impression

La principale différence par rapport à un serveur NT4 est le fonctionnement lors d'une perte du contrôleur principal. Sur une architecture basée sur des serveurs NT4, un nouveau CPD est désigné, ce qui n'est pas le cas dans une architecture basée sur samba. On est donc dans ce cas en mode dégradé, à savoir qu'il n'y a plus de modification possible de la base de comptes.

Samba s'organise autour de 3 daemons :

• nmb qui gère le protocole de nom NetBIOS

• smb qui gère l'authentification et la présentation des services (partages)

• winbindd qui est un client de domaine (NT4 ou ADS)

Samba4 est l'avenir. Cette nouvelle branche offre l'implémentation d'Active Directory. Elle embarque sont propre annuaire ldap, mais peut très bien se reposer sur OpenLdap par exemple.

Sont seul inconvénient est l'existant. Il peut être difficile de migrer un domaine de samba3 vers samba4. Beaucoup d'administrateur ont utilisé la base de comptes ldap de samba3 comme annuaire d'entreprise (ce qui est une erreur!), et les outils de migration fournis avec samba4 ne peuvent pas tout gérer.

Sur CentOS, les rpm de samba3 sont préfixés samba-, et les rpm samba4 sont préfixés samba4.

20.3Apache

Apache est un serveur web très performant, mais de configuration complexe. Plusieurs distributions fournissent un méta paquet lamp installant (uniquement pour le développement) apache, mysql et php avec une configuration de base pour les 3 produits.

La sécurisation d'un serveur apache demande un peu de connaissances et de configuration. En effet, lors de l'installation, la configuration ne convient pas à une mise en production.

Administration d'un serveur sous linux CentOS : les bases 75/78

Page 76: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

Sur Centos, le rpm s'appelle httpd.

Administration d'un serveur sous linux CentOS : les bases 76/78

Page 77: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

21 Conclusion

Administration d'un serveur sous linux CentOS : les bases 77/78

Page 78: Formation Linux - Freeswonoff.free.fr/blog/wp-content/uploads/2016/09/Linux...3 Introduction Le but de cette formation est de vous initier au fonctionnement et à l’utilisation d’un

Index des illustrationsIllustration 1: Architecture simplifiée d'un système GNU/Linux.......................................................18Illustration 2: Exemple de LVM.........................................................................................................21Illustration 3: Architecture de recette des mises à jour.......................................................................25Illustration 4: Installation - démarrage...............................................................................................26Illustration 5: Installation - choix de la langue...................................................................................26Illustration 6: Installation - choix du clavier......................................................................................26Illustration 7: Installation - choix du type d'installation.....................................................................27Illustration 8: Installation - choix de la configuration réseau.............................................................27Illustration 9: Installation - configuration statique du réseau.............................................................27Illustration 10: Installation - saisie de l'URL source..........................................................................28Illustration 11: Installation - chargement de l'image..........................................................................28Illustration 12: Installation - écran de bienvenue...............................................................................28Illustration 13: Installation - Système de fichier non reconnu...........................................................29Illustration 14: Installation - choix du fuseau horaire........................................................................29Illustration 15: Installation - saisie du mot de passe root...................................................................29Illustration 16: Installation - confirmation du type de partitionnement..............................................30Illustration 17: Installation - confirmation de la configuration disque...............................................30Illustration 18: Installation - fin..........................................................................................................30Illustration 19: Démarrage en mode masqué......................................................................................31Illustration 20: Démarrage en mode détaillé......................................................................................31Illustration 21: Système opérationnel.................................................................................................31

Index des tableauxTableau 1: Arborescence du système de fichiers................................................................................20Tableau 2: Principales commandes de vi............................................................................................42Tableau 3: Variables automatiques.....................................................................................................59Tableau 4: Syntaxes particulières liées aux variables.........................................................................60Tableau 5: Tests sur les fichiers..........................................................................................................62Tableau 6: Tests sur les variables chaines de caractères.....................................................................62Tableau 7: Test sur les variables entières............................................................................................63

Administration d'un serveur sous linux CentOS : les bases 78/78