tp adminlinux gnulinux

100
TP: Installation d'un serveur GNU/Linux Administration Linux de base Nom : Prénom : Date : Objectifs : Installer un PC serveur GNU/Linux (installation en n'utilisant que le premier CD de la distribution ou installation réseau FTP/NFS/HTTP par CD bootable spécial). Indépendamment à base de paquet RMP, DEB, KDE, Gnome ou sans interface graphique. Debian, Suse, Mandriva ou Fedora (suivant le DVD/CD fourni ou téléchargé). Effectuer les configurations de base Bureau / Utilisateurs, Effectuer les mises à jour, avec la configuration système, visiter les principaux fichiers de configuration utiles à l'administration d'un serveur Linux, Effectuer les opérations d'administration de base, en étudiant les procédures de démarrage, l'exécution automatique, localement et à distance au travers de SSH, Appliquer les procédures d'administration, de sauvegarde, Après étude des moyens mis à disposition de l'administrateur, la gestion du serveur Lamp sera abordée. Les opérations élémentaires d'administration seront effectuées « à la main » après avoir parcouru les procédures automatiques, L'utilisation du shell (ligne de commande) sera très largement mis en avant. 99% des commandes et des fichiers de configuration sont documentés dans le « Manuel Unix », accessible par la commande man. La recherche d'une expression dans les pages affichées fait « à la vi» /expression return, puis touche « N » pour chercher plus loin (Next) ou « SHIFT+N » pour chercher en arrière. On peut aussi obtenir des informations sur une commande en l'invoquant avec comme seul argument -h (ou - -help). Une grande partie de la formation d'un administrateur système Unix vient de l'auto-formation grâce au manuel ! Administration Unix /Linux page 1/100 LoiselJP ©2010

Upload: yespapasavsabien

Post on 05-Feb-2016

70 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: TP AdminLinux GnuLinux

TP: Installation d'un serveur GNU/LinuxAdministration Linux de base

Nom : Prénom : Date :

Objectifs :

