administration LINUX
Table of Contents
- historique
- le noyau linux
- distributions
- rpm (Redhat Package manager)
- la documentation
- gestion logicielle
- la séquence de boot
- les services
- le tcp-wrapper
- les consoles
- les logs
- le cron
- les outils d'administrations
- réparation
but = faire un clone Unix pour architecture Intel x86
- Sco : commercial, cher, incomplet, peu répandu
- Tannenbaum -> minix : didactique (étudiants), incomplet , sous licence,
développement lent
- Linus Torwald : développement via internet par des bénévoles,
sous licence ouverte (G.P.L.), à partir du code de minix au départ
(maintenant tout a été réécrit)
quelques dates :
- 1991 : version 0.01
- 1998 : des articles apparaissent dans les magazines informatiques
- 1999 : le boom, surtout en entreprise
rem : la licence General Public Licence (très différent d'un
freeware), lancée par la Free Software Fondation (Stallman), pour
les produits GNU (gcc, emacs, ghostview, etc.)
- droit d'accès au code source
- droit de modification et de redistribution (avec ou sans modification)
- transmission de la licence
remarques :
- au sens propre linux == un noyau Unix (monolithique + modules) , sans plus,
pour le reste (éditeur compilateur, etc. ): voir les distributions
(portage des produits GNU)
- noyau très stable maintenant
- évolution très rapide
la numérotation :
elle est du type x.y.z
la version majeure (1er chiffre ) change TRÈS TRÈS rarement
la version mineure (2ème chiffre) change rarement (une fois
tous les 1 / 2 ans ?)
de plus, il y a 2 "lignées" de noyaux :
- les versions paires sont stables (2.0.x, actuel 2.2.14 , bientôt
2.4)
- les versions impaires sont ... de développement (donc instables)
: 2.1.x, actuel 2.3.99
le "sublevel" (3ème chiffre) change change plusieurs fois par an,
et représente les modifications et patchs mineurs
il y a de plus des patch officiels (agréés par Linus)
et non officiels, chaque distribution faisant ce qu'elle veut
conseils :
- toujours installer une version stable
- suivre l'évolution des noyaux : correction de bug et des failles de sécurité
- ne pas trop bidouiller le noyau : les distributions fournissent des versions
testées
- installer une version optimisée pour son processeur (586, 686),
sinon ne pas hésiter à recompiler pour gagner en performances
administration
- comment mettre à jour : voir gestion logicielle
- recompiler le noyau : idem
/proc
process information pseudo-filesystem : accès read/write au
structures internes du noyau qui tourne :
on peut modifier comportement sans rebooter
packages
- kernel : le noyau deja compile
- kernel-header : les include nécessaires pour pouvoir compiler du C
- kernel-source : les sources du noyau
- kernel-doc : de la doc pour comprendre/modifier le noyau
définition
linux == le noyau
distribution == tout le reste (shell, compilateurs, éditeurs,
outils, jeux, etc. )
l'offre
il y en a beaucoup : plusieurs centaines, pas compatibles en général
(arborescences), mais un effort d'homogénéisation est en cours.
on peut distinguer trois grands types de distributions
- non commerciales (les plus anciennes) : par exemple la Debian . souvent
très stables, mais évolution lente (bénévolat)
- commerciales : les plus connues maintenant. Exemple : Redhat, Mandale,
S'use, etc.
- mini distributions ou distributions spécialisées : tout un
Unix sur une disquette , exemple : mulinux , tomsrtbt
une idée du marché actuel (cf. lwn.net) : chargement des
images ISO de distributions en Avril 2000 :
Redhat
31% (sortie de la 6.2)
Mandrake 29%
(sortie 7.x)
Corel
22% (sortie 1.0)
Debian
5%
Caldera
4%
FreeBSD
3%
SuSE
3%
Slackware
2%
Stormix
1%
Yellow Dog Linux 1%
gestion par package :
la plupart des "grands" Unix (Sun, HP) se sont mis a la gestion de package
qui simplifie grandement l'administration des machines,
les distributions linux aussi, avec 2 grandes familles de produits
- Debian (.deb)
- rpm (Redhat, Suse, Mandrake , etc.)
conseils pour un choix de distribution
mon choix
type d'installation
il y a en gros 4 solutions :
- les distributions fournies dans les magazines : je les déconseille
car elles sont souvent incomplètes, bugguées, voire en bêta
sans le dire (Mandrake)
- installation via le réseau : bien si on a un accès internet
performant. Pour info, même à la météo, j'ai
déjà eu des problèmes sur un miroir français
(jussieu)
- rapatrier une image ISO, la graver sur un cdrom, et installer depuis ce
cdrom
- acheter la distribution auprès de l'importateur ( 500 F maximum
environ), par exemple sur : keops
rem : outil développé sous licence G.P.L. et adopté
par la plupart des distributions maintenant
permet la gestion de "packages", c'est à dire programmes, documentation,
fichiers de configuration
- installation ( --upgrade -U )
- mise à jour ( --freshen -F)
- desinstallation (--erase -e )
- interrogation (--query -q )
- vérification du contenu par rapport à la base ( --verify -V )
- vérification de cryptage ( --checksig -K )
- construction de package ( -b )
avantages
- gestion propre et simple des packages
- gestion des dépendances entre packages
- packages sources ou binaires
- sauvegarde des fichiers de configuration (.rpmorig ou .rpmsave)
inconvénients
- diffusion des rpm incomplète et retardée par rapport aux
tar.gz
- version binaires non optimisées pour les machines récentes
(i386 fourni en général)
- gestion délicate des retour arrière (conserver ou re-fabriquer
le fichier rpm "ancien" avant l'upgrade)
- problèmes si mélange de tar.gz et de rpm (les dépendances
ne sont cherchées que dans la base, pas sur le disque)
Mais il est possible de fabriquer relativement simplement un fichier
rpm à partir d'un tar.gz, avec le programme autospec par exemple,
pour conserver une base à jour
documentation
man rpm pour la documentation complète, sinon rpm pour la liste
des arguments
exemples d'utilisation courante :
rpm -qf fichier : pour savoir à quel package appartient le
fichier
rpm -qi package : description du package
rpm -ql package : liste des fichiers du package
rpm -qpi package.rpm : description et liste de fichiers contenu
dans le fichier package.rpm
rpm -qa | grep -i kernel : recherche de tous les package dont
le nom contient "kernel"
(pour les commandes suivantes, il faut etre root))
rpm -Uvh package : installer le package
rpm -Fvh package : mettre a jour le package s'il existe
rpm -e package : desintaller le package
remarques
- les options --nodeps et --force sont TRES fortement
déconseillées : il vaut mieux régler le problème sous-jacent
- les options d'interrogations sont vraiment très puissantes (voir le man)
- le logiciel mc (Midnight Commander) permet de visualiser le contenu des fichiers rpm (tout comme les tar, gz et autres fichiers compressés)
comme tous les produits sous GPL, la documentation est très abondante
locale :
- info/man ou mieux pinfo commande
- /usr/doc/package : par package
- /usr/doc/HOWTO : par thèmes
- linux systeme administration guide (lag)
- network administration guide (nag)
- linux Installation and Getting started (install-guide)
internet :
- Linux Documentation Project : http://www.linuxdoc.org
- linux security administration guide
- le guide du routard : spécialement fait pour les administrateurs
linux : http://www.linux-france.org/article/grl/Guide_Rootard.html
remarque :
La communauté linux est reconnue pour la qualité de
son support technique via internet (meilleur support technique 1998 au
USA).
libc
tous les programmes livrés sous linux (ou presque) sont codés
en C, donc les exécutables sont linkés avec la libc
il faut savoir qu'il y a plusieurs versions de la libc, bien évidemment
incompatibles
- libc5 : ancienne version, obsolète, utilisée dans les versions
4.x / 5.x de Redhat : à ne plus utiliser
- libc6 ou glibc : nouvelle version, avec les versions 6.x de RedHat
les "distributions" Redhat
on trouve sur les sites miroirs de Redhat:
- la distribution courante
- les updates : mises à jour officielles de Redhat
- les powertools : compléments de la distribution de base
- les rawhide : versions bêtas (de tests) de packages de Redhat : pour usager averti
- les contrib : contributions == packages fournis sans contrôle de Redhat : pour usager averti
update "automatique":
le logiciel autorpm permet
d'informer des nouveautés (mode manuel) ou de mettre à jour
(mode automatique) sa machine par rapport aux sites miroirs de Redhat
(on peut rajouter d'autres sites / d'autres produits )
recherche de logiciels sur le web
mettre a jour un logiciel
toujours faire un rpm -K logiciel.rpm pour vérifier la bonne
source du produit (signature de cryptage : gpg, MD5)
rpm -Fvh logiciel.rpm pour upgrader
si il y a des dépendances, mettre l'ensemble des fichiers rpm sur la
ligne de commande
installer un nouveau noyau
doc : kernel-HOWTO
méthode :
- installer le nouveau noyau par rpm -ivh (surtout pas en update)
- créer une disquette de boot de secours ,des fois que : mkbootdisk
- ajouter les lignes qui vont bien dans /etc/lilo.conf
(recopier une image existante, modifier les lignes image et label)
- prendre en compte les modifs : lilo -v
compiler un nouveau noyau
doc : kernel-HOWTO, /usr/src/linux/README
pourquoi :
- optimiser pour son processeur
- adapter le noyau a son utilisation (ajout/suppression de modules)
méthode :
- cd /usr/src/linux/ : pour se positionner sur le répertoire
de travail
- modifier le paramètre EXTRAVERSION du Makefile pour fabriquer
une version différente de la version courante
- make mrproper (nettoyage)
- make menuconfig (ou xconfig) pour modifier le paramétrage
du noyau
- make dep
- make bzImage
- make modules
- make modules_install
- copier l'image /usr/src/linux/arch/i386/boot/bzImage sur /boot/vmlinuz-version
- cd /usr/src/linux/
- cp System.map /boot/System.map-version
- enfin reprendre comme pour installer un nouveau noyau (lilo)
bios -> MBR -> boot loader -> noyau -> init -> fsck -> services
les niveaux d'exécution : cf. /etc/inittab
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do
not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
en pratique : en usage courant, sur un serveur, on utilise le niveau
3, sur un poste client le niveau 5
pour certaines taches d'administration, on passe en niveau 1 (init 1 ou
au boot options single à lilo)
arrêter / démarrer un service :
rem : standard unix (HPUX, Solaris)
les scripts sont sur /etc/rc.d/init.d
avec des liens sur les répertoires de chaque niveau /etc/rc.d/rcx.d
les scripts qui commencent par K (kill) sont d'abord lancés
pour arrêter le service correspondant
les scripts qui commencent par S (start) sont ensuite lances pour démarrer
les services (ordre alphabétique)
configurer un service :
chkconfig
but : contrôler de façon homogène l'accès aux démons
doc : man hosts_access
config : hosts.allow hosts.deny inetd.conf
principe : les demandes sont trappées par le daemon inetd
, qui vérifie les droits d'accès puis lance le démon désire (ftpd, ipopd
...)
celui disparaît une fois le service termine
rem : il y a donc 2 façons de démarrer un démons
- en le déclarant comme un service (voir ci-dessus) : en permanence en
machine
- via les tcp-wrappers : contrôle d'accès + chargement uniquement
à la demande
remarque : ne pas confondre avec pam, qui contrôle les autorisations
(password)
quel que soit le niveau d'exécution, on dispose de plusieurs consoles virtuelles
en mode texte (par défaut 6),
on passe de l'une à l'autre par la séquence ALT+CONTROLE+F1
F2 ... F6
si l'on a lancé une session graphique (niveau 5 ou via la commande
startx),
la console graphique prends le numéro 7
sous /var/log, écrits en général par syslog
- messages : le fourre-tout général
- maillog : sendmail, procmail et autres
- secure : les connexions
- cron : la liste des taches lancées
ménage
le package logrotate assure la rotation et l'effacement des log selon les critères désirés (delai, taille ...)
le package tmpwatch permet d'effacer des fichiers temporaires sur un critère de d'ancienneté
astuce
pour pouvoir "consulter" les log sans se connecter, rajouter dans le fichier
/etc/syslog.conf les lignes :
# renvoyer tout sur la console virtuelle 9
*.*
/dev/tty9
ca peut être très utile, en cas de crash, ou de grosse charge machine
(difficile de se connecter alors sans tomber en time-out), pour savoir
ce qui se passe (ou s'est passé)
il y a sous /etc des répertoires spécifiques pour
les taches d'administration classiques
- horaires : /etc/cron.hourly
- journalières : /etc/cron.daily
- hebdomadaires : /etc/cron.weekly
- mensuelles : /etc/cron.monthly
locaux
- linuxconf (texte)
- control-panel (motif, résidu des version 5.x)
- useradd/userdel
- mailq
- top, ifconfig et les commandes classiques
- vi :)
à distance
via une interface web :
- webmin (port 10000)
- linuxconf (port 98)
après un crash, et si le redémarrage est impossible, il y
a plusieurs solutions :
- si c'est un problème de boot-loader :
utiliser la disquette générée avec mkbootdisk
pour booter, puis relancer lilo
- pour un problème de fichiers endommagés (exemple /etc/passwd)
: booter en single user
- pour un problème de système de fichier (fsck défectueux après une
coupure brutale par exemple) : il faut redémarrer sur un autre support,
afin de pouvoir faire le fsck sur le disque non monté, pour cela
plusieurs solutions :
- booter sur la disquette d'une mini-distribution (exemple tomsrbt), faire
attention à avoir les mêmes version de noyau
- cd d'installation + linux rescue. attention, cette méthode, quoique
conseillée ne marche pas directement en rh6.2 : il faut créer
les device auxquels on veut accéder : exemple mknod /dev/hda b 3 0; fdisk
-l /dev/hda; puis mknod /dev/hda2 b 3 2; e2fsck /dev/hda2
Eric Gerbier
2009-10-13
documentation sous licence GNU Free Documentation License