Installer un PC serveur GNU/Linux (installation en n'utilisant que le premier CD de la distribution ou installation réseau FTP/NFS/HTTP par CD bootable spécial). Indépendamment à base de paquet RMP, DEB, KDE, Gnome ou sans interface graphique. Debian, Suse, Mandriva ou Fedora (suivant le DVD/CD fourni ou téléchargé).

Effectuer les configurations de base Bureau / Utilisateurs, Effectuer les mises à jour, avec la configuration système, visiter les principaux fichiers de

configuration utiles à l'administration d'un serveur Linux, Effectuer les opérations d'administration de base, en étudiant les procédures de démarrage,

l'exécution automatique, localement et à distance au travers de SSH, Appliquer les procédures d'administration, de sauvegarde, Après étude des moyens mis à disposition de l'administrateur, la gestion du serveur Lamp sera

abordée.

Les opérations élémentaires d'administration seront effectuées « à la main » après avoir parcouru les procédures automatiques,

L'utilisation du shell (ligne de commande) sera très largement mis en avant.

99% des commandes et des fichiers de configuration sont documentés dans le « Manuel Unix », accessible par la commande man. La recherche d'une expression dans les pages affichées fait « à la vi » /expression return, puis touche « N » pour chercher plus loin (Next) ou « SHIFT+N » pour chercher en arrière.On peut aussi obtenir des informations sur une commande en l'invoquant avec comme seul argument -h (ou - -help).

Une grande partie de la formation d'un administrateur système Unix vient de l'auto-formation grâce au manuel !

Les illustrations de ce document reprennent des vues depuis les 4 distributions (Debian, Suse, Mandriva ou Fedora) proposées.

Matériel

- CDrom d'installation d'une version GNU Linux:- Premier CD /DVD de la distribution,- Debian / Open Suse / Mandriva /Fedora.

- 1 PC ou machine virtuelle, avec disque dur suffisant pour l'installation (10 à 20 Go), compatible Linux.- Accès Internet pour le poste,- Accès réseau avec serveur DHCP,- Ce document accessible (sur PC indépendant ou papier).

Note typographique- Ce symbole signifie une action à effectuer. Les commandes d'installation, lectures.. sont à lancer ou exécuter,

Administration Unix /Linux page 1/78

LoiselJP ©2010

Page 2: TP AdminLinux GnuLinux

- Ce symbole signifie une note importante, - Ce symbole indique une information, - Ce style de caractères «azerty» signifie qu'une commande, un texte sera entré sous cette forme,- Ce style de caractères «passwd utilisateur» signifie qu'une commande, une ligne de texte est à saisir telle qu'indiqué,- Les zones laissées libre sont à compléter.

Rappel sur le déroulement de la formation

- Jour 1Présentation du programme,Principes de Linux,Choix d'une distribution,Le système de fichiers / LVM,Installation,Les bureaux / configuration.

- Jour 2Les comptes utilisateur / Sudo,Les paquets / Installation de logiciels et périphériques,Configuration du système,Les modes d'opération, procédure de démarrage,Le Cron,SSH,La ligne de commande Shell,Introduction au programme Shell.

- Jour 3Suivi des procédures,Rôle de l'administrateur / Tâches d'administration,Gestion des sauvegardes,Sécurité,Le programme MAN,Introduction au serveur LAMP,Résolution des problèmes.

Conclusion

Administration Unix /Linux page 2/78

LoiselJP ©2010

Page 3: TP AdminLinux GnuLinux

1 Installation du système

Installation réseau GNU/Linux pour un serveur.

L'adresse IP du serveur utilisée pour l'installation sera précisée en séance / à défaut l'installation se fera en DHCP,

Afin d'éviter tout conflit de nom, le poste sera nommé au nom de l'administrateur qui installe le poste. Par exemple "loiseljp" installe le poste qui portera le nom "loiseljp",

Le groupe de travail utilisé sera "Workgroup", Le mot de passe administrateur sera "azerty", Le compte utilisateur sera "utilisateur" avec pour mot de passe "azerty".

a - Installation personnalisée de la distribution considérée (lire avant d'installer)

Langue : Europe – Français / Clavier : Français / Niveau de sécurité : standard (si nécessaire)

Partitionnement personnalisé, planifié comme suit : Si le PC possède une installation Windows, la conserver, Si le PC possède une installation antérieure de GNU/Linux, la supprimer, Etablir le partitionnement de la distribution à installer selon la grille suivante :

Partition ext3

montée sur /

~ 512 Mo

swap

~512 Mo

Partition ext3

montée sur /usr

~3 à 4 Go

Partition ext3/ext4

montée sur /var

~1 à 3 Go

Partition ext3/ext4

montée sur /home

~512 Mo

Partition vfat

pas montée

~0.5 à 1Go

Administration Unix /Linux page 3/78

LoiselJP ©2010

Page 4: TP AdminLinux GnuLinux

Prendre en compte qu'un disque ne peut contenir plus de 4 partitions primaires. Les trois dernières seront donc placées dans une partition étendue.

Suivant la disponibilité offerte par le poste les partitions /var et /user pourront être étendues à 5 et 10 go de même que la partition "home" pourra être étendue à 5 go, le reste réservé à la partition vfat,

Toutes les partitions seront formatées à l'installation, sauf la partition vfat , Afin d'éviter toute perturbation de l'installation, une vérification de l'intégrité du CD/DVD (si

l'options est proposée) sera effectuée, Suivant l'avancé de l'utilisateur, il pourra être demandé que l'installation soit effectuée avec LVM

(Logical Volume Manager).

Aucun paquetage complémentaire ne sera installé dans un premier temps.

(Le nom de l'hôte au nom de l'utilisateur ici : "loiseljp")

(Cas d'une installation avec LVM)

Administration Unix /Linux page 4/78

LoiselJP ©2010

Page 5: TP AdminLinux GnuLinux

Suivant l'utilisation / destination certains logiciels non indispensables peuvent être désélectionnés (ici la suite bureautique).

Dans le cas de RedHat /Fedora, il peut être intéressant d'ajouter les dépôts au cours de l'installation de base.

Cette sélection des dépôts au cours de l'installation peut éviter de devoir les ajouter par la suite.

Dans le cas de Debian, la sélection d'un miroir réseau n'aura aucune influence sur l'installation. Cela permettra néanmoins de configurer le système pour récupérer les programmes manquant sur l'Internet: il est donc préférable d'utiliser un miroir réseau.

Administration Unix /Linux page 5/78

LoiselJP ©2010

Page 6: TP AdminLinux GnuLinux

b - Booter le PC sur le CD

Installation par le CD1/DVD1 de la distribution publique :

Booter sur le premier CD/DVD de la distribution, Ne mentionner que le « CD 1 » comme disponible de façon à forcer l'installation à utiliser le service

FTP/NFS/HTTP (selon la configuration disponible) à la place des autres CD.

Installation par le CD spécial (net install) :

Booter sur le CD d'installation réseau, Finir l'installation avec le protocole FTP/NFS/HTTP selon la configuration de la salle.

Suite de l'installation :

Mot de passe root : «azerty*», création de l'utilisateur "utilisateur"... suivant les consignes définies en début de chapitre. Si l'option est proposée, ne pas activer le démarrage d'une session automatique pour un utilisateur Créer le programme de démarrage (bootloader lilo ou grub si le choix est proposé) en MBR. Arrivé au résumé de l'installation, passer au paragraphe suivant.

(suivant la possibilité d'en faire le choix, le bureau KDE sera choisi pour le débutant, pour sa ressemblance à Windows, contre Gnome pour sa ressemblance au bureau Mac.)

Administration Unix /Linux page 6/78

LoiselJP ©2010

Page 7: TP AdminLinux GnuLinux

(ajouter et créer les partitions manuellement)

Quelques minutes sont nécessaires le temps que l'installation se fasse et propose le premier écran d'accueil. Si cet exercice est effectué dans le cadre d'un cours collectif, il est fort probable que le formateur aura proposé plusieurs supports ou distributions, profiter de ces quelques instants "libres" pour comparer l'installation à celle des voisins.

Administration Unix /Linux page 7/78

LoiselJP ©2010

Page 8: TP AdminLinux GnuLinux

c - Résumé de l'installation et fin

En fin d'installation se connecter sur le compte "utilisateur", certaines distributions admettent une connexion sur le compte "root" (sous Linux, "root" est l'administrateur ).

* Suivant la distribution installée, et l'interface graphique (KDE, Gnome...) choisie, après login, le bureau est enfin disponible.

* Ici le bureau KDE 4 de la distribution OpenSuse.

* Le bureau donne accès facilement aux différents menus, programmes... suivant le paquetage logiciel installé.

* Ci-contre le bureau KDE de Mandriva.

* Tout comme KDE le bureau

Administration Unix /Linux page 8/78

LoiselJP ©2010

Page 9: TP AdminLinux GnuLinux

Gnome propose un menu.

* Ci-contre le bureau Gnome sur Debian.

Configurer l'interface graphique : ne pas lancer automatiquement l'interface graphique au démarrage, Configurer le fond d'écran, l'écran de veille, la barre des taches, son comportement, Pour les utilisateurs les plus avancés à ce stade, placer un raccourci sur le bureau du navigateur de

fichier, le traitement de texte, le gestionnaire de paquetages, la corbeille, un terminal...

* Bien que d'une base différente, la distribution Fedora présente un bureau Gnome identique à celui de l'image précédente d'une distribution Debian.

Administration Unix /Linux page 9/78

LoiselJP ©2010

Page 10: TP AdminLinux GnuLinux

C - Post installation, information sur le matériel, fichiers de configuration

Ouvrir un terminal, puis se connecter en administrateur:

* Comme dans l'image ci-dessus, après avoir ouvert un terminal taper "su" pour "Super Utilisateur", taper le mot de passe (le mot de passe est tapé en "aveugle"). En réalité SU veut dire Substitue User (« su utilisateur » permet de changer d’utilisateur) mais reste souvent "Super Utilisateur" car employé seul.

- L'invite de commande se termine alors par # indiquant le mode root.

d - Informations sur le boot et les périphériques reconnus au boot

Visualiser les messages de boot avec la commande dmesg.

On notera que tout comme pour Windows, on peut utiliser le touche [tab] pour s'aider dans le découverte des commande (à l'invite de commande taper: "dme" puis la touche [tabl], le reste de la commande ligne se rempli alors).

- La touche [tab] tapée directement à l'invite de commande propose toute la liste des commandes disponibles.

Quel est le nombre de commandes disponibles?

- Dans l'exemple ci-dessous 1645 commandes sont possibles:

Comment faire défiler la sortie de dmesg page par page ?

Le pipe "|" permet de combiner les commandes, ainsi "more" limite l'affichage des lignes les deux combinés permettent un affichage plus aisé:

dmesg |more

Administration Unix /Linux page 10/78

LoiselJP ©2010

Page 11: TP AdminLinux GnuLinux

Analyser les informations de dmesg.

Comment écrire la sortie de dmesg dans un fichier mess.txt?

le signe > permet de sélectionner la sortie standard, ici en choisissant un fichier "mess.txt" les informations sont alors enregistrées dans le fichier:dmesg > mess.txt

Éditer le fichier "mes.txt" avec l'éditeur vi :

"vi" est l'éditeur de texte le plus utilisé, bien que peu pratique dans un premier temps, son utilisation devient très vite intéressante.

- Lancer l'éditeur:vi

- Pour quitter "vi" taper ":q"

- Lancer l'édition du fichier "mess.txt" vi mess.txt

- Fichier spécial associé au lecteur de disquette ? /dev/fd0

- Fichier spécial associé au lecteur CD/DVD ? :/dev/hdc

Comment filtrer la sortie de dmesg pour afficher la fréquence bus IDE ?- La commande grep permet de filtrer... "grep" peut filtrer en cascade, on peut alors trouver la

fréquence de l'ide:dmesg | grep ide | grep MHz

e - Retrouver les informations sur le matériel

* Il existe plus de 2000 commandes courantes ou couramment employées. Il serait très difficile en quelques heures d'en faire le tour tout comme faire le tour du système.Les quelques lignes qui suivent proposent donc quelques commandes qui vont permettre d'aborder et comprendre quelque peu mieux son fonctionnement.

Il est courant d'utiliser les mêmes commandes.L'utilisation d'une commande peut-être remplacée par un "alias" de cette commande.Ainsi: alias ll="ls -l"

Crée une commande "ll" qui aura pour résultat "ls -l".

Administration Unix /Linux page 11/78

LoiselJP ©2010

Page 12: TP AdminLinux GnuLinux

f - Informations sur le matériel du PC : pseudo filesystem /proc

Lister le contenu du répertoire /proc.

La commande cd permet de se déplacer dans les répertoires (tout comme dans Windows):cd /proc

La commande ls permet de lister les fichiers d'un dossier:ls

La commande ls -l liste les fichiers d'un dossier en donnant leur caractéristique complète:ls -l

alias ll="ls -l" Créera une commande ll représentant ls -l.

Les répertoires dont le nom est un numéro correspondent aux numéros des processus (PID).

Pour rappel: tout est fichier sous linux, les processus n'y échappent pas.

Visualiser les informations sur le CPU : cat /proc/cpuinfo

Type du processeur ?

Fréquence d'horloge du processeur ?

Taille du cache ?

Visualiser les informations sur la mémoire : cat /proc/meminfo

Total de la RAM en kB ?

Capacité du swap ?

g - Informations sur le matériel du PC : bus PCI

Visualiser les informations sur le BUS PCI avec la commande lspci [-v]

Type de la carte graphique ?

Administration Unix /Linux page 12/78

LoiselJP ©2010

Page 13: TP AdminLinux GnuLinux

Taille de la mémoire de la carte graphique ?

h - Détecter les traces de l'activité du système

Pour les distributions Mandriva et Suse:

Traces de l'activité du système : syslog

Syslog est un service de log (enregistrement) des événements systèmes : les démons klogd et syslogd centralisent les demandes d'écriture de messages provenant du noyau, des modules du noyau, des autres démons et de façon générale de tout processus s'exécutant dans la machine. Les écritures se font dans des fichiers situés dans le répertoire /var/log.

Syslog assure également un service de compression et de rotation périodique (à la semaine) des différents fichiers de log.

La consultation régulière du contenu (et de la taille) des fichiers log est une nécessité pour un administrateur système!!

Vérifier le statut du service syslog. - Se connecter en root puis :/etc/init.d/syslog status

Visualiser le fichier :vi /var/log/syslog

Visualiser en continu /var/log/messages :tail -f /var/log/messages

Pour les distributions Debian et Fedora:

Traces de l'activité du système : rsyslog

Rsyslog, rsyslogd ... fonctionnent de manière identique aux commandes trouvées précédemment pour les distributions Suse et Mandriva à la seule différence que la commande passe de "Syslog" à "Rsyslog".

Vérifier le statut du service rsyslog. - Se connecter en root puis :/etc/init.d/rsyslog status

Visualiser le fichier :vi /var/log/messages

Administration Unix /Linux page 13/78

LoiselJP ©2010

Page 14: TP AdminLinux GnuLinux

Visualiser le fichier :vi /var/log/syslog

Visualiser en continu /var/log/messages :tail -f /var/log/messages

i - Partitions et fichier /etc/fstab

Au cours des différentes manipulations effectuées jusqu'à présent, la ligne de commande a été explicitement donnée, à compter de ce chapitre, il est supposé que le principe d'éditer ("#vi nom_de_fichier"), se déplacer dans un dossier ("#cd nom_du_dossier")... est acquis.Il est bien compris également que l'exécution des commandes s'effectuent généralement en mode root.

Quelques commandes indispensables à connaître pour manipuler les partitions disques :

Dans la gestion des disques et partition on parle alors de "monter" ou "démonter", c'est à dire associer ou dissocier un périphérique d'un dossier afin d'en lire le contenu.

mount : « monter » une ressource de type disque sur un point de montage (répertoire) umount : « démonter » une partition (on ne peut pas démonter une partition utilisée) fuser : Lister les processus qui se servent d'un fichier mkfs -t type : Formater une partition selon le type indiqué (ext2, ext3, vfat, ...) fsck : Vérifier l'intégrité d'une partition (non montée) et réparer les éventuels défauts.

Fichiers de configuration utiles :

/etc/fstab : Liste des partitions à monter au démarrage avec toutes les options de montage /etc/mtab : Liste des partitions montées (information dynamique).

Vérifier les informations de montage des partitions dans le fichier /etc/fstab

On notera la commande "supermount" de la Mandriva.

Supermount est une fonctionnalité très séduisante des distributions Mandriva. Dans la plupart des autres distributions, le montage des périphériques amovibles se fait de manière explicite. En clair, pour lire le contenu d'un CD, il faut préalablement le monter à l'aide de la commande "mount" pour lier le périphérique concerné au système. De même, avant d'éjecter le CD, il est nécessaire de le démonter avec la commande "umount" pour délier le périphérique.

Avec Supermount comme sous Windows, cette liaison se fait implicitement. C'est à dire qu'à l'insertion d'un CD ou d'une disquette, le média est instantanément monté. De même il est automatiquement démonté à l'éjection.

Modifier les options de montage de la disquette. Editer /etc/fstab (rappel: "vi /etc/fstab") :

- Répertoire de montage : /mnt/floppy- Type de filesystem : auto- Options : umask=0,user,iocharset=iso8859-15,sync,codepage=850,noauto

Administration Unix /Linux page 14/78

LoiselJP ©2010

Page 15: TP AdminLinux GnuLinux

vérifier la signification des options (pour cela lancer la commande "man mount" qui lancera le manuel de la commande mount)

- Rang de dump : 0- Rang de check : 0

En utilisant la commande fdisk, lister l'état des partitions crées lors de l'installation. Déterminer alors le numéro de partition non montée (partition vfat):

fdisk -l

- Dans l'image ci-dessus, on peut distinguer les 3 partitions primaires (sda1/sda2/sda3), la partition étendue (sda4) et nos 3 partitions suivantes dont sda7 la partition fat.

Créer un filesystem vfat dans la partition réservée (lors de l'installation, nous avons créé une partition non formatée) :

mkfs -t vfat /dev/sda7

Démonter la partition /homeumount /home

Vérifier le filesystem correspondant à /home (fsck)fsck /home

Créer un répertoire /mnt/dosmkdir /mnt/dos

Monter la partition vfat sur ce répertoiremount -t vfat /dev/hda7 /mnt/dos

Vérifier qui utilise /mnt/dos avec fuser -avfuser -av /mnt/dos

Administration Unix /Linux page 15/78

LoiselJP ©2010

Page 16: TP AdminLinux GnuLinux

Se déplacer dans /mnt/dos (cd)

Essayer de démonter /mnt/dos umount /mnt/dos

Le résultat est occupé (busy). Le dossier est en cours de visualisation, donc il ne peut être démonté (commande "cd /mnt/dos" utilisée précédemment).

Vérifier qui utilise /mnt/dos fuser -av /mnt/dos

Bien évidemment, root est l'utilisateur en cours!

Libérer /mnt/dos (se déplacer ailleurs dans "var" ou "etc" par exemple)

Démonter la partition liée à /mnt/dosumount /mnt/dos

- Cette fois plus de souci.

j - Fin de formation jour 1

(A réaliser suivant l'avancée dans le TP)

Voir les autres fichiers de configuration

Dans les exercices précédents, nous avons vu quelques fichiers et commandes.

Lister tous les fichiers de configuration:- La commande find permet de trouver un liste de fichiers.

En utilisant le manuel de "find" (man find), trouver la commande qui permettra de trouver tous les fichiers ".conf".

Le fichier man fait 1500 lignes! La commande "find --help" suffira certainement!

find / -name "*.conf"

- Les fichiers de configuration se comptent par dizaines et ce chiffre augmente avec chaque nouveau paquet installé.

Editer quelques fichiers (/etc/rsyncd.conf /etc/samba/smb.conf...).

Pour les plus avancés, il est possible de terminer cette première journée, en installant différents "bureaux".- Gnome,

Administration Unix /Linux page 16/78

LoiselJP ©2010

Page 17: TP AdminLinux GnuLinux

- KDE,- Xfce.

Il est également possible d'y installer des "Widgets":

Modifiez le fichier /etc/apt/source.list

vi /etc/apt/source.list

( Coller à la fin du fichier:

deb http://download.tuxfamily.org/syzygy42/ feisty avant-window-navigatordeb-src http://download.tuxfamily.org/syzygy42/ feisty avant-window-navigator

( Exécuter

wget -q http://download.tuxfamily.org/syzygy42/8434D43A.gpg -O- | apt-key add -apt-get updateapt-get install avant-window-navigator-bzr

apt-get install gdesklets

Administration Unix /Linux page 17/78

LoiselJP ©2010

Page 18: TP AdminLinux GnuLinux

2 Administration de base

a - Gérer les comptes utilisateurs

Le système Unix/Linux permet de définir des utilisateurs et des groupes.

Tout utilisateur d'un système possède : Un identifiant d'utilisateur (UID : User Identification),

( Pour l'usage : un UID < 500 correspond à un utilisateur système; un UID >= 500 correspond à un utilisateur.

Un identifiant de groupe principal (en plus de son groupe principal, un utilisateur peut appartenir à plusieurs autres groupes secondaires) GID : Group Identification,(Usage : GID < 500 : groupe système; GID >= 500 : groupe utilisateur)

( La gestion des utilisateurs et des groupes peut se faire : A la main (édition manuelle des fichiers /etc/passwd, /etc/shadow et /etc/group ...)

Editer les fichiers précédents (etc/passwd, /etc/shadow et /etc/group) puis noter les groupes et utilisateurs

En utilisant des commandes standard d'administration : useradd, groupadd, chsh

useradd, groupadd fonctionnent simplement en ajoutant en argument le nom d'utilisateur ou de groupe, chsh lui reçoit pour argument le chemin du shell (par exemple: "useradd nouvel_user").

Créer un nouvel utilisateur "passager",

Créer un nouveau groupe de travail "visiteur",

Lister les différents shell (interpréteurs de commande) pouvant être affectés à un utilisateur ("chsh -l").

- En suivant l'exemple de l'impression écran suivante, modifier le shell de utilisateur,- Changer celui de l'administrateur.

On notera que l'utilisateur en cours est "root", il n'est pas utile alors de taper le nom de l'utilisateur,

Administration Unix /Linux page 18/78

LoiselJP ©2010

Page 19: TP AdminLinux GnuLinux

- En forçant le passage en Root (su), on peut alors constater la modification du shell:

Replacer le shell d'origine [bin/bash] pour root.

L' ajout, la modification d'utilisateur peut se faire également en utilisant des utilitaires graphiques: Pour Mandriva on utilisera drakconf, drakuser, Pour Fedora / gnome system-config-users, Pour suse yast (dans un terminal), yast2, Pour Debian gnome users-admin,

Lancer l'interface graphique de gestion des utilisateurs suivant l'installation.

Ajouter un utilisateur : - Les tâches à planifier sont :

- Déterminer le nom de login, le numéro UID, le groupe et le répertoire d'accueil,

Administration Unix /Linux page 19/78

LoiselJP ©2010

Page 20: TP AdminLinux GnuLinux

- Ajouter le compte utilisateur, avec un mot de passe initial,- Eventuellement : créer le répertoire d'accueil,- Eventuellement : mise en place de quotas, copie de fichiers de configuration de base ...- Rendre l'utilisateur propriétaire de l'arborescence (chown -R ... / chgrp -R ).

Prendre quelques minutes pour explorer les commandes:- useradd, groupadd, chsh, userdel, usermod, groupdel,- Utiliser le commutateur --help, -? sur les commande comme useradd, groupadd... ("usermod --help")

Fichier /etc/passwd : liste des utilisateurs

Chaque ligne, constituée de champs séparés par le caractère « : », décrit un (pseudo) utilisateur :login:mot_de_passe_crypté:UID:GID:commentaire:répertoire_home:programme_lancement

Le mot de passe se trouve dans le fichier passwd. Le fichier passwd n'est accessible qu'au système et l'administrateur (root). Cependant, les mots de passe sont désormais cryptés.

Pour des raisons de sécurité, le mot de passe crypté ne figure plus dans le fichier passwd, mais dans le fichier shadow.

Visualiser le fichier /etc/passwd (vi, cat, ...).

Quels sont les droits d'accès du fichier /etc/passwd ? : ls -l /etc/passwd

(-rw--r--r--r root)

Quels sont les droits d'accès du fichier /etc/shadow ? : ls -l /etc/shadow

(-r-------- root)

Fichier /etc/shadow : gestion des mots de passe des utilisateurs

Chaque ligne (champs séparés par des « : ») décrit le mot de passe d'un utilisateur et des informations sur les dates de création, d'expiration. Rechercher dans le manuel en ligne la description des champs du fichier /etc/shadow.("man shadow")

Quel est le rang du champ donnant le nombre de jours durant lesquels le mot de passe est encore valide ?

Fichier /etc/group : liste des groupes

Chaque ligne (champs séparés par des « : ») décrit un groupe:nom_groupe:x:GID:liste_des_membres

Administration Unix /Linux page 20/78

LoiselJP ©2010

Page 21: TP AdminLinux GnuLinux

Visualiser le fichier /etc/group (vi, cat, ...).

Nota : il existe un fichier /etc/gshadow, qui joue le même rôle que /etc/shadow pour les groupes, mais le champ « mot de passe » n'est plus utilisé pour la gestion des groupes.

Ajouter/Supprimer un groupe

Le plus simple pour supprimer un groupe est de supprimer la ligne correspondante dans le fichier

/etc/group.

Consulter l'aide en ligne sur la commande groupadd ("man groupadd"),

Utiliser "groupadd" pour ajouter le groupe tpadmin (2222) : groupadd -g 2222 tpadmin

Vérifier la modification dans le fichier /etc/group

Ajouter « à la main » le groupe tp (2223) en éditant directement le fichier /etc/group.

Ajouter/Supprimer - Verrouiller/Déverrouiller un utilisateur

Le plus simple pour supprimer un compte utilisateur est de supprimer les lignes liées à ce compte dans les fichiers concernés (/etc/passwd, /etc/shadow et /etc/group), et de gérer « à la main » la suppression éventuelle ou l'archivage de ses données sur disque.

La commande adduser (présente sur beaucoup de distributions de GNU/Linux) n'est pas standard : mieux vaut utiliser la commande useradd.

Ajouter l'utilisateur guest : UID = 1111 avec la commande useradd.

Vérifier la création du compte guest dans les fichiers /etc/passwd, /etc/shadow et /etc/group. Observer les valeurs par défaut des options non précisées : groupe, home, shell ...

Modifier « à la main » (éditer /etc/passwd sous vi) le groupe de l'utilisateur guest : remplacer le GID existant par celui du groupe users.

Changer récursivement le groupe du répertoire de connexion de guest : chgrp -R users guest

Donner un mot de passe à l'utilisateur guest : passwd guest.

Activer la deuxième console (ALT + F2)

Se connecter comme utilisateur guest,

Revenir dans la première console (root) (ALT + F1),

Verrouiller le compte guest : passwd -l guest,

Administration Unix /Linux page 21/78

LoiselJP ©2010

Page 22: TP AdminLinux GnuLinux

Activer la troisième console (ALT + F3),

Tenter une connexion guest,

Revenir dans la première console (root) (ALT + F1),

Déverrouiller le compte guest : passwd -u guest.

Correction automatique des incohérence

Dans certains cas, on peut détecter et corriger rapidement des incohérences entre fichiers de configuration en utilisant :

pwck (password check), pour vérifier les fichiers passwd et shadow, grpck (group check), pour vérifier les fichiers group et gshadow.

Lancer les commandes pwck et grpck. Observer les résultats éventuels.

Administration Unix /Linux page 22/78

LoiselJP ©2010

Page 23: TP AdminLinux GnuLinux

b - Donner des droits à un utilisateur: la commande Sudo

Sous Windows, un petit programme, comme CPAU, peut être utilisé pour autoriser un utilisateur à exécuter un programme ou une commande ("runas" en ligne de commande). Sous Linux, il existe un programme équivalent: "sudo".

Avant de procéder aux différents essais, vérifier l'installation de la commande. Pour cela, depuis une console taper la commande "sudo". Passé sans argument, un résumé de son utilisation s'affiche.

Si la commande n'est pas trouvée, l'installer:- Par l'interface graphique, par le menu "Système", lancer le programme d'ajout / suppression de logiciel, (Synaptic, Yumex, Yast, Package Manager...)

- Sous Mandriva, utiliser "urmpi sudo",

- Sous Fedora, Redhat... "yum install sudo",

- Sous Debian ou toute version utilisant les paquets "deb", utiliser "apt-get install sudo",

- Sous Suse "rpm -ivh sudo".

"sudo" (Substitute User DO, certains pense Super User Do, d'autres disent Switch User Do, la première définition semble l'emporter) autorise une liste d'utilisateur à exécuter un certain nombre de commande à partir d'un fichier "/etc/sudoers".

L'éditeur "visudo" est tout particulièrement prévu pour la modification et la visualisation de ce fichier.

Lancer "visudo".

En lisant les explications contenues dans le fichier:- Donner tous les droits à l'utilisateur "utilisateur",

- Donner les droits de créer et supprimer un utilisateur à "passager" (utilisateur créé lors de l'exercice précédent).

Administration Unix /Linux page 23/78

LoiselJP ©2010

Page 24: TP AdminLinux GnuLinux

3 Ajout suppression de programmes

Sur Redhat / Fedora, dans certains cas, par mesure de sécurité, le réseau n'est pas activé. Ceci est notamment perceptible lorsque l'ajout de dépôts au cours de l'installation n'est pas coché. L'installation de nouveaux paquets peut nécessiter d'activer le service réseau. La commande suivante se chargera de démarrer l'interface:

/etc/init.d/networking start

a - Installer des paquets

L'installation et la gestion des paquets est l'un des points principaux de l'utilisation d'une distribution Linux. Le logiciel de gestion de ces paquets utiliseront des sources à partir de CDrom, DVD ou encore de sites Internet dépôts, souvent appelés simplement "dépôt".

Les premiers dépôts visibles sont ceux du DVD. Il est possible de disposer de plusieurs dépôts de ce type avec un contenu varié suivant les distributions. Mais aucun d'eux, même les énormes DVD double couche (comme pour suse), n'inclut tous les paquets, ainsi il est nécessaire de disposer des dépôts en ligne dans la mesure du possible.

Ces dépôts pourront être gérés directement dans le fichier sources.list ("etc/apt/sources.list" pour Debian), la commande "zipper" sous Suse permet d'ajouter les dépôts ("zipper ar <url>"), "drak-rpm-edit-media" sous Mandriva s'acquittera de cette tâche, enfin on utilisera "yum" sous Fedora avec l'option --enablerepo ou --disablerepo.

Voici différents liens de dépôts:

http://fr.opensuse.org (lien "Dépôts de paquets"):- http://download.opensuse.org/distribution/11.2/repo/oss/- http://download.opensuse.org/distribution/11.2/repo/non-oss/- http://download.opensuse.org/update/11.2/

Pour la distribution Debian, étant donné le principe communautaire, une recherche sur Internet sera nécessaire. http://www.debian.org sera d'un grand secours. Voici quelques lignes d'un sources.list Ddebian:

- deb http://ftp.fr.debian.org/debian/ etch main - deb-src http://ftp.fr.debian.org/debian/ etch main- deb http://security.debian.org/ etch/updates main contrib non-free - deb-src http://security.debian.org/ etch/updates main contrib non-free- deb http://ftp.fr.debian.org/debian/ stable main contrib non-free - deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free- deb http://www.debian-multimedia.org etch main

Pour Mandriva un choix de miroirs sera proposé avec "drak-rpm-edit-media".

Evidemment, une connexion Internet est nécessaire pour l'utilisation de dépôts externes.

Administration Unix /Linux page 24/78

LoiselJP ©2010

Page 25: TP AdminLinux GnuLinux

- Commencer par vérifier la connexion par un moyen quelconque ("ifconfig", "ping google.fr", "Firefox" ou " Iceweasel").

Par l'interface graphique, il est facile de configurer le réseau.

De nombreuses distributions proposent aujourd'hui Iceweasel comme navigateur en lieu et place de Firefox (ce qui est en définitive le même programme).

b - Les frontends d'installation de paquets Yumex Synaptic...

Les frontends permettent de faire la liaison entre l'interface graphique et le logiciel de gestion des paquets (étudiés au chapitre suivant).

On les trouvera sous le nom de Yumex, Synaptic, Ksynaptics, Yast, Package Manager.

Administration Unix /Linux page 25/78

LoiselJP ©2010

Page 26: TP AdminLinux GnuLinux

Simple d'utilisation, il suffira alors de sélectionner le paquet désiré pour installer le paquet voulu.

La mise à jour, l'ajout de dépôts se fera très simplement.

A ce stade de la formation sur les bases de Linux, la dépendance des paquets ne sera pas traitée.- La dépendance des paquets correspond à la nécessité d'installer un paquet afin que celui sélectionné à la base puisse fonctionner: sous Windows, il est parfois nécessaire d'installer un runtime. Les dépendances jouent le même rôle.

c - Les commandes de gestion des paquets

Dans le cas de débutant, le frontend est souvent une solution simple d'emploi. Dans le cadre de l'administration, il sera souvent préféré l'utilisation de la ligne de commande.

On distingue deux grands types de paquets. Les paquets DEB et les paquets RPM.

Les distributions Suse, Fedora et Mandriva utiliseront des paquetages à base RMP alors que Debian utilise des paquets DEB.

Les commandes apt/dpkg (Debian)

Les commandes apt sont des extensions au système DEB développées pour les distributions à base et dérivées de Debian:

La commande "apt-get -h" permettra d'avoir très vite une idée des commutateurs possibles.

- Ainsi:

- apt-get update met à jour la liste des paquets disponibles liste dans le sources.list,- apt-get install installe le(s) paquet(s) indiqué(s),- apt-get remove supprime le(s) paquet(s) indiqué(s),

Administration Unix /Linux page 26/78

LoiselJP ©2010

Page 27: TP AdminLinux GnuLinux

Quant à dpkg, c'est un outil d'installation; de création et de suppression de paquets Debian. Tout comme apt-get, dpkg est contrôlé entièrement en ligne de commande et possède un frontend très pratique: "aptitude".

L'utilisation de dpkg demande quelques informations supplémentaires. L'utilisateur désirant l'utiliser pour l'installation/suppression de paquets, devra lire le manuel associé ("man dpkg").

Une commande intéressante est notamment à noter: "dpkg -l" qui permet d'obtenir les liste des paquets installés. avec une sortie vers une fichier, cela devient très intéressant dans le cas d'administration de poste ("dpkg -l > liste_des_fichiers.txt").

Commandes rpm/urpm (Mandriva)

Les commandes urpm sont des extensions au système RPM développées par Mandriva et distribuées sous licence GPL :

urpmi : installer un paquet (install) urpmq : demander des infos (query) urpme : supprimer un paquet (erase) urpmf : quels sont les paquets qui contiennent un fichier donné (file)

Certaines distributions (Suse) peuvent utiliser des variantes de cette commande. Ce qui donne:- rpm --install : installer un paquet

Administration Unix /Linux page 27/78

LoiselJP ©2010

Page 28: TP AdminLinux GnuLinux

- rpmquery : demander des infos- rpm -e : supprimer un paquet

Tous les fichiers de configuration et de données du système rpm sont rangés dans le répertoire /var/lib/rpm/ ; ceux du système urpm sont dans /var/lib/urpmi.

Commandes yum (RedHat / Fedora)

Les distributions Redhat/Fedora bien qu'utilisant les paquets RPM possèdent leur propre système d'installation et lecture de lecture de paquet: YUM.

La commande yum ("yum --help" pour plus d'information), a un comportement sensiblement identique à "rpm" trouvé dans Mandriva.

- La commande sera ainsi disponible pour le lecture de paquet, listes alors qu'une installation à partir d'un dépôt se fera par le commande "yum" ("yum install").

Commandes Yast (Suse)

La distribution Suse utilise les paquets RPM mais possède son propre système d'installation et lecture de lecture de paquet: Yast.

La commande yast ("yast --help" pour plus d'information), a un comportement sensiblement identique à "rpm" trouvé dans Mandriva.

- La commande sera ainsi disponible pour la lecture de paquet, lister les paquets. Une installation à partir d'un dépôt se fera par la commande "yast" ("yast -i").

Suivant le distribution installée, exécuter les opérations suivantes:

Lancer l'interface graphique de gestion des paquets (Yumex, Synaptic, Ksynaptics, Yast), Mettre à jour la liste des paquets disponibles.

Lister tous les paquets installés :

1) rpm -q -a Pour Suse, Fedora2) rpmquery -a Pour Mandriva 3) dpkg -l pour Dedian

Comment visualiser la sortie précédente page par page ?

1) rpm -qa | more 2) rpmquery -a | more 3) dpkg -l | more

Comment savoir si le paquet "telnet" est installé ?

1) rpm -qa | grep telnet, urpmq -Y telnet 2) rpmquery -a | grep telnet3) dpkg -l | grep telnet

Administration Unix /Linux page 28/78

LoiselJP ©2010

Page 29: TP AdminLinux GnuLinux

Si ce n'est pas encore fait, installer le paquet "telnet".

1) rpmii telnet 2) rpm -i telnet3) apt-get install telnet

4) yum install telnet Pour RedHat/Fedora5) yyast -i telnet Pour Suse

Comment lister les fichiers appartenant au paquet "telnet"?Exemple: dpkg -L telnet

Comment désinstaller le paquet "telnet"? Effectuer l'opération.

Installer les paquets ssh serveur et client (les paquets à installer sont: openssh-server openssh-clients

pour Mandriva, ssh pour Debian, openssh pour Fedora et Suse) :

* Ces paquets peuvent être installés, ils seront nécessaire ultérieurement

Lister les fichiers du paquet ssh serveur ("openssh-server"... appliquer la commande utilisée précédemment avec Telnet)

Vérifier que le service sshd est bien dans lancé au démarrage de la machine :

chkconfig –-list sshd

Lancer le service ssh (<=> lancer le serveur sshd ) :/etc/init.d/ssh start(peut exieter sous cette forme /etc/inti.d/sshd start)

* Le service ssh devra impérativement être installé, il sera né/cessaire ultérieurement.

A propos de paquets RMP ou DEB

Par défaut chaque distribution à son type de paquet associé. Des outils permettent de faire la passerelle entre les deux. ainsi "Alien" sous Debian convertira les paquets RPM en DEB en une simple ligne de commande, aussi bien que l'inverse pour une autre distribution.

La commande à taper dans "alien" (au besoin installer Alien puis trouver cette commande à l'aide de "-?") est :

Administration Unix /Linux page 29/78

LoiselJP ©2010

Page 30: TP AdminLinux GnuLinux

Placer ici la commande:

Administration Unix /Linux page 30/78

LoiselJP ©2010

Page 31: TP AdminLinux GnuLinux

4 Configuration du système.Tout programme nécessite une configuration. Les fichiers de configuration sont reconnaissables à leur extension .conf.

Lister les fichiers de configuration:find / -name *.conf

On remarquera que leur nombre est conséquent. Il n'est pas possible de tous les étudier. Ce chapitre se limitera donc à l'étude d'un élément en particulier: le service réseau. La gestion des services sous Linux est dérivée de celle d'Unix System V.

a - Le service réseau

Remarque : les cartes réseaux font partie des rares périphériques qui ne suivent pas le principe Unix « all is file » !! Sous Linux, les cartes réseaux Ethernet sont identifiées par le symbole eth0, eth1, ...

Fichiers de configuration

Les principaux fichiers qui permettent de configurer le réseau sont :/etc/hosts : table des correspondance adresse IP <-> nom de machine et

alias,/etc/resolv.conf : domaine DNS par défaut et adresse IP des serveurs DNS à

contacter,/etc/nsswitch.conf : décrit quels mécanismes mettre en oeuvre pour satisfaire la

résolution de noms de machine en adresses IP.

Le format de ces fichiers est documenté dans la section 5 du manuel : man 5 hosts

man 5 resolv.conf

man 5 nsswitch.conf

Pour les distributions de GNU/Linux compatibles RedHat, il existe de plus des fichiers de configuration dans le répertoire /etc/sysconfig :/etc/sysconfig/network contient des informations sur la configuration réseau :

NETWORKING :yes ou no,HOSTNAME :nom (FQDN) de la machine,GATEWAY :adresse IP de la passerelle,GATEWAYDEV :optionnel, identification de la carte réseau pour accès à la passerelles,(eth0, eth1, ...)NISDOMAIN :optionnel, nom du domaine NIS.

/etc/sysconfig/network-scripts/ifcfg-eth0 contient le paramétrage de la carte réseau eth0DEVICE=eth0BOOTPROTO=dhcpIPADDR=192.168.1.22NETMASK=255.255.255.0NETWORK=192.168.1.0BROADCAST=192.168.1.1ONBOOT=yesHWADDR=a0:1c:0f:5a:7e:56

...

Administration Unix /Linux page 31/78

LoiselJP ©2010

Page 32: TP AdminLinux GnuLinux

Commandes

/etc/init.d/network start|stop|restart|status : pour démarrer|arrêter|redémarrer|interroger le réseauifconfig : configurer les interfaces réseau, ou obtenir des informations sur leur fonctionnementroute : afficher/modifier la table de routagenetstat : obtenir des informations sur l'état du réseau

Redémarrer le service network

Examiner les informations correspondantes dans /var/log/messages

Examiner le contenu du fichier /etc/sysconfig/network (sur debian le fichiers est: /etc/network/interfaces)

Lancer la commande ifconfig [-a]

Lancer la commande route

Lancer la commande netstat -a

Visualiser le fichier /etc/hosts

Visualiser le fichier /etc/resolv.conf

Visualiser le fichier /etc/nsswitch.conf

D'autres fichiers de configuration, plus conséquents, seront abordés lors des derniers chapitres: "Introduction aux serveurs LAMP".

Administration Unix /Linux page 32/78

LoiselJP ©2010

Page 33: TP AdminLinux GnuLinux

5 Les modes d'opération, procédure de démarrage. Seul et unique process lancé par le kernel, init a pour tâche de lancer chacun des process, y compris les différents daemons et les sessions de login sur les consoles texte, pour aboutir à un système configuré.

Il doit aussi collecter les zombies (process orphelins) et gérer l'arrêt du système. Quand le kernel est exécuté, au boot, il charge les drivers de périphériques pour lesquels il a été configuré puis il lance /sbin/init , lequel prend en charge la suite des opérations, les path /bin/init et /etc/init sont aussi compilés dans le noyau).

Par la suite le kernel n'interviendra plus que pour répondre aux appels système. La plupart des distributions procurent un init similaire dans son approche à l'init d'Unix System V.

Ainsi init est le premier process lancé, il est le père de tous les autres process.

Si pour une raison indéterminée le kernel ne pouvait exécuter init , il exécuterais /bin/sh et lancerait un shell, lequel donnerait accès en qualité de root et en mode mono-utilisateur à un système non configuré.

init se charge des opérations suivantes : - Monter le fichier racine (/)- Monter les autres systèmes de fichiers tel que spécifié dans /etc/fstab- Activer le swap- Initialiser les services en exécutant les scripts de configuration- Activer l'écran de login sur les consoles

C'est le script /etc/inittab qui définit le mode dans lequel sera démarré le système. Il s'agit des runlevels ou niveaux d'exécution. Les runlevels peuvent être spécifiés différemment d'une distribution à une autre. On notera cependant que les runlevels 0, 1 et 6 sont codés en dur dans init ou dans shutdown et ne peuvent être changés.

Le système est démarré dans le mode indiqué par la ligne :id:.:initdefault:

La syntaxe de "inittab" est la suivante : id:runlevel:action:process

Le système étant lancé, on peut à tout moment changer de runlevel aux moyen des commandes init ou telinit suivies du runlevel souhaité. Voir à ce sujet les pages man init 8 et telinit 8.

La consultation de la page man inittab 5, init 8 et telinit 8 sont particulièrement instructives.

a - Les runlevels (niveaux d'exécution)

Les séquences de démarrage de linux sont échelonnées en "runlevels" ou niveau d'exécution, ces niveaux d'exécution pourront varier légèrement d'une distribution à l'autre.

Administration Unix /Linux page 33/78

LoiselJP ©2010

Page 34: TP AdminLinux GnuLinux

RedHat et Mandriva SusE Debian0 Arrêt système 0 Arrêt système 0 Arrêt système1 Mono-utilisateur 1 Multi user sans réseau 1 Mono-utilisateur2 Multi user sans réseau 2 Multi user avec réseau 2 Multi user sans réseau3 Multi user avec réseau 3 Multi user, réseau, Xwindow 3 Multi user avec réseau4 Non utilisé 4 Non utilisé 4 Non utilisé5 Multi user,réseau,Xwindow 5 Non utilisé 5 Multi user,réseau,Xwindow6 Arrêt et reboot 6 Arrêt et reboot 6 Arrêt et reboot. S Mono-utilisateur .

* Les distributions "Slackware" proposent encore une autre séquence...

b - Les scripts de démarrage/d'arrêt

Ce paragraphe n'a pas pour rôle de rentrer en détail sur le contenu des scripts (c'est le sujet d'un autre chapitre).

- A chaque étape du démarrage (runlevel) une série de scripts sont exécutés. Ces scripts sont placés dans les dossiers:

- /etc/rc0.d à /etc/rc6.d pour Debian, Mandriva, Redhat/Fedora,

- /etc/rc.d/rc0.d à /etc/rc.d/rc6.d pour Suse .

- On distingue alors des fichiers dont les noms commencent par K et d'autres par S:

- K signifie alors Kill (tuer, arrêter),- S signifie Start (démarrer),

Les scripts commençant par K arrêtent un service, S le démarre.

Administration Unix /Linux page 34/78

LoiselJP ©2010

Page 35: TP AdminLinux GnuLinux

- Les chiffres suivants définissent la priorité de démarrage/arrêt - K10XXX arrêtera le service XXX avant le service YYY en K20YYY .

Mise en place d'un script en démarrage

Plusieurs méthodes sont possibles pour l'ajout/suppression de script au démarrage.

- Les scripts est disponible dans le dossier /etc/init.d (suivant la distribution cela peut être: /etc/rc.d/init.d). Il suffit alors de placer un lien vers ce script suivant le besoin.

La méthode décrite ici est la méthode "manuelle" celle qui sera donc la plus prisée par les administrateurs.

Créer un script vide: "essai", ("vi /etc/init.d/essai" et quitter avec ":wq")

Créer un lien symbolique ("ln -s") du script vers le dossier de runlevel désiré:- Pour un démarrage:ln -s /etc/init.d/essai /etc/ rc3.d/S98essai

- Pour un arrêt:ln -s /etc/init.d/essai /etc/rc3.d/K98essai

La suppression du script se fait simplement en repérant le script dans le dossier runlevel puis en le supprimant ("rm script_a_supprimer").

c - Optimisation des systèmes: ne pas surcharger inutilement un serveur.

Le souci de chaque jour pour une société est l'optimisation de ses systèmes. L'interface graphique est l'un des soucis majeurs. La perte de mémoire peut être de quelques Mo à plusieurs centaines de Mo suivant l'interface graphique utilisée (Xfce, Xcfe, Gnome, KDE...).

* N'est-ce pas ce qui a été mis en avant avec "Microsoft 2008 server Core" en supprimant partiellement l'interface graphique?

Trouver la mémoire occupée par le système:- Depuis une console la commande "top" donne la mémoire en temps réel occupée,--

De nombreux serveurs sont installés désormais sans interface graphique, dans certains cas, l'option d'installation sans interface graphique n'est pas disponible, il faut alors indiquer dans inittab de ne pas charger cette interface:

Editer le fichier inittab,

Trouver la ligne fixant le runlevel par défaut, (id:X:initdefault:),

Modifier la ligne de manière à fixer le runlevel par défaut au démarrage Multi utilisateur, avec le réseau et sans interface graphique:

- init 3 pour Fedora, Mandriva,- init 2 pour Suse,

Administration Unix /Linux page 35/78

LoiselJP ©2010

Page 36: TP AdminLinux GnuLinux

- init 2 Debian est placé à 2 par défaut, ce qui pose l'obligation de supprimer les scripts gdm et/ou kdm pour ne pas lancer le serveur X (Xorg).

Redémarrer le poste avec la commande init,init 6

Dans certains cas, malgré ce passage en runlevel 2/3, l'interface graphique est lancée, c'est le cas de gdm ou kdm (Gnome Desktop manager, Kde Desktop Manager), il peut être alors nécessaire de supprimer manuellement le script de démarrage:

* Ne pas supprimer les scripts en rc4.d et rc5.d, ils peuvent encore s'avérer utiles!

Agir de même si S*kdm est existant,

Après l'éventuelle suppression de ces scripts perturbateurs, redémarrer avec "init 6".

Depuis le démarrage en mode console Multi utilisateur, avec réseau, se connecter en tapant le login et mot de passe.

Trouver la mémoire occupée par le système:- Depuis une console la commande "top" donne la mémoire en temps réel occupée,--

La commande "ps" associée au commutateur "-x" donnera la liste des processus en cours:- Visionner les processus en cours page par page:

Administration Unix /Linux page 36/78

LoiselJP ©2010

Page 37: TP AdminLinux GnuLinux

ps -x | more

Redémarrer l"interface graphique, procéder aux séquences d'initialisation suivantes: - init 3, init 4, init 5.- Dans le cas de Debian, le runlevel 4 n'étant pas utilisé, init 5 peut être lancé directement.

Gérer le démarrage/arrêt des services par ligne de commande

Il existe un programme update-rc.d qui place ou supprime automatiquement les services des runlevels.

Ajout d’un service au démarrage, avec les options par défaut :update-rc.d MonService defaults

(Ajout d’un service en modifiant sa priorité (ex : 90) :update-rc.d MonService defaults 90

(Suppression d’un service au démarrageupdate-rc.d -f MonService removeOu :update-rc.d MonService stop 0 1 2 3 4 5

(L'administration Linux a pour avantage d'être totalement contrôlable, l'administrateur veut ce contrôle, cette commande, bien pratique, reste peu utilisée.

Administration Unix /Linux page 37/78

LoiselJP ©2010

Page 38: TP AdminLinux GnuLinux

6 Planifier des tâches : CronUnix intègre un démon "crond" qui est chargé de planifier le lancement de tâches avec une périodicité réglables à la minute, l'heure et le jour.crond gère pour chaque utilisateur un fichier crontab, qui décrit la périodicité de lancement et les actions à lancer.

On trouve également des fichiers crontab utilisés pour la maintenance périodique de la machine (id=root) qui sont dans les répertoires /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthly et /etc/cron.weekly.

Consulter les information sur le format du fichier crontab : man 5 crontab

Éditer le fichier crontab par la commande crontab -evous êtes sous vi : taper i pour passer en mode insertion et entrer les lignes suivantes

SHELL=/bin/shMAILTO=root

# 0,5,10,15,20,25,30,35,40,45,50,55 * * * * root echo `date` >> /root/h

quitter vi en sauvegardant (:wq)

Quel est le résultat de ce fichier crontab ?

Visiter le fichier "/root/h" pour constater les modifications apportées au fichier crontab.

Administration Unix /Linux page 38/78

LoiselJP ©2010

Page 39: TP AdminLinux GnuLinux

7 SSHSSH est un moyen de connexion distante sécurisé et crypté (Secure SHell). La connexion s'effectue par échange automatique de clef cryptées.

Sur Redhat / Fedora, dans certains cas, par mesure de sécurité, le réseau n'est pas activé. L'installation de nouveau paquet peut nécessiter d'activer le service réseau.

Les paquets nécessaire pour utiliser SSH sont: ssh / openssh /openssh-server openssh-clients (il sont différents en fonction des distribution)Si ce n'est pas encore fait, les installer suivant la distribution:

1) urpmi openssh-server openssh-clients

2) rpm -i openssh-server openssh-clients

3) apt-get install ssh

4) ysat -i openssh

Sur Suse le démon sshd devra être lancé pour une utilisation distante Lancer sshd:/etc/init.d/sshd

SSH est un des moyens de contrôle à distance les plus utilisés, certains logiciels sous Microsoft Windows tels que Putty (freeware) permettent de faire l'interface entre les deux systèmes.

Les commandes en ligne sont les seules disponibles.

Administration Unix /Linux page 39/78

LoiselJP ©2010

Page 40: TP AdminLinux GnuLinux

Trouver l'adresse IP du poste:ifconfig

Se connecter sur l'adresse IP fournie en cours de séance:ssh ip_distante

Trouver le nom de la machine distante:uname -a

La taille de la mémoire du poste distant:

Les commandes les plus utilisées:

at - exécute une action à une heure définie, awk - langage de programmation pour traiter des fichiers, cat - liste le contenu d'un fichier, cd - changement de répertoire, chgrp - change un fichier de groupe, chmod - change les droits d'accès à un fichier, chown - changement de propriétaire d'un fichier, cp - copie de fichiers, cut - coupe une chaîne (surtout utilisé dans les scripts), date - affiche/modifie la date, df - affiche l'espace disponible, diff - affiche la différence entre 2 fichiers, du - indique l'espace disque utilisé, egrep - recherche dans un fichier, find - recherche de fichiers, ftp - transfert de fichiers, grep - recherche dans un fichier, history - liste des dernières commandes utilisées, kill - arrêter un process, sh ou ksh ou rsh - appel d'un shell (interpréteur de commandes), ln - crée un lien sur un fichier, lp ou lpr - redirection vers l'imprimante, lpstat - information sur les imprimantes, ls - liste des fichiers, mail; mailx - affiche et envoie des messages, man - commande aide sur une commande, mkdir - crée un dossier, more - affiche un fichier page à page, mv - déplace un fichier, passwd - changer le mot de passe, ps - listage des process, pwd - affiche le chemin du dossier en cours, rlogin user - changement d'utilisateur, rlogin -l user machine - connexion sur une autre machine, rm - détruit un fichier, rmdir - détruit un dossier, rsh -l user machine - exécute une commande sur une machine distante, rusers - liste les utilisateurs connectés au réseau, (Pas installée par défaut. A installer pour être utilisée)

Administration Unix /Linux page 40/78

LoiselJP ©2010

Page 41: TP AdminLinux GnuLinux

set - afficher les variables d'environnement, sh - appel du shell de base (Bourne shell sous Unix), sort - trie les ligne d'un fichier, tar - sauvegarde / compresse, tee - duplique un flux de données, telnet - connexion à un autre système, vi - éditeur système, w ou who ou whoami - liste les utilisateurs connectés au système, write - envoie un message à un utilisateur du système.

Administration Unix /Linux page 41/78

LoiselJP ©2010

Page 42: TP AdminLinux GnuLinux

8 La ligne de commande Shell

Certains administrateurs pensent à tort ou à raison, que l'emploi de l'interface graphique est inutile. Les choses sont probablement discutables.

Mais il reste une chose indiscutable: qui peut le plus peut le moins. L'administrateur sachant utiliser la ligne de commande ne sera pas perturbé par l'interface graphique. L'inverse est moins évident.

De plus en plus de serveurs sont directement installés sans interface graphique. Les distributions telles que Debian proposent ce type d'installation.

Les exercices précédents ont proposé de nombreuses commandes, dont un large rappel des commandes utiles avec SSH.

Sous linux tout est utilisable en ligne de commande. Plusieurs interpréteurs de commande sont disponibles: SH et Bash sont les plus utilisés:

Lister les différents shell. Cette commande le permet: chsh -l (commande vue durant l'étude des utilisateurs).

Dans ce chapitre, sans quitter le shell, quelques nouvelles commandes vont être apportées. Plusieurs nouveau paquets vont alors être installés ces paquets servirons lors des prochains exercices.

a - Installation de Webmin

Webmin est un logiciel permettant la gestion d'un poste Linux au travers d'une interface Web. Son utilisation sera vue ultérieurement.

Sous Debian

Pour installer Webmin des lignes devront être ajoutées à "/etc/apt/sources.list",- deb http://ftp.fr.debian.org/debian/ etch main - deb-src http://ftp.fr.debian.org/debian/ etch main- deb http://ftp.fr.debian.org/debian/ stable main contrib non-free - deb-src http://ftp.fr.debian.org/debian/ stable main contrib non-free

Mettre à jour apt-get ("apt-get update"),

Télécharger le paquet Webmin, dans le dossier /tmp ,cd /tmpwget http://heanet.dl.sourceforge.net/sourceforge/webadmin/webmin_1.510-2_all.deb

Installer les paquets nécessaires au fonctionnement de Webmin,apt-get install libnet-ssleay-perl libauthen-pam-perl libio-pty-perl libmd5-perl apt-show-versions

Installer webmin,

Administration Unix /Linux page 42/78

LoiselJP ©2010

Page 43: TP AdminLinux GnuLinux

dpkg -i webmin_1.510-2_all.deb

Il est possible (même courant) de rencontrer des erreurs lors d'installation suivre alors les indications:apt-get -f install

Sous RedHat / Fedora / Suse /Mandriva

Sur Redhat / Fedora, dans certains cas, par mesure de sécurité, le réseau n'est pas activé. L'installation de nouveau paquet peut nécessiter d'activer le service réseau.

Télécharger le Webmin, dans le dossier /tmp ,cd /tmpwget http://download.webmin.com/download/yum/webmin-1.510-1.noarch.rpm

Installer webmin,rpm -i webmin-1.510-1.noarch.rpm

Vérifier le fonctionnement de Webmin

Administration Unix /Linux page 43/78

LoiselJP ©2010

Page 44: TP AdminLinux GnuLinux

Il est possible que le chemin de connexion à Webmin soit http://adresse_ip:1000 ou encore http://localhost:10000

b - Installation du serveur http (Apache), de son serveur de page dynamique (PHP), du serveur de base de données Mysql et de son gestionnaire (PhpMyAdmin)

Installer le serveur http Apache (si ce n'est pas fait):apt-get install apache2 rmp -i apacheurpmi apacheyum install httpdyast -i apache2

Installer le serveur php - mysql:apt-get install php4 php5 mysql-common mysql-client mysql-serverurpmi php4 php5 mysql-common mysql-clientyast install php mysql

Installer PhpMyAdmin:apt-get install phpmyadmin

Administration Unix /Linux page 44/78

LoiselJP ©2010

Page 45: TP AdminLinux GnuLinux

La distribution telle que Suse n'est pas destinée pour une installation comme serveur mais comme poste de travail. Les administrateurs se dirigeront vers des distributions telles que Debian ou Redhat pour un cet emploi.Phpmyadmin bien qu'installable sur Mandriva ou Suse demande l'ajout de dépôts, téléchargements... ce qui dépasse un peu le sujet de ces exercices.

c - Un navigateur dans votre interpréteur de commande

Installer lynx:apt-get install lynx rmp -i lynxyast -i lynx...

Il peut être intéressant depuis l'interpréteur de commande d'accéder à une page web. Lynx est un navigateur en mode texte. Pour le tester:

lynx debian.fr

L'interpréteur de commande sh, bash ou tout autre shell paraît souvent de prime abord comme difficile à utiliser. Très vite, on constate que:- Seules quelques dizaines de commandes sont utilisées,- Les tâches, comme tout domaine d'administration sont souvent répétitives,- Les éditeur de texte sont nombreux (vi, joe, vim, ed, emacs...) mais l'utilisateur, une fois son choix effectué, se imite souvent à un seul. Il en est de même pour les autres programmes (dont l'interpréteur de commande) ce qui diminue très vite cette multitude de commandes,- Il est impossible de tout connaître, --help, -?, man... (qui sera abordé plus tard) sont là pour aider!

Administration Unix /Linux page 45/78

LoiselJP ©2010

Page 46: TP AdminLinux GnuLinux

9 Introduction au programme ShellUn "script shell" est un fichier texte simple.

Il peut donc être écrit avec tout éditeur de texte.

La toute première ligne du fichier doit contenir le nom de l'interpréteur à utiliser (cela est valable pour tous les langages de script). Cette ligne doit commencer par "#!" suivi de l'exécutable à utiliser. Pour un shell-script bash, on aura donc en début de fichier :

#!/bin/bash

Le script pourra donc commencer aussi par:

#!sh...

Ce fichier doit être exécutable. Pour cela on lui attribuera ces droits à l'aide de chmod. Si le fichier s'appelle mon_script, on peut le faire de cette manière :

chmod +x mon_script Pour plus de détails sur les options de chmod, utiliser "chmod --help" ou "man chmod".

a - Premier script

A présent, on peut dans ce fichier mettre des commandes shell ou appeler des programmes comme on le ferait dans une ligne de commande. Ensuite il sera invoqué en tapant son nom comme pour n'importe quel autre exécutable.

On peut insérer des commentaires dans un script. Ce sont des lignes qui seront ignorées par le bash. A partir d'un # tout le reste de la ligne est considéré comme un commentaire.

Se diriger dans /tmp,cd /tmp

Créer le script "mon_script",vi mon_script

#!/bin/bash

#Ceci est un commentaireecho Ceci est affiché#Un autre commentaireecho echo Ceci est aussi affiché #mais pas ce commentaire

Le rendre exécutable,chmod +x mon_script

Administration Unix /Linux page 46/78

LoiselJP ©2010

Page 47: TP AdminLinux GnuLinux

Exécuter le script,./mon_script

Un script se termine lorsque la dernière ligne a été exécutée. On peut toutefois forcer sa sortie avant en utilisant la commande exit. Le code de retour du script sera celui de la dernière commande exécutée. Cela à moins de préciser une valeur numérique à la suite de exit. C'est alors celle-ci qui sera renvoyée.

b - Exemples de scripts

Les script ne peuvent contenir que quelques caractères ("mon_script" par exemple), à plusieurs dizaines de milliers de caractères.

Le dossier /etc/init.d contient de nombreux scripts que qu'il est possible de consulter:ls -l /etc/init.d

Ouvrir quelques scripts:vi sudovi ssh...

c - Les variables spéciales

Lorsqu'un script shell est exécuté, bash initialise certaines variables particulières qui sont alors accessibles en lecture seule. C'est à dire qu'elles ne peuvent pas être directement modifiées par une affectation (on parle de constantes).

- La première prédéfinie est "$$" qui contient le PID du script. Ce Process ID, ou en français l'identifiant de processus, est un nombre qui à un moment donné identifie de manière unique une instance de programme en cours d'exécution sur le système. Cette valeur peut servir par exemple à générer un nom de fichier temporaire ou pour envoyer un signal.

- Ensuite on trouve "$?" dont la valeur va changer au fil de l'exécution du script. Il contiendra le code de retour de la dernière commande exécutée.

Un code de retour de 0 signifie qu'il n'y a eu aucune erreur. Si cette valeur est différente de 0, il s'agit d'un code d'erreur.

- La variable "$*" contient l'ensemble des valeurs passées en paramètre lors de l'exécution.- "$#" permet de connaître leur nombre.

Pour accéder à un paramètre en particulier, les variables positionnelles seront utilisées: $1, $2, $3, ... Pour celles après 9, il faut encadrer le nombre par des accolades : ${10}, ${11}, ${12}, ...

- La variable $0 contient le nom du script tel qu'il a été lancé, c'est-à-dire avec les spécifications de chemin éventuelles.

Se diriger dans /tmp

Créer le script "mon_script2"vi mon_script2

Administration Unix /Linux page 47/78

LoiselJP ©2010

Page 48: TP AdminLinux GnuLinux

#!/bin/bash

echo Ceci est le nom du script : $0echo Ceci est la ligne de parametres : $*echo Ceci est le parametre 1 : $1echo Ceci est le parametre 2 : $2

Le rendre exécutablechmod +x mon_script2

Exécuter le script en passant 2 paramètres en ligne de commande:./mon_script2 param1 param2

Résultat du script

d - Réaliser des tests

Pour réaliser un test sur des variables ou des fichiers, on utilisera comme instruction la commande intégrée test qui permet d'opérer des comparaisons.

Voici quelques opérations courantes:

La page de manuel du programme "test" ("man test") ou celle de bash apportera des informations complémentaires.

Quelques tests possibles :test -e /tmp/mon_script1 # /tmp/mon_script1 existetest "$VAR1" = "valeur" # La variable VAR contient la chaîne valeurtest "$VAR1" != "$VAR2" # Les 2 variables ont des contenus différentstest "$VAR1" -lt "3" # VAR contient un numérique inférieur à 3test -n "$VAR1" # VAR contient une chaîne de longueur non nulletest -z "$VAR1" # VAR contient une chaîne de longueur nulle

Créer le script suivant "mon_script3" (sans oublier « #!/bin/bash »)VAR1=$1VAR2=$2

if [ -z "$VAR1" ]thenEcho VideElseEcho Non videfi

echoif [ "$VAR1" = "$VAR2" ]thenEcho IdentiqueElseEcho Differentfi

Administration Unix /Linux page 48/78

LoiselJP ©2010

Page 49: TP AdminLinux GnuLinux

Exécuter le script en passant différentes valeurs comme paramètre (ne pas oublier « chmod +x mon_script3»):

./mon_script3 rien

./mon_script3 rien rien

./mon_script3 valeur rien

./mon_script3 3 4

....

Si on utilise des variables pour les expressions de test, il vaut mieux les mettre entre guillemets. Car dans le cas où ces variables ne seraient pas initialisées, un argument serait manquant. Alors que de cette manière, il y a une chaîne vide dans le pire des cas. Ceci est particulièrement utile avec les options -n et -z.

Si on essaye de faire une comparaison arithmétique avec une des valeurs qui ne serait pas un nombre, on obtient une erreur. La liste de ces opérations est : -eq (=), -ne (!=), -lt (<), -le (<=), -gt (>), -ge (>=). Entre parenthèses étant indiqués leurs équivalents mathématiques.

On peut demander à inverser le résultat du test en utilisant l'opérateur de négation ! (point d'exclamation). On peut aussi utiliser -a et -o pour respectivement avoir un ET et un OU logique entre plusieurs expressions. Voici un exemple :

test "$VAR" -lt 3 -o "$VAR" -ge 8

Celui-ci sera vérifié si VAR contient un numérique inférieur à 3 ou bien supérieur ou égal à 8.

Une version abrégée de test existe. Il suffit de remplacer son nom par [ et de mettre un ] à la fin de l'expression. Cela permet de mieux faire ressortir les tests. Sur d'anciens systèmes, [ était un lien symbolique vers l'exécutable test. A présent, les deux sont différents et sont intégrés au shell.

e - Les structures de contrôle

Dans les scripts, il est utile de faire des tests pour n'exécuter certaines parties que quand les conditions requises sont présentes. Cela se fait à l'aide de "if". Sa syntaxe est la suivante :

if instructionsthen #1er bloc d'instructionselse #2eme bloc d'instructionsfi

Juste après le if, on trouve un nombre quelconque d'instructions (pouvant être sur plusieurs lignes). Elles seront toutes exécutées jusqu'à ce qu'un "then" soit trouvé. Ensuite ce qui importera est le code de retour de la dernière instruction. Si la valeur est 0 (ce qui correspond à aucune erreur pour bash) le premier bloc d'instructions est alors exécuté. Dans le cas contraire, ce sera le second. Le "else" ("sinon") et le second bloc d'instructions sont facultatifs. Si le résultat est faux et que l'on n'a pas cette deuxième partie, rien ne sera fait. Le fi devra en tous les cas être présent pour indiquer la fin du bloc de test.

Dans ce genre de situation, la commande test sera très utile. Par exemple pour tester que la variable VAR contient la chaîne VALEUR (en version abrégée) :

Administration Unix /Linux page 49/78

LoiselJP ©2010

Page 50: TP AdminLinux GnuLinux

if [ "$VAR" = "VALEUR" ]then echo VAR contient bien VALEURelse echo VAR ne contient pas VALEURfi

Ce chapitre n'aborde que de très loin la création de scripts.La création de script peut relever du domaine de programmeur, car il existe de nombreuses commandes et fonction possible. En voici quelques exemples:La fonction case variante de if:case $variable in valeur1) #1er bloc d'instructions ;; valeur2) #2ème bloc d'instructions ;; valeur3) #3ème bloc d'instructions ;; *) #Traitement des autres valeurs ;;esac

La boucle While (pendant)while instructionsdo # Traitement à répéterdone

until instructionsdo # Traitement à répéterdone

La boucle Until (tant que, variante de while)until instructionsdo # Traitement à répéterdone

La boucle For (pour, variante de While)for variable in liste_de_valeursdo  # Traitement à répéterdone

for i in 1 2 3 4 5 6 7 8 9 10do  echo $idone

f - Fin de formation jour 2

(A réaliser suivant l'avancée dans le TP)

Administration Unix /Linux page 50/78

LoiselJP ©2010

Page 51: TP AdminLinux GnuLinux

Afficher une date personnalisée

* Sachant que « $(date +"%m") » donne le mois en cours,* Sachant que « $(date +"%d") » donne le jour en cours,* Sachant que « $(date +"%y") » donne l'année mois en cours,* Sachant que « $(date +"%M") » donne les minutes en cours,* Sachant que « $(date +"%H") » donne l'heure en cours,* Sachant que « $(date +"%S") » donne les secondes en cours,* Les données peuvent être combinées: « $(date +"%d-%m-%d") » donne la date au format , jj-mm-yyyy

(Ces informations sont à retenir, elles sont susceptibles de servir durant le chapitre sur les sauvegardes et sur la résolution de problèmes)

Créer un script d'accueil:

Qui donne pour résultat en fonction de l'heure:

ou

S'aider des exemples donnés dans les paragraphes précédents:Comparer les heures:- Pour le matin:test $(date +"%H") -lt 12

- Pour l'après midi:test "$VAR" -lt 12

Pour les plus avancés, il est possible de terminer cette seconde journée en complétant votre script d'accueil.- Le souci premier de l'administrateur est de connaître le nombre de fichiers placés sur le serveur, la l'occupation disque...- Compléter le script afin de personnaliser le message d'accueil suivant l'utilisateur connecté, avec l'affichage de ces données,- A l'aide d'Internet, effectuer les modifications du système afin de faire apparaître ce message lors de la connexion SSH (un fichier de configuration.... peut-être).

Administration Unix /Linux page 51/78

LoiselJP ©2010

Page 52: TP AdminLinux GnuLinux

10 Suivi des procéduresDe nombreuses sociétés utilisent aujourd'hui des procédures d'installation.

Le suivi de ces procédures permet la mise en place de configuration complexes sans que le technicien qui les applique ai un réel besoin d'en maîtriser tous les points, cela peut également concerner une harmonisation des installations (cas de fournisseur de services web, stockage...) ou encore un suivi de procédure en cas de panne.

Dans certains cas, une procédure peut atteindre plusieurs dizaines de pages.

Voici un exemple de procédure à appliquer:

Le contexteDans le cadre de l'amélioration des performances Internet du serveur en cours d'installation, un filtrage Internet est mis place.L'installation d'un serveur Squid (serveur proxy) avec un filtrage SquidGuard a été sélectionné.

La procédure à suivre: (La procédure ne concerne que la mise en place du squid et son système de rapport)

Installer le programme squid et ses dépendances (adapter à la distribution: apt-get install squid)

Copier le squid conf par défaut puis le modifier suivant la procédure :

La procédure pourrait se continuer de la sorte.... (à réaliser si le temps accordé à la manipulation le permet)

cp /etc/squid/squid.conf /etc/squid/squid.conf.defaultchmod 777 /var/spool/squidvi /etc/squid/squid.conf

Configurer le fichier squid.conf suivant ces lignes:Remplacer "le_nom_du_poste" suivant le nom du poste en cours Remplacer "acl LAN_SQUID src 192.168.0.0/16" suivant le masque indiqué

##### /etc/squid/squid.conf par Loisel JP #####http_port 3128cache_mem 30 MBhierarchy_stoplist cgi-bin ?acl QUERY urlpath_regex cgi-bin \?cache deny QUERYacl apache rep_header Server ^Apachebroken_vary_encoding allow apacheaccess_log /var/log/squid/access.log squidhosts_file /etc/hostsrefresh_pattern ^ftp: 1440 20% 10080refresh_pattern ^gopher: 1440 0% 1440refresh_pattern . 0 20% 4320acl all src 0.0.0.0/0.0.0.0acl manager proto cache_objectacl localhost src 127.0.0.1/255.255.255.255acl to_localhost dst 127.0.0.0/8acl SSL_ports port 443 # httpsacl SSL_ports port 563 # snewsacl SSL_ports port 873 # rsyncacl Safe_ports port 80 # httpacl Safe_ports port 21 # ftpacl Safe_ports port 443 # https

Administration Unix /Linux page 52/78

LoiselJP ©2010

Page 53: TP AdminLinux GnuLinux

acl Safe_ports port 70 # gopheracl Safe_ports port 210 # waisacl Safe_ports port 1025-65535 # unregistered portsacl Safe_ports port 280 # http-mgmtacl Safe_ports port 488 # gss-httpacl Safe_ports port 591 # filemakeracl Safe_ports port 777 # multiling httpacl Safe_ports port 631 # cupsacl Safe_ports port 873 # rsyncacl Safe_ports port 901 # SWATacl purge method PURGEacl CONNECT method CONNECTacl LAN_SQUID src 192.168.0.0/16http_access allow manager localhosthttp_access deny managerhttp_access allow purge localhosthttp_access deny purgehttp_access deny !Safe_portshttp_access deny CONNECT !SSL_portshttp_access allow localhosthttp_access allow LAN_SQUIDhttp_access deny allhttp_reply_access allow allicp_access allow allcache_effective_group proxycoredump_dir /var/spool/squid 10000 16 256cache_dir ufs /var/spool/squid 1024 256 256cache_mgr [email protected]_hostname le_nom_du_poste redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf#### END /etc/squid/squid.conf ####

Enregistrer / quitter

/usr/sbin/squid -zchown chown -R root.root /var/spool/squid

/usr/sbin/squid -z/usr/sbin/squid/etc/init.d/squid restart

Après modifications

/etc/init.d/squid restart

### Création du rapport squid########################

Php myadmin + rapport

apt-get install phpmyadmin mysql-server

Rotation des logs et installation de l'outil de rapport :

apt-get install sarg logrotate

Configuration de cron :

mkdir /etc/cron.minutely

Administration Unix /Linux page 53/78

LoiselJP ©2010

Page 54: TP AdminLinux GnuLinux

vi /etc/crontab

Ajouter

*/10 * * * * root cd / run-parts --report /etc/cron.minutrely

Enregistrer le fichier "/etc/crontab" puis créer le script "sarg"

vi /etc/cron.minutely/sarg

#!/bin/sh/usr/sbin/sarg-reports today

Créer un lien symbolique entre le rapport Sarg et /var/www/squid-report

Relancer SquidVérifier la génération du rapport toutes les 10 minutes dans /var/www/squid-report

Administration Unix /Linux page 54/78

LoiselJP ©2010

Page 55: TP AdminLinux GnuLinux

11 Rôle de l'administrateur / Tâches d'administration

Le rôle de l'administrateur est le même sous Linux que sous tout autre système d'exploitation.

On y retrouve, les fonctions liées à la sécurité:- Sécurité des informations, perte, vol, sauvegarde,- Entretien du serveur, mise à jour, adaptation de paquets,- Garantie des performances,- Résolution des problèmes et pannes,- ....

a - Pour cela il dispose:

- De moyens de connexion distante (SSH abordé précédemment avec le shell),

- D'outil d'administration comme Webmin, annuaire LDAP (tout comme Windows),

b - Webmin

Webmin permet de se connecter en protocole sécurisé (https) localement "https://localhost" ou à distance. La connexion utilise le port 10000 par défaut.

Se connecter sur Webmin en utilisant le compte root avec son mot de passe.

Administration Unix /Linux page 55/78

LoiselJP ©2010

Page 56: TP AdminLinux GnuLinux

Modifier la langue par défaut.

Généralement seul root est pris comme administrateur Webmin. Pour l'occasion, créer un groupe d'utilisateurs "Webmin":

Administration Unix /Linux page 56/78

LoiselJP ©2010

Page 57: TP AdminLinux GnuLinux

Convertir les utilisateurs en utilisateurs Webmin.

Ne garder que root et "utilisateur" comme utilisateurs de Webmin.

Administration Unix /Linux page 57/78

LoiselJP ©2010

Page 58: TP AdminLinux GnuLinux

Vérifier les droits accordés à "utilisateur":

Activer ou réactiver un service:

Activer ou réactiver kdm et/ou gdm:

Administration Unix /Linux page 58/78

LoiselJP ©2010

Page 59: TP AdminLinux GnuLinux

Vérifier la configuration du serveur:

Exécuter une commande:

Administration Unix /Linux page 59/78

LoiselJP ©2010

Page 60: TP AdminLinux GnuLinux

Prendre quelques minutes pour visiter les différentes possibilités (par exemple les tâches du cron)...

Administration Unix /Linux page 60/78

LoiselJP ©2010

Page 61: TP AdminLinux GnuLinux

12 Gestion des sauvegardesTout comme le rôle de l'administrateur vu précédemment et la gestion de la sécurité abordé au prochain paragraphe, le souci des sauvegardes est identique à celui rencontré sur les installations Microsoft.

On y trouve des solutions Raid, matériel ou logiciel, des solutions sur support externe...

a - Création d'un système de sauvegarde

Créer un dossier "sauvegardes" dans le dossier /home,

Créer un script effectuant une sauvegarde du dossier /home/utilisateur, cette sauvegarde portera le nom du jour (jj-mm-yyyy),

Placer ce script dans le dossier de sauvegarde créé puis, par un lien symbolique, le placer dans "/etc/cron/cron.daily" ("/etc/cron.daily" suivant la distribution),

La création d'un lien symbolique se fait avec la commande "ln" puis le commutateur "-s" pour le symbolique):ln -s /dossier_source/origine /autre_dossier/cible_du_lien

Modifier crontab de manière à ce que la sauvegarde se fasse chaque jour à 23h ,

Vérifier le fonctionnement de la sauvegarde en modifiant l'heure système (à remettre ensuite).

La commande "date ...." est utilisée pour modifier la date et l'heure du système.

Etudier la possibilité de supprimer les anciennes sauvegardes automatiquement par ce même script.

" test -f fichier" permet de tester l'existence d'un fichier.

Administration Unix /Linux page 61/78

LoiselJP ©2010

Page 62: TP AdminLinux GnuLinux

13 SécuritéLa sécurité sous Linux est identique à celle rencontrée sous Microsoft Windows. La problématique est donc la même.

a - Virus

Contrairement à ce qu'il en est pensé, Linux n'est pas exempt de virus, il est simplement moins attaqué!

Il existe donc des antivirus sous Linux.

Installer ClamAvapt-get install clamav

Le démon freshclam ("freshclam --help") permet la mise à jour de la base antivirale.

Installer le frontend ClamAv pour Kdeapt-get install klamav

Effectuer un scanne récursif des fichiers cd /clascan --recursive

Stopper le scanne en cours (pour les administrateurs toujours trop pressés):CTRL+C

b - Le pare-feu: IpTables

Linux dispose d'un pare feu système très puissant mais assez difficile à maîtriser. Un pare-feu mal configuré ne sert à rien. Dans la très grande majorité, les entreprises préfèrent donc faire appel au matériel pour s'acquitter de cette tâche.

Installer Firestarter pour gérer Iptables:

Administration Unix /Linux page 62/78

LoiselJP ©2010

Page 63: TP AdminLinux GnuLinux

Lancer Firestarter, vérifier l'autorisation d'utiliser SSH, ajouter au besoin l'autorisation pour Webmin (https sur le port 10000):

Administration Unix /Linux page 63/78

LoiselJP ©2010

Page 64: TP AdminLinux GnuLinux

L'utilisateur suffisamment avancé pourra découvrir "iptables" avec les commandes:man iptablesiptables -hiptable -L

c - Enfermer l'utilisateur dans un dossier: Chroot

Linux propose une option très intéressante: placer le dossier racine d'un logiciel à un emplacement

Administration Unix /Linux page 64/78

LoiselJP ©2010

Page 65: TP AdminLinux GnuLinux

particulier. Tout utilisateur distant ne pourra sortir de ce dossier.

Trouver les informations sur Chroot: "man chroot"

Installer Vsftp,

Définition de Vsftp (man vsftpd):

Trouver le fichier de configuration de Vsftp (man vsftpd):

Ouvrir le fichier de configuration et retrouver les différents paramètres.

listen=YESanonymous_enable=NOlocal_enable=YESwrite_enable=NOxferlog_file=YESftpd_banner=/home/ma_bannierechroot_local_user=yes

Vsftp propose même plusieurs niveau de Chroot:

chroot_list_enable=YESchroot_list_file=/etc/vsftpd.chroot_list

Administration Unix /Linux page 65/78

LoiselJP ©2010

Page 66: TP AdminLinux GnuLinux

14 Le programme MANEn début de document il a été précisé qu'une grande partie de la formation d'un administrateur Linux provient de l'autoformation. Les manuels sont alors d'une grande utilité.

Un aide succincte est obtenue avec la commande --help ou -h -?.... mais cette aide est souvent très réduite et ne répond qu'aux questions de base telles qu'argument de ligne de commande, forme de la commande.

La manuel du programme donne une information plus détaillée.La plupart des programmes possèdent leur manuel.

Obtenir des informations sur le programme man.

man man

Il n'est pas possible de tout connaître, il existe pour la plupart des distributions plus de 25000 paquets, avec plusieurs commandes et commutaeurs (voir dizaines de commandes) pour chaque programme. C'est le rôle des manuels que d'aider à se souvenir de toutes les formes de commande.

a - Trouver des informations

Le chapitre suivant propose de découvrir les serveurs LAMP. La lecture des manuels peut apporter des précisions sur les démons, fichiers de configuration, chemins...

Récupérer les informations sur le redémarrage d'un serveur Apache,man apache2

On y apprend que le processus ne se lance pas seul, qu'il ne devrait pas être lancé directement, on y trouve un chemin pour la documentation complète, on y découvre "apache2ctl" qui est le contrôleur d'interface.

Récupérer les informations sur la configuration d'un serveur Mysql:

Récupérer les informations sur PhpMyadmin:

Administration Unix /Linux page 66/78

LoiselJP ©2010

Page 67: TP AdminLinux GnuLinux

15 Introduction au serveur LAMP

a - Qu'est ce qu'un serveur LAMP

Les serveurs Linux Apache Mysql Php est la forme la plus répandue des serveurs Linux actuellement. On estime que 80% des serveurs mondiaux Internet sont sous Linux.

La distribution telle que Suse n'est pas destinée à une installation comme serveur mais comme poste de travail. Les administrateurs se dirigeront vers des distributions telle que Debian ou Redhat pour un tel emploi.Phpmyadmin bien qu'installable sur Mandriva ou Suse demande l'ajout de dépôts, téléchargements... ce qui dépasse un peu le sujet de ces exercices.

L'administration de serveur WEB est souvent considérée comme un métier à part entière. Il est nécessaire pour l'administrateur d'avoir des connaissances supplémentaires sur l'administration des bases de données et parfois même en programmation. Notamment pour la résolution de problèmes.

b - Le serveur LAMP

Le serveur a été installé au cours du chapitre 8 "La ligne de commande Shell", Démarrer le serveur si ce n'est fait (vérifier avec la commande "ps -x"):

/etc/init.d/httpd start

/etc/init.d/apache2 start

...

Lancer l'interface graphique puis le navigateur Web,"startx" ou "init 3,4,5"

Placer l'url du serveur dans la barre d'adresse:http://localhost

ouhttp://ip_de_serveur

ouhttp://nom_du serveur

Il fonctionne! (la page d'accueil du serveur pourra varier)

Trouver le dossier de stockage des pages (la méthode sera abordée lors du chapitre sur l'introduction aux serveurs Lamp): cd /var/www

Administration Unix /Linux page 67/78

LoiselJP ©2010

Page 68: TP AdminLinux GnuLinux

Sur la distribution Suse, le dossier par défaut est placé en /srv/www

Editer la page "index.html", Personnaliser la page.

c - Paramètre du serveur

Chaque paramètre de serveur, chaque serveur et chaque distribution sont différents. Le sujet ne peut être traité, donc, de manière générale.

Les quelques points suivants traitent de modifications diverses qu'il faudra alors extrapoler pour d'autres serveurs.

Trouver le fichier de configuration apache (man apache2), voici une méthode:find / -name *apache*.conf

Dans le fichier apache2.conf, trouver le dossier de travail par défaut:serverRoot = "/etc/apache2"

Observer le dossier par défaut puis trouver le chemin par défaut du site:cd /etc/apache2

Dans le cas de ce serveur, "sites-available" donnera les sites disponibles sur le serveur.Suivant les cas, le fichier httpd.conf peut contenir le chemin par défaut.

Trouver les fichiers d'apache2:whereis apache2

Administration Unix /Linux page 68/78

LoiselJP ©2010

Page 69: TP AdminLinux GnuLinux

Effectuer une recherche et trouver les fichiers de configuration httpd:find / -name *httpd*.conf

Remplacer l'original ("/etc/apache2/httpd.conf") par l'exemple par défaut:cp /usr/share/doc/apache2.2-common/examples/apache2/extra/httpd-default.conf /etc/apache2/httpd.conf

Après observation des paramètres:

Déplacer le dossier par défaut du serveur vers "/home/www", relancer le serveur http.

Sur le même serveur... dans "sites-available", modification du fichier "default".

Déplacer le dossier /var/www en /home/www:mv /var/www /home/www

Redémarrer le serveur:/etc/init.d/apache2 restart

Vérifier les chemins, données, éventuellement faire une modification sur le fichier

Administration Unix /Linux page 69/78

LoiselJP ©2010

Page 70: TP AdminLinux GnuLinux

index.html de base puis vérifier le bon fonctionnement du serveur dans sa nouvelle configuration.

d - Autres serveur

Linux propose d'autres serveurs:

- DHCP ("apt-get install dhcp3-server"),

- DNS ("apt-get install dhcp3-server"),

- FTP ("apt-get install ftp"),

- NFS ("apt-get install nfs-user-server"); partage de fichier entre système Linux,

- POSTFIX ("apt-get install postfix"); serveur de messagerie,

- SAMBA ("apt-get install samba"); partage de fichier, serveur de domaine Windows,

- TOMCAT ("apt-get install tomcat5.5"); serveur d'application J2ee,

- ... Ces serveurs sont gérables et configurables de diverses manières dont Webmin.

Administration Unix /Linux page 70/78

LoiselJP ©2010

Page 71: TP AdminLinux GnuLinux

Administration Unix /Linux page 71/78

LoiselJP ©2010

Page 72: TP AdminLinux GnuLinux

16 Résolution des problèmesSous Windows, l'administrateur n'a qu'une interaction très faible, les bugs sont corrigés par mise à jour. Même pour une utilisation totalement différente, un serveur Windows ressemble très fortement à un autre.

Dans le cas de Linux, c'est totalement différent, l'administrateur est libre de modifier tout ou partie des fichiers de son serveur, de supprimer tous les paquets qu'il juge inutiles. Les possibilités de configuration pour un même emploi sont presque infinies. Un serveur ne ressemblera pas à un autre serveur.

Toutes ces variantes rendent les problèmes tout aussi variés.

Rappel (c'est l'une des premières phrase de ce document) Une grande partie de la formation d'un administrateur système Unix vient de l'autoformation!

a - Les commandes utiles:

top - donne les processus en cours et leur utilisation,ps -x - donne la liste de processus,ls - liste les fichiers et dossier d'un dossier,ls -l - affiche les détails d'un dossier,cd - positionne le dossier de travail,pwd - donne le dossier en cours,df - donne l'utilisation d'un disque,chmod - change les droits sur un fichier pour un utilisateur,chroot - permet de changer le dossier racine de travail (très utile avec un "live cd"),ln - crée un lien,cp - copie,tar ou zip compresse/décompresse.

b - Utiliser l'aide

Man est l'outil indispensable connaître l'emploi d'une commande,L'aide --help, -? répond souvent aux questions d'ordre de commutateur,Ne pas oublier Internet...

"les mans linux en français"... pourquoi pas!

c - Cas concrets(ce sont des cas concrets réel rencontrés)

Administration Unix /Linux page 72/78

LoiselJP ©2010

Page 73: TP AdminLinux GnuLinux

c.1 Le contexte

- Une entreprise dispose d'un serveur Linux pour y stocker ses données sensibles,- Ses données ne représentent que quelques dizaines de Mo et sont stockées dans /home/sensible- Bien qu'elle dispose de disque en miroir, une sauvegarde régulière sur disque amovible est nécessaire. - Un script a été mis en place dans /etc/cron.minutly pour être exécuté toutes les 10 minutes. le fichier est un script shell appelé "sauvegarde".

- La sauvegarde ne s'effectue pas.

Le fichier:

Le contenu du crontab:

Quelles solutions proposer à ce problème?

Administration Unix /Linux page 73/78

LoiselJP ©2010

Page 74: TP AdminLinux GnuLinux

c.2 Le contexte

- Une entreprise dispose d'un serveur Linux de génération récente,- Cette société est spécialisée dans le stockage: elle stocke des dizaines de milliers de dossiers, qui contiennent eux même des milliers de fichiers,- Ce serveur est équipé d'un très gros disque (plusieurs dizaines de To),- Ce disque est sur un système de fichier "ext3",- Alors qu'un des clients de l'entreprise copie ces dossiers (quelques centaines de MO), un message survient: "maximum size in node". Quelle que soit les manipulations qui ont suivi sur ce serveur le même message apparaît, sans la possibilité d'ajouter de nouveaux fichiers.

Déterminer à quoi correspond cette erreur?

Quelles solutions proposer?

c.3 Le contexte

-Dans une entreprise fournissant des serveurs dédiés. Un client, a installé de nombreux programmes, il utilise très largement son serveur Squid (abordé au chapitre 10 "Suivi des procédures")....- Il demande qu'on lui fasse un peu de nettoyage.

Actions à mener:- Supprimer les fichiers temporaires,- Supprimer les caches (fichiers, installation, paquets devenus inutiles, Squid),- Réinitialiser les dossiers du serveur proxy,- Compresser les anciens logs, les supprimer ensuite.

Quelles sont les commandes?

Administration Unix /Linux page 74/78

LoiselJP ©2010

Page 75: TP AdminLinux GnuLinux

d - Fin de formation jour 3

(A réaliser suivant l'avancée dans le TP)

Pour les plus avancés, il est possible de terminer cette dernière journée avec ce cas de figure:

- Le poste installé au cours de cette formation est destiné a être utilisé comme serveur de données,- L'interface graphique est devenue inutile,- Les partitions n'ont plus une taille adaptée, la taille peut varier dans l'avenir suivant l'utilisation du poste.

Actions à mener:- Supprimer les différents bureaux installés pour une utilisation exclusivement en mode texte, - Installer LVM (LVM2),- Modifier la taille des partitions, à la volée, avec LVM, afin d'optimiser la taille donnée au dossier "/home".

Administration Unix /Linux page 75/78

LoiselJP ©2010

Page 76: TP AdminLinux GnuLinux

17 Conclusion

a - Continuer à découvrir LinuxL'application des exercices de ce document nécessite l'installation d'un poste et, donc, de disposer de place pour le mettre en oeuvre. C'est le sujet du chapitre suivant.

Mais pour continuer à découvrir Linux, il est possible d'utiliser des "live CD".

Avec un fonctionnement correct et une fluidité plus qu'honorable pour ce type de support, ce sont des CDrom bootables sur lesquels se trouvent une version exécutable directement depuis le CDrom. Le principe de fonctionnement de ce type de CDrom est simple à expliquer mais serait hors propos.

Il existe de nombreuses versions de Live CD. La plus connue et la plus populaire est Knoppix (http://www.knoppix.org/) elle présente sur un CDrom, par un jeu compression, plus de 1,4 go de programmes ce qui permet de découvrir le système.

Kaella (http://kaella.linux-azur.org/) est une version francisée de Knoppix. Mais presque toutes les distribution sont disponibles en version live, on trouvera donc facilement une version d'OpenSuse, Mandriva, Ubuntu...

b - Comment mettre en oeuvre ou appliquer les exercices précédents?Il n'est pas évident de devoir réinstaller son poste avec une autre version logicielle à chaque nouvel essai.

La solution virtuelle est un moyen très pratique pour faire des essais avant de se lancer en grandeur réelle.

Quelques exemples de virtualisation:

- Vmware propose une solution gratuite et performante (Vmware server 2.X),

- VirtualBox plus léger et abordable, cependant il propose moins de possibilités et d'outils,

- VirtualPC de Microsoft propose également une solution simple d'emploi.

Administration Unix /Linux page 76/78

LoiselJP ©2010

Page 77: TP AdminLinux GnuLinux

c - Appliquer, ré-appliquer et pratiquerAucune formation ne sert si elle n'est pas ré-appliquée et pratiquée.

Combien existe-il de commandes Linux sur un système simple (système de base)?

Taper la touche "Tab" à l'invite de commande pour voir combien de commandes il existe:

__________________________________________________

# init 0

Administration Unix /Linux page 77/78

LoiselJP ©2010

Page 78: TP AdminLinux GnuLinux

©PropriétéAdministration Unix /Linux

Jean Paul Loisel

56 Rue Philippe de Girard

59160 Lomme

[email protected]

06 99 15 99 00

LicenceCe document est distribué en "Public Documentation License".

The contents of this Documentation are subject to the Public Documentation License. You may only use this Documentation if you comply with the terms of this License.

A copy of the License is available at this mail [email protected].

The Original Documentation is "TP: Installation d'un serveur GNU/Linux Administration Linux de base".

The Initial Writer of the Original Documentation is Jean Paul LOISEL © 2010. All Rights Reserved.

Contributor(s): ______________________________________.

Portions created by ______ are Copyright ©_________[Insert year(s)]. All Rights Reserved.

(Contributor contact(s):________________[Insert hyperlink/alias]).

The text of this chapter may differ slightly from the text of the notices in the

files of the Original Documentation.

You should use the text of this chapter rather than the text found in the Original Documentation for Your Modifications.

Administration Unix /Linux page 78/78

LoiselJP ©2